CVS access policy, branching/tagging, code review, etc.
Keith Packard
release-wranglers@freedesktop.org
Tue, 02 Mar 2004 10:00:18 -0800
--==_Exmh_-1592244130P
Content-Type: text/plain; charset=us-ascii
Around 1 o'clock on Mar 2, "Mike A. Harris" wrote:
Here are some ideas for discussion...
> - Does one gain CVS write access to the repository, who needs to
> be contacted, what steps need to happen before access is
> granted (if any), who decides, etc.
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.
> - 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.
* 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.
* 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.
* 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.
* 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).
> - 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 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.
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.
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.
> - 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.
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.
Flame away.
-keith
--==_Exmh_-1592244130P
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Exmh version 2.3.1 11/28/2001
iD8DBQFARMuxQp8BWwlsTdMRAgRuAKCZ6JKj7r/vTsY95975LoTQ86vprQCdHHaq
fDT2xWQSYJ9HFYwSyPc8KRU=
=J0on
-----END PGP SIGNATURE-----
--==_Exmh_-1592244130P--