Cyrus developers,

Right now, the policy on what goes in master is "when a committer thinks it's 
ready for master, it goes in master." This hasn't been a serious problem, but 
we can do better. What I'd like to do is have feature branches live longer *as* 
branches, and then be merged when we think they're done. This will make it 
easier to declare that a feature is really in Cyrus (even if it's only in a 
3.${odd} release), and to produce builds with features turned off and on. It 
will also make it easy to drop an experiment without scouring history much. 
Finally, it should make code review better, as it can be part of the "can we 
merge this?" process and when it happens, the whole feature changeset can be 
seen at once.

There isn't much actual policy change to talk about. Something like this:

> Changes to Cyrus are made in branches. Branches aren't merged until the 
> feature seems plausibly done. When a feature is still undergoing testing, 
> it's left in a branch. Pull requests are opened on GitHub, and before the 
> branch is merged, code review is completed by another committer to the one 
> who wrote the change. Branches should, whenever practical, be rebased before 
> merging. Trivial bugfixes and changes to documentation may be applied 
> directly to master, but when in doubt, favor making a branch!

This will go somewhere in our "Contribute code and tests" section, but right 
now there seems to be no discussion of policy after the creation of a PR.

At present, Fastmail tends to run very close to master, and we're often testing 
features before they're in a state we'd consider mergeable under this policy. 
To make it easy to build a Cyrus that includes all the latest bugfixes and 
approved experimental branches, we built a tool to merge all the pull requests 
we've flagged for inclusion <https://github.com/fastmail/mint-tag>. You might 
also find this tool useful for building your own test Cyruses.

-- 
rjbs

Reply via email to