This is somewhat orthogonal to Bill's current suggestion. It solves a different set of problems, more related to the short-term features-versus-regressions argument and less related to the long-term ABI arguments. Both are important to me, and I agree with many pieces of what both Jim and Bill are saying.

(This is a combination of a bunch of different ideas from different people, on this list and off, so thank you all for discussing.)

== Proposal ==

We branch off from the 2.4.25 tag. This is our low-risk 2.4.25.x patch line. There are no new features or large code changes to this branch, there are no refactorings or whitespace changes or huge cleanups; the only changes that land here are targeted bug fixes to 2.4.25.

2.4.25.x is on a cadence: it's T&R'd like clockwork every month. Releases from that line still follow the necessary voting procedure. Meanwhile, once we decide we have enough new features for 2.4.26, we T&R that. If 2.4.26 releases, and we decide we need some fixes, we spin up a 2.4.26.x branch and move to a cadence on it.

Requirements for a backport to the new low-risk 2.4.25.x branch:
- Your change must have landed in 2.4.x.
- Your change must be linked to a PR for a bug/regression.
- Your change is the smallest/simplest fix necessary (for some definition of small/simple that your fellow voters agree with). - You must have a test (or set of tests) committed to the test suite that proves this change fixes the bug. (I.e. it fails before the change and succeeds afterwards.)

Three votes are still required, and the commits to the test suite are part of the voting review. If you can convince three other people that a test is not worth the effort, you can override this requirement with an additional vote (four total).

== Why? ==

The even-versus-odd, features-versus-regression idea seemed to have some traction, but it means that fixes block features during an even release and, to a certain extent, vice-versa during an odd release.

In this proposal, you have to really be serious about a bug fix to get it into the patch line -- a double backport plus a mandatory addition to the test suite -- but you're rewarded by knowing that your change *will* be T&R'd within the month. And the next feature release won't be blocked on fixes.

It gives us some emergency flexibility too. God forbid, say the 2.4.26 release introduces some absolute mayhem, we're deadlocked on some breaking change or massive argument, users don't want to move to 2.4.26 and things are going nowhere fast for 2.4.27. Fine. 2.4.25.x is still alive as long as there are enough PMC members interested in releasing from it; the cadence only ends when we decide it does. The downside is that we then have two parallel "latest" versions for 2.4.x, but if you can convince three PMC members that this situation is better than being frozen, so be it.

End users and maintainers should eventually feel, once we work out the kinks, that the risk of upgrading to 2.4.x.y is never more than the risk of upgrading to 2.4.x was. We should feel like our releases are never frozen, even if we disagree about some major new feature -- we can always fix stuff for users while we argue. The test suite will grow as long as patch lines are released. And if it gets good enough, some day far in the future, patch lines will become less and less necessary.

Thoughts?

--Jacob

Reply via email to