Re: Last gasp - Mailing list pgsql-hackers

From Robert Haas
Subject Re: Last gasp
Date
Msg-id CA+Tgmoa4Y4BqF05tZv7+mKT7Ztzu2Y8s==oPYEAnvUPkR-f1gQ@mail.gmail.com
Whole thread Raw
In response to Re: Last gasp  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On Sat, Apr 7, 2012 at 5:20 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> I wonder whether we ought to have a preset schedule for last fests
> just like the others.

It's always been my feeling that we should have that.

> There's too much temptation to commit
> patches that are not really ready, just to get them out of the way.

This is something I'm really concerned about.  During both the 9.0 and
9.1 cycle, we did some of this, and ended up paying for it with months
of bug fixing - not of *everything* that was committed late in the
cycle, but of certain particular patches.  We ended up producing
quality releases anyway, but I think if we had pushed it much farther
than we did, that might not have happened, or it might have pushed the
release out quite a bit more.  I think we have to be careful not to
set the bar for big patches unreasonably high (or big features will
never get done) but I honestly do not believe we have that problem.
Which recent release did not end up with its share of big features?
People like Jeff Davis, KaiGai Kohei, and myself who submitted their
major work (or the preparatory refactorings) relatively early in this
release cycle had no real trouble getting commits.  It is the patches
that showed up in November, December, and January that ended up on the
skids.  On the flip side, we do have a problem with looming deadlines
causing a lot of pressure to push stuff in that isn't ready.  There
were a number of times this CommitFest when someone said, hey, I'm
going to push X, and I said... uh, let me drop what I'm doing and take
a look at that, because it doesn't sound ready to me.  Some of those
commits happened anyway and others didn't, but all of them seemed like
the outgrowth of time pressure rather than real certainty that we were
in a good place.

> In short, the idea of strongly calendar-driven releases looks more
> and more attractive to me the more times we go through this process.
> If your patch isn't ready on date X, then it's not getting into this
> release; but there'll be another bus coming along before long.
> Stretching out release cycles to get in those last few neat features
> just increases the pressure for more of the same, because people don't
> know how long it will be to the next release.

Well, the other side of the coin is that the next release will
probably be in a little over a year, and that's longer than people
want to wait even if it's a known quantity.  But I'm not sure there's
much we can do about that, unless we want to cut the cycle from four
CommitFests to three, or something like that.  I think I'd actually be
in favor of that, because it seems to me that nearly every feature
anyone wants can be gotten done in two CommitFests.  There are a few
exceptions, like sepgsql and SSI and (now) command triggers, but it's
not like we have tons of developers who start in CF1 and just barely
get their work in by CF4.  What happens more often is that the early
CommitFests are kind of dead, and then there's a huge flood of stuff
for the last one because, hey, there's gonna be a release soon, I
should do something for it!  We might find that if we did 3-CF cycles
rather than 4-CF cycles we got the same number of features about two
months sooner.

Or we might not find that.  But it's not clear that cutting off a
CommitFest would have hurt this release much, or that adding another
one would have helped much.  Adding one *now* might help, because some
of the big patches that were submitted at the beginning might then
make it in, but if we'd had all of this extra time budgeted in from
the beginning (e.g. last CommitFest planned for March 1st instead of
January 15th) I think a decent number of the submissions would have
just come that much later.  Love may be the strongest human emotion,
but procrastination has got to be in the top five.

The only thing I can really see helping us to avoid the crush of last
minute patches is to have strong, clear, and vigorously enforced rules
about rejecting major features that are not submitted early enough, or
that are not in good enough shape when submitted.  As you said in your
reply to Peter, making exceptions because features are "important" is
not helpful.  My features are important, too, but I get them done
early.  Granted, not everyone has as much work time to work on
community PostgreSQL as I do, but it's simply impossible to believe
that everyone's schedule suddenly clears up in the first half of
January every year.  If there's something magic about that half-month
then we've chosen a poor timing for our final CommitFest, but my
theory is that we'd have the same problem no matter when we did it.
If we start aggressively booting things early, then we don't have to
have arguments at the end.  But then again, we'd have to have the
arguments earlier.  I continue to think that there's no real solution
here if people are bound on claiming that the feature they
particularly like ought to be excepted from the deadlines that apply
to everyone else.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Last gasp
Next
From: Robert Haas
Date:
Subject: Re: Last gasp