
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 development. Regards, Martin