CVS access policy, branching/tagging, code review, etc.
Jim Gettys
release-wranglers@freedesktop.org
Tue, 02 Mar 2004 15:54:38 -0500
I don't consider my own experience in dealing with CVS based
release cycles enough to have much opinion to add to this
discussion.
I do, for future thought, want to point out the policies
that Mozilla uses. I don't think they necessarily apply to
our circumstances at the moment, but when we succeed in forming
a much larger developer community, we may want to consider somewhat
similar policies, at least in parts of the overall tree.
See:
http://www.mozilla.org/hacking/reviewers.html
At least some of the rules and tips section should immediately be
useful.
- Jim
On Tue, 2004-03-02 at 13:44, Egbert Eich wrote:
> Keith Packard writes:
> >
> > I'd like someone to review a couple of sample patches before granting
> > commit access; that way we can check that the general coding conventions
> > are being followed; that's hard to check any other way.
>
> That's even stricter than my proposal. I'd just expect a rough idea
> on what the person has planned to do. Code review may be good as
> it gives an indication if the person who asks for access is sufficiently
> 'sane' to grant him access. People who write decend code generally know
> what they do. Others may screw up the cvs as they screw up coding.
>
> >
> > > - what the official do's and dont's are in the tree
> >
> > There will probably be a lot of these, here's some suggestions:
> >
> > * Do new scary work on a branch
> >
> > * But, integrate scary work into HEAD with #ifdefs to avoid divergence
> >
> > * Announce release schedules and limit HEAD changes after feature
> > freeze. Permit branch changes.
>
> When the feature freeze is in effect the release version should
> probably be branched off.
>
> >
> > * After RC1, limit HEAD changes to fixes for major bugs.
> >
> > * Separate code cleanup from functional changes. Mark cleanup
> > patches clearly. For major cleanups, get peer review before
> > committing.
>
> There has been the suggestion to generate a bugzilla entry for every
> commit and limit the commit to a single issue. This requires a lot
> of discipline however it helps to track down problems even after
> a long time.
>
> >
> > * Get Bonsai and Tinderbox working together; require commits that
> > break the build to be fixed or get backed out within a short time
> > frame (~days, not ~weeks)
> >
> > * Don't commit huge changes and then go on vacation (see above).
> >
> > * Tag and release on a regular basis.
> >
> > > - what happens if someone commits something non-trivial without
> > > proper code review, which others believe should not have been
> > > committed, or which horribly breaks the tree, etc.
> >
> > * Any changes for HEAD which don't have rough concensus should be reviewed > and voted on. I don't know who should vote. I don't know if the
> > vote should be a simple majority, or if we should require rough
> > concensus and a czar that accepts or rejects the patch. If a
> > change is committed to HEAD which generates more heat than light, it
> > should be reverted until the issue is resolved.
>
> I don't think a majority principle here is appropriate.
> A rough consensus among the people who are involved in similar
> areas should suffice. One could turn it around: if there is no
> strong objection it can go in. If there is it should be discussed.
>
> >
> > * Any changes to HEAD which break the build should be reverted unless
> > fixed in a timely fashion
> >
> > * Changes to HEAD which generate negative rough concensus should be
> > reverted by the committer and discussed.
>
> It's preferrable to do it the other way around: get positive consensus
> before things are merged into head.
>
> >
> > * Changes to branches are pretty much anything goes, unless they
> > conflict with the law or PSU policy (i.e. don't append MP3s
> > to CVS files).
>
> Creation of directories should not happen without giving this some
> thought. It may have negative side effects on other things.
>
> >
> > > - A specific guideline for the naming of CVS tags, branches, etc.
> >
> > always tricky. For development branches, I'd like to see them tagged with
> > userids of the person doing the branch along with a date in ISO standard
> > format (yyyy-mm-dd). An additional tag indicating the scope of the work
> > might be nice. So, perhaps
> >
> > keithp-2004-03-02-hacking-damage
> >
> > Using dates without dashes makes them really hard to read for some of us.
> > Mixing hyphens and underscores makes them prone to typos.
>
> I don't see the benefit of dates and names. Certainly project names
> should have precedence. They are not necessarily attached to a single
> person but to a group of people.
> If someone needs a 'personal branch' to play around this should
> be one branch per person. There is generally no need to branch off
> every time somebody starts something new.
>
> >
> > I don't know whether such branches should also be tagged with the base
> > revision number, I'm thinking that that won't be necessary.
> >
> > For tags along the main branch that indicate release points, let's follow
> > a pretty simple convention. I suggest that there are two kinds of tags,
> > there are 'module' releases and 'product' releases, and 'products' are a
> > collection of 'modules'. When releasing a 'module', tag with
> >
> > modulename-major.minor.revision
> >
> > Similarly, when releasing a product, tag with
> >
> > productname-major.minor.revision
> >
> > Tags along a branch should be prefixed by the branch name. yes, this will
> > make them rather long. I hope that will encourage people to get branches
> > merged back to head more often.
> >
> > > - What type of checkins are permitted into particular branches
> >
> > I'd like to see most 'mainline' development occur right on HEAD; otherwise
> > one spends a lot of time merging stuff back. Unlike DRI, I don't see a
> > huge number of module interface changes which would require careful
> > coordination, so I don't want to force people to make branches just to fix
> > minor bugs or implement minor new functionality.
>
> I'd prefer if
> a. not everyone is allowed to work in HEAD right away.
> b. work at central pieces in the HEAD is limited to minor
> changes and bug fixes.
>
> > However, I see the release process as three phases:
> >
> > 1) liquid
> >
> > Add code to HEAD as long as it is has rough concensus to be
> > "good".
> >
> > Speculative code, or
> >
> > 2) slush
> >
> > Add code to HEAD as long as it addresses planned release features
> > or bug fixes.
> >
> > 3) ice
> >
> > Add code to HEAD as long as it fixes major bugs.
> >
> > > - What happens if someone consistently violates the accepted
> > > written or defacto policies and shows disregard for the
> > > established guidelines repeatedly.
> >
> > Failure to roughly follow the policy should result in probationary access
> > to the tree where patches would be reviewed by another committer before
> > being applied. This would last for a while (two weeks?) and for a number
> > of patches (3?). No mechanical enforcement of this should be needed, but
> > violation of probation should result in revocation of CVS access.
>
> Do you think strict procedures like these are necessary?
> Peer pressure should solve much of this. Only people who are
> immune to peer pressure will get their access revoked.
>
> >
> > Note that CVS access is completely separate from freedesktop.org account
> > access; we haven't established a policy for that and perhaps it is time to
> > consider doing so. About the only thing that would cause people to lose
> > their fd.o accounts is illegal or obviously inappropriate activities
> > involving the fd.o machine or the PSU network.
> >
> > > - What types of fixes/checkins are considered ok to do without
> > > review (and on which branches, and during what phases of
> > > development).
> >
> > On branches, anything goes. Merging branches back to HEAD should follow
> > the review requirements as if the merge was one giant commit.
> >
> > On HEAD, no review is required for:
> >
> > 1) Bug fixes that are "obvious to a skilled practitioner"
> >
> > 2) Changes previously agreed upon. I'd like to see this in the form
> > of a mail message laying out the scope of the work, large changes
> > should be documented in the wiki and referenced from the message.
> > Lack of dispute should be taken as concensus.
>
> Right.
>
> >
> > > - What types of changes ALWAYS require review either via bugzilla
> > > filing or email list posting and having one or more people
> > > "ACK" (acknowledge) the fix is acceptable for the tree, or
> > > "NACK" it indicating it is unacceptable, and providing a reason
> > > why.
> >
> > 1) Bug fixes which are non-obvious, especially in really stale code.
> >
> > 2) ABI/API changes.
>
> These should also require documentation.
>
> >
> > 3) Changes which don't generate rough concensus when they zip by.
> >
> > > - What types of changes are good ideas, or worth exploration in
> > > the future, but are not acceptable changes for the current
> > > goals of releasing a stable release as soon as possible, such
> > > as Phase2/Phase3 type of work, source code beautification,
> > > lindent, etc.
> >
> > The monolithic tree should be considered to already be 'ice', and
> > receiving only major bug fixes.
> >
>
> Egbert.
>
> _______________________________________________
> Release-wranglers mailing list
> Release-wranglers@freedesktop.org
> http://freedesktop.org/mailman/listinfo/release-wranglers
--
Jim Gettys <Jim.Gettys@hp.com>
HP Labs, Cambridge Research Laboratory