LibCVS Perl Implementation

$Date: 2006/03/18 22:34:41 $

LibCVS Perl produces an implementation of the LibCVS Specification. It is currently of alpha quality, and provides read-only access to the repository and the working directory.

The current release of LibCVS Perl is 1.0.2, and it is available through CPAN.

LibCVS Perl is hosted on Savannah, at

Project Management

Version Numbers

LibCVS Perl version numbers consist of 3 fields, a major number, a minor number and a release number. Minor and release numbers are always written using two digits, for consistency with Perl version numbering schemes, and nice sorting.

Major numbers start at 1 and are incremented if and only if there are interface or behavioural changes which are not backward compatible to previous stable versions.

Minor numbers follow the numbering scheme of CVS: even minor numbers indicate expiremental versions, and odd minor numbers indicate a stable version.

Release numbers increase with each release.

Perl module versions are typically of the form 1.0304_03, where the _n part is only present for experimental versions. This is generated by concatenating the version numbers, and appending a _00 for experimental versions.

Backward Compatibility

All versions will be backward compatible to any stable version (odd minor number) with a lesser version number and the same major number. For example, 2.05.06 will be backward compatible to 2.01.03, but not to 1.03.06 (different major numbers) nor to 2.04.01 (expiremental version).

This allows development of interface extensions across expiremental versions. 1.04.05 can undo any interface development done in a 1.04.* version, but can't change interface from 1.03.06.

It also permits bugfix releases, as long as they do not affect the interface. So 1.01.07 can be released after 1.03.02, but it may not add any interface extensions, since it must retain compatiblity with 1.03.00, 1.03.01 and 1.03.02.

CVS tag and branch names

Tags on releases will start with "Release-", followed by the release version, "." replaced with "-". eg: "Release-1-00-00". If maintenance is required for a particular release, that will be the base tag of the new branch, and the branch will be the same, but with "Branch" instead of "Release", like this: "Branch-2-03-02"

Issue Priorities

Immediate Issue must be resolved immediately, it is blocking development or requires an immediate bug fix release.
High Issue must be resolved before the next regular release.
Medium Issue should be resolved for the next regular release.
Low Issue is not being considered for the next regular release, but will be reconsidered for the one after that.
Later Issue will not be considered until work commences on a release with a new minor number.

LibCVS Perl Release Checklist

  1. Get the code in order
    1. Make sure there are no open Immediate or High priority issues.
    2. Add new year to copyright notices if necessary.
    3. Check version numbers in README and VCS/
    4. Update README. lcvs-logsummary can be used to see everything that has changed.
    5. Tag the release.
  2. Generate and upload package
    1. cvs co -r Release-xx-xx-xx
    2. Generate the ChangeLog using lcvs-logsummary. This is done automatically "make ChangeLog".
    3. Invoke make as: "make official"
    4. sign package
    5. upload package to files download area
    6. upload package to PAUSE
  3. Announcements
    1. Update the project description on Savannah.
    2. email (Check subscribers perhaps)
    3. perhaps email
    4. post to comp.lang.modules.perl
    5. post to
  4. Prepare for the next release
    1. Triage issues, and reprioritize up.
    2. Update VERSION number in LibCVS and README for the next version.