yearly release cycle

Ken Murchison murch at fastmail.com
Fri Dec 13 10:12:34 EST 2019


This all seems reasonable to me and I'm in favor of moving forward with 
this plan.


On 12/13/19 9:59 AM, Ricardo Signes wrote:
>
> Hey, remember last month when I asked about releasing Cyrus v3.2 
> <https://lists.andrew.cmu.edu/pipermail/cyrus-devel/2019-November/004509.html>?
>
> That thread had some more conversation about what needs to get done 
> before v3.2, and I wanted to come back to it and turn some things on 
> their head.
>
> Right now, we’re talking about Cyrus releases being feature-bound. 
> “We’ll release v3.2 when feature X is done.” I think we’re not being 
> well-served by that. As feature X is delayed (for various reasons that 
> we can’t easily eliminate), it doesn’t just delay the feature, but 
> also all the other minor bugfixes and optimizations that we’ve made in 
> the master branch. Also, it sets up the idea that we delay releases 
> for the sake of fixes, instead of releasing the fixes that are ready.
>
> That is: every additional criteria for a new release is another 
> doorway to delay. Instead of opening those doors, I would rather try 
> to eliminate all of them.
>
> I propose that instead of tying releases to milestones, we tie them to 
> the calendar. For the sake of full disclosure: I am modeling this 
> suggestion on the release cycle of perl 
> <https://metacpan.org/pod/perlpolicy>, which I ran for several years. 
> I found the process more than satisfactory, then.
>
> 1.
>
>     A new /unstable release/ of Cyrus is made every month. We promise
>     only that it compiled and passed the Cassandane test suite on the
>     release manager’s computer. It might contain regressions from
>     previous unstable releases, it might have crashers or corruptors.
>     We try to avoid any of these, but the goal here is a snapshot for
>     easy month-to-month testing. These are the odd-middle-digit
>     releases. (3.3.x)
>
> 2.
>
>     A new /major release/ of Cyrus is made every year. We will have
>     tested it on as many configurations as we can readily test. We
>     will have, some time before the release, frozen the branch for
>     risky changes, to reduce churn. In the meantime, new work lives in
>     feature branches. (The changelogs from each unstable release
>     provide a good basis for the whole-year changelog!) These are the
>     even-middle-digit third-digit-zero releases. (3.4.0)
>
> 3.
>
>     A new /maintenance release/ of Cyrus is made for the last two
>     stable releases when there are enough fixes to critical bugs to
>     warrant it. These are the even-middle-digit third-digit-nonzero
>     releases (3.4.1)
>
> For the above to work, some more properties need to be maintained.
>
> Maintenance releases should be no-brainers to install, so they must 
> only fix regressions, crashers, security vulnerabilities, and the 
> like. This means that once you’re on 3.4.0, you can always upgrade 
> within the 3.4 series with a minimum risk. It also means you get no 
> optimizations, features, and the like.
>
> Major releases must clearly document any incompatible changes or 
> upgrade steps required. Because non-regression bugfixes aren’t 
> backported, we want everyone to be able to upgrade from major release 
> to major release, so incompatible changes must be kept to a minimum.
>
> In part, this is just “don’t kill off a feature people use just 
> because it’s a little annoying.” The more important one is “don’t 
> introduce half-baked things that might need to change,” because people 
> will come to rely on them before you get the updates finished. For 
> features that will require multiple years to get right, they have to 
> go behind a default-off configuration option. I’d strongly suggest 
> they all have a uniform substring like “unstable”. That way, when a 
> complaint comes in that the behavior of JMAP calendaring has changed, 
> we can reply, “well, to use it, you had to turn on the 
> unstable_jmap_calendaring” option.
>
> If we go with this policy, we’ll need to…
>
> 1.
>
>     identify what issues are /blockers/ to v3.2.0, meaning they’re
>     regressions from v3.0 and would reasonably prevent someone from
>     upgrading; this does /not/ include all known bugs, since they may
>     be bugs that already exist in the last stable release!
>
> 2.
>
>     pick a release target for v3.2.0; I will arbitrarily suggest March
>     2 as “not too far off, but far off enough that we can get things
>     in order”; also, if you’re American, March 2 is 3/2 ;-)
>
> 3.
>
>     produce a changleog, and especially identify what changes in
>     master need documentation as “incompatible changes”
>
> 4.
>
>     produce a list of changes in master that should be put behind an
>     unstable configuration option and then do it
>
> 5.
>
>     decide when to stop merging non-release-related things to master
>
> 6.
>
>     make a plan for who will do monthly snapshot releases
>
> I’ve spoken with ellie and Bron about just a few of these, such that I 
> don’t think it’s all crazy. (ellie notes, correctly, I think, that the 
> first set of releases like this will be the hard ones, where we work 
> out things like “how do we keep track of incompatibilities, upgrade 
> steps, and also how do we make snapshots dead easy to release.”) If 
> there’s general agreement, I am definitely ready to pitch in and help 
> try to make it work!
>
>> rjbs
>
>
-- 
Ken Murchison
Cyrus Development Team
Fastmail US LLC

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.andrew.cmu.edu/pipermail/cyrus-devel/attachments/20191213/eb8a5c74/attachment-0001.html>


More information about the Cyrus-devel mailing list