On Mon, 2007-10-01 at 06:05 -0700, Joe wrote:
> > I'll pause for a moment here and step out of responding as a Django
> > user, and step into responding as Django's release manager: the answer
> > is "when it's ready". If you have a foolproof way of figuring out when
> > that will be, you should stop writing code and start making millions
> > of dollars selling your secret to businesses which develop software.
> 
> In the business world, we set goals and track our progress to them.
> In the act of tracking our goals, we learn lessons that improve our
> development processes and increase our productivity.  Django's team
> can do the same.  Set a goal, even if it is "Let's shoot to make the
> trunk stable on 10/10 so we can tag the code."

Guess what? It works that way in the Open Source world, too. Django
isn't unusual in the way it works. Currently our goal is "work to get
all the features on the VersionOneFeatures wiki page done", plus
incorporating new stuff that we learn needs to be incorporated along the
way. The fact that our goal isn't time-based isn't in any way
revolutionary -- lots of corporate projects are run on similar lines. If
you want to set a deadline just to hear the sound of it whooshing by,
this isn't the place for that.

Nobody working on a major project wants to just run along with no point
to their work and that's not how we operate. There is, however, a
difference of perspective needed: we are targeting particular features
at the moment, rather than a moment in time. This is more productive at
this point simply because of the nature of the features and the time we
have available.

> > "It's done when it's done" is all I can give you. "It's done even
> > though it's not" wouldn't make any sense, and neither would automatic
> > releases; I'll take quality over quantity any day of the week, and
> > "released later, but finished" over "released now, but doesn't work".
> 
> And this is the biggest disconnect between Django's team and the
> business world.  If I went to my bosses and told them "It's done when
> it's done" about our upcoming product releases, I would get fired.
> Your response should be, "It's really hard to estimate, but here is my
> best guess and a target for us to shoot for."  And, you know what?
> Most of the time our estimates are pretty close.  And by tracking how
> we do on our estimates, we can make them even more accurate.

Come on! :-) Your analogy is a little strained. If your bosses said "I
want everybody to commit to these deadlines, but you're all going to do
it whilst working as volunteers and in between your other commitments
and some of you will wander off due to lost interest or life requiring a
change or priorities", you wouldn't be surprised to find time goals much
harder to meet. Trying not to bring up the "firing" word in this
context. It's too much of a stretch.

It's fairly clear to me from reading this thread that a few people are
trying desperately to match up commercial software development with open
source development. No problems there; there's generally a very large
overlap and almost everything on the technical level carries across. On
the managerial level, things are a bit different, though. Firstly, you
can make this easier by not assuming Django is different from almost any
other open source project out there. Every project that is currently in
a successful time-based release process had a period when they were
feature based to get to a certain base point. Django is still in that
preliminary phase. We may or may not move to time-based releases later
on -- that hasn't been discussed and there are certainly valid arguments
on both sides, so it isn't a no-brainer. Every large project that
manages to set a line on the calendar and hit it has ended up having
people working on it full time. Look at how GNOME 2.0 got released. Look
at how Apache 2.0 got released. Look at the preliminary and ongoing Perl
6 work. In all of those cases, it was not done entirely by volunteers
and it still was very, very difficult to timetable except in the last
few months prior to a release. That's both a pro and a con about open
source development: predicting timetables is hard because of the nature
of the contributions.

Don't get sucked into expecting a total match with operating practices
in the commercial world in that respect: in exchange for you being
somewhat beholden to your employer's wishes, they *employ* you.

[...]
> > Generally, the Django team works to keep trunk as stable as possible;
> 
> If this is true, what is the disadvantage to tagging a release every
> couple of months?  It would provide a serious benefit to those of us
> who have to deal with corporate red tape.

One disadvantage from that kind of model is security: we would either
have to keep security fixes up to date for a much larger number of
releases or EOL releases much faster, which is also a not insignificant
downside in the corporate world.

Another is credibility and QA: either you have to have periodic freezes
prior to these snapshots to stabilise things, bring translations up to
date, etc, or else they mean nothing. In the latter case, it isn't
benefiting anybody because you could just create a snapshot yourself to
satisfy the Red Tape Department (want to make a 20071001 release? Tar up
a checkout from today and you're done!).

Seriously, guys, these sorts of threads aren't new. They've come up
before in Django and regularly make appearances in other projects. They
also don't tend to be particularly productive except as a way for people
to let off steam. There isn't a serious contributor on this list who
isn't aware of how things work in the corporate world. For most of us,
that's where we work. Teaching us how to suck eggs isn't really needed.
A lot of people on this list and particularly on django-dev also all
pretty experienced in the open source world and give a lot of time and
resources to that arena. Bagging our decisions -- which unsurprisingly
aren't made based on a whim -- doesn't help anybody; you or us.

Juggling the corporate image is very much one aspect of managing an open
source project and we (channelling all the maintainers for a moment) are
certainly not unsympathetic to that side of things. In the past we have
made decisions that are real compromises purely on the grounds that it
will work better on the business front. However, it is only one aspect.
You aren't describing any thoughts that haven't gone through lots of
minds in the past and whilst I can appreciate that frustrations build up
as time goes by, I would ask that you try to understand the flip side
and spend a bit of time looking at how analogous projects are working.

We are all focused on getting to 1.0 as quickly as possible. We've
chosen to be feature-based at the moment. In full awareness that that
will not be a perfect match for everybody's requirements. Time-based
release processes wouldn't be a perfect match either. It's all about
compromise. That's why we did 0.96 before launching into a bunch of
backwards-incompatible changes, for example. It's why we released 0.95
when we did, too. We're trying to keep most people as happy as we're
able to, whilst maintaining a reasonably steady course towards a very
significant milestone.

Your voices are being heard and the same has always been true.

Best wishes,
Malcolm


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to