Even though the CVS program is a powerful tool for open source development projects, the project itself has a much better chance of succeeding if basic ground rules are provided and used consistently while using the CVS repository.
The goal is to support as few branches as possible (branches lead to merges). Developers do not automatically get their own branch to play with. This policy requires that developers communicate and plan out large changes to the code. A mailing list is provided to assist in communication between developers.
The trunk (i.e. HEAD in CVS terminology) will be the unstable version. New features may be submitted only to the HEAD. The HEAD will be considered unstable and fit only for development work. This does not mean that a developer has the right to commit changes in a sloppy fashion.
There will be a moderator for each software project who is responsible for deciding what software features will be in each stable release. If a developer wishes to contribute to the repository, but does not have CVS 'commit' access, then the patches should be mailed to this moderator, who will commit the changes as appropriate.
The developer should only commit changes that can be built, have been at least minimally tested, and are consistent with the current state of other CVS projects. Changes should also be tested on as many platforms as possible.
Example: Scott wants to change the DCS protocol between Blu-Ice and DCSS. He should not commit any changes to the dcss project unless he is also ready to commit the related changes to the blu-ice project.
Candidate stable versions of the HEAD will be tagged to indicate that it is a release. Bug fixes on stable releases will be handled by branching from this tag. A branch will be made for the tag when a bug fix is available for the stable release.
Developers that wish to merge bug fixes that have been applied to a "release branch" to the HEAD are strongly encouraged to do this activity in a manual fashion (e.g. editor?). However, if the CVS merge features have been deemed appropriate for the particular case, the branch can be tagged as described in Naming conventions for CVS tags.