On 4/18/07, Daniel Brandt <[EMAIL PROTECTED]> wrote: > Something has been bugging me for a while..
This type of complaint seems to come up every few months. I'm always tempted to ignore it because I have a hard time responding in a way that doesn't end up making me sound like a dick; usually that temptation wins out. I'm gonna give an answer a try this time. I'll try as hard as I can to not be a jerk -- that's totally not my intention -- but if I fail I hope you'll forgive me. I completely feel your pain, by the way. I only maintain one open source project, but I use literally hundreds. I've filed tickets and bugs against many other projects, and as you might expect the results run the gamut from "fuck you"[1] to being checked in instantly. So I understand the temptation to try to drum up more forward motion in any way possible. Thing is, despite being cathartic, these "why hasn't my bug been fixed?" emails really don't accomplish anything. Like the vast majority open-source projects, Django is 100% volunteer-driven. Every single bit of work is done by somebody in his or her spare time. We all have some combination of full-time jobs, wives, families and hobbies competing for our time. Obviously spending time on mailing lists is Yet Another Time Suck. I know this isn't your intention, but when I see an email like yours I feel like I'm being reprimanded for having a real life. I suspect most other developers feel the same way. I think it's very easy to underestimate the amount of work required in checking in a patch. It seems like a simple handful-of-lines patch like yours should be a no-brainer, but there's a whole bunch of steps I (or any other bug fixer) has to go through before we can check a fix in: 1. Read through the patch -- every single line -- to make sure it matches our coding standards, doesn't contain obvious errors or types, doesn't change a stable API, etc. 2. Asses the impact of the patch on the rest of the system. There are often subtle or unseen consequences of even simple patches. To use yours as an example: if applied, the locmem cache would now use picking instead of simple object reference to store cached objects. This (a) means the patch will slow down the performance and (b) will cause any code relying on the ability of locmem to cache unpickleable objects. Obviously those aren't deal-breakers, but I have to look for things like that. Even a one-line patch can cause ripples throughout the codebase, and they have to be considered before the patch is checked in 3. Look for any related bugs in the tracker, and assess how this fix might affect them. There can often be a handful of related bugs that all need to fixed as one. 4. Proofread any associated documentation, or possibly write some if the patch doesn't include it. 5. Check that the patch includes tests and that the tests indeed cover the new code paths introduced. 6. Apply the patch. 7. Run the regression tests against every supported version of Python with every database backend available. 8. Finally, check the patch in. I'm not complaining about this! I find checking in patches to be the **best** part of working on Django, but it's a major time-suck. If I can't set aside at least an hour to look at bugs, I likely just won't get anything done. And adding new developers to a project is *hard*. We want to be completely sure that we trust someone before giving them commit access. Sure, we could switch to a model like PHP where anyone with a patch gets commit access, but then we'd risk turning out like, well, PHP. Finally: this is open source. Nothing prevents you from modifying your code in any way you want; you don't need my permission or the checkin of your patch in order to use it. Once again I'm very sorry if any of the above comes off as dickish. I really do feel your pain, and I wish more than anything that I could spend more time on Django (while still being able to pay the mortgage). Working in open source at any level can require almost saintlike patience. Jacob [1] No prizes for guessing which project this was. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-developers?hl=en -~----------~----~----~----~------~----~------~--~---