Re: Releasing in September - Mailing list pgsql-hackers

From Noah Misch
Subject Re: Releasing in September
Date
Msg-id 20160125145108.GA3773850@tornado.leadboat.com
Whole thread Raw
In response to Re: Releasing in September  (Peter Geoghegan <pg@heroku.com>)
Responses Re: Releasing in September
List pgsql-hackers
On Wed, Jan 20, 2016 at 01:59:59PM -0800, Peter Geoghegan wrote:
> I think that we've learned some lessons from the problems with 9.3. I
> don't think that one of those lessons was "take more time to release".
> There is reason to doubt that that would have changed matters one bit
> with 9.3. It might be a good idea to formally state what those lessons
> are.

Hindsight of 9.3 taught me to monitor three additional[1] signals for every
commit.  Each is weak individually, firing often on harmless commits.
However, if commit 0ac5ad5 landed again today, I would at least prioritize
further analysis based on all three signals being present:


1. Patch came together shortly before a deadline.

The tree sees a bunch of feature commits just before feature freeze.  This
list sees many fresh patch versions just before the last CommitFest submission
deadline.  For an important subset, time pressure led the author or committer
to reduce vigilance.  This is an analog signal, and I write "came together" to
be deliberately vague.  The more the various steps of development work
(design, implementation, review, commit) cluster near some deadline, the more
to worry.


2. Committer disclaimed knowledge of the patch's correctness.

From commit 0ac5ad5 procedural history:
> Tom Lane said at one point "this is too complex to maintain".  Several
> times during the development I feared he might well be right.  I am sure
> he will be discovering many oversights and poor design choices, when
> gets around to reviewing the code; hopefully some extra effort will be
> all that's needed to make the whole thing work sanely and not eat
> anyone's data.  I just hope that nothing so serious comes up that the
> patch will need to be reverted completely.

Author/committer personality is a large factor in determining whether this
signal arrives.  If I do see it, I now believe the author about the patch
being dangerous.


3. Committer == author and no other committer certified the patch.

By "certify", I mean a direct statement like "This patch is correct." or "This
feature is now bug-free." etc.  Posting a review does not, by itself, qualify,
and reviewers regularly do enough to earn a co-author credit without having
certified any version of the patch.  Being listed as the patch's git
author/committer _does_ imply certification.

This signal is common, particularly for smaller patches, and it ought to
remain common.  The product would advance slowly if every contrib module or
vacuumdb flag took full attention from two committers.  Every release has a
few patches that do deserve this level of attention, though, and they rarely
attract it.  Index-only scans did; commit a2822fb had a non-author committer
despite an author having a commit bit.  Committers should recognize particular
self-authored work as too grave to self-certify, submit it for review, and not
commit it until and unless another committer certifies it.  Indeed, I regard
that recognition of one's own limits as the central qualification for being a
committer.  I have failed at it myself, though.


Watching those signals is the lesson I took from the PostgreSQL 9.3 aftermath.

Thanks,
nm

[1] They joined older signals, some too laborious to measure for every commit:
- complexity of the area(s) patched
- plausible scope of breakage from defects, given the area(s) patched
- gravity of follow-on repair commits



pgsql-hackers by date:

Previous
From: Craig Ringer
Date:
Subject: Re: WIP: Failover Slots
Next
From: Andreas Karlsson
Date:
Subject: Re: Improved tab completion for FDW DDL