[Python-Dev] Becoming a python contributor

Martin v. Loewis martin@v.loewis.de
01 Nov 2002 08:56:14 +0100

Gustavo Niemeyer <niemeyer@conectiva.com> writes:

> At the same time, I've seen Guido and others bothered a few times
> because of the lack of man power. So the question is: how do I, a
> developer which feels capable of helping in python's development, can
> get some of the tasks which take your time out of your hands? Or even,
> how is it possible to improve some part of the development process by
> giving people like me some instructions? 

To me, the most important aspect I'd like to hand off is the review of
patches; to Tim, it is the analysis of bug reports.

There is an ever-growing backlog of both of these (atleast for
patches, we are in the state where just less than 100 are pending, so
it's not that badly growing).

It is clearly unsatisfying for submitters of both patches and bug
reports if they don't hear anything. While some of these issues are
tricky and require expertise not everybody might have, I'd still like
to see more people getting involved with that.

For reviewing of patches, I'd suggest the following guidelines:

- start with the oldest patches, and work forward to the more recent
  ones (the most recent ones are regularly checked by several people,
  and applied or rejected if a quick decision is possible - but
  some of these slip through)

- for each patch, try to find out if it
  a) is present (if not, post a notice saying that the upload is missing),
  b) applies to the Python source code cleanly (if not, either update the
     patch yourself, or request that the submitter does that),
  c) does what it says it does (no detailed analysis necessary yet)
     (if it is not clear what the patch does, or how it does that,
      request clarification);
  d) is appropriate for inclusion, by comparison to other features
     that are already in Python (if not, ask submitter for a rationale
     why this patch should be included, pointing out your objections),
  e) has undesirable side effects (if yes, ask the submitter for
     an evaluation why these side effects are acceptable),
  f) is complete (new features need documentation, bug fixes need 
     regression test cases if possible),
  g) is correct: try compiling it to see whether it works, try to come
     up with boundary cases to see whether it still works, inspect
     it to see if you find any flaws...

- if you find problems with the patch, post a note asking for
  correction.  If you find there is already a note and the submitter
  hasn't acted for quite some time (10% of the entire life of the
  patch on SF), set a deadline at which time it will be rejected.
  If there is already a commentary from the submitter, re-perform the
  entire analysis.

- If you find that you are not qualified to review the patch, still
  try to perform as many steps as you can. Don't hesitate to ask the
  submitter to explain things to you that you don't understand.

- If you complete evaluation, propose rejection or acceptance. From
  time to time, post a list of patches that you think we should act
  upon. If I find your analysis convincing, I'll execute the proposed
  action quickly.

For bug reports, a similar procedure applies. Check:
- if the bug report is reproducable,
- whether this is a bug at all, or perhaps a misunderstanding on the
  part of the submitter, and the documentation clearly says otherwise,
- if there is a patch included, analyse the patch,
- if there is no patch, but you can see how the bug would be fixed,
  ask the submitter (politely) whether he would like to write a patch,
- see whether you can write a patch yourself.

If you can't create a patch, dealing with a bug report might be
tricky. If you can see a solution, but can't work on it, post your
analysis into the bug report. If you think the bug is unfixable,
explain this as well. If fixing the bug requires expertise that you
know has, ask the submitter of who might have this expertise
(especially when it comes to strange systems).

> Also, isn't it easy to point out what's wrong in a commit from
> someone who is following the development process for a while than
> taking the time to review its code in the sourceforge patch system?

I'm not sure what you are proposing here? That all patches are just
applied, and then backed-out if incorrect?

While this may be appropriate sometimes, I think it would cause to
many disturbances. It happens from time to time that people reading
python-checkins find problems by inspection. More often, they find
problems some time afterwards, because of unexpected side effects.
This is a good thing, and it is possible only because the patches had
been reviewed carefully on SF.

> My feeling is that the Python development is currently overly
> centralized, and that you might be suffering from that now, by being
> unable to handover some of your tasks to someone else.

I agree with your first observation, but disagree with the second:
there are plenty of tasks that could be handed over. There are just no
volunteers to perform these tasks.

> I feel that everytime I send a patch, besides being contributing,
> I'm also overloading you with more stuff to review and comment and
> etc. Perhaps the fallback costs for some wrong commit is too high
> now (did I heard someone mentioning subversion?)?!

It's not that. Patches *must* be reviewed, or else they would be just
incomplete: people might commit the patch, but fail to commit the
documentation. Then, for a couple of years, there would be no
documentation. Likewise for test cases. That the patch works is alone
not good enough.

It is time-consuming to produce high-quality software. However, that
should not alone be a reason to give up the high standards of Python