PEAR Group - Administrative Documents

» Version Naming

Published: 26th Februray 2004

The PEAR Group would like to take this opportunity to define the following version naming convention, which will be mandatory for all packages from now on. All developers should attempt to move to this new version naming scheme as soon as possible.

Vote Results: +1 (6), -1 (0), +0 (2)

» Current Versioning Method

The current status quo is that version names should follow the progression defined by the version_compare() function.

» New Versioning Method

Note that the version number is not the same as the version name. The version name is the final name of a version which consists of the version number and an optional suffix. See the following for details.

To determine the version name of a release use the following rule set:

Example: Lifecycle of a package

Release typeChangesVersionNotes
development release initial release 0.1.0dev1 initial version
development release features added 0.2.0dev1 BC break allowed
alpha release features added 0.9.0alpha1 BC break allowed - but discouraged
beta release bug fixes 0.9.0beta1 BC break allowed - but discouraged
beta release bug fixes 0.9.0beta2 BC break allowed - but discouraged
RC release bug fixes 1.0.0RC1 BC break allowed - but heavily discouraged
stable release no changes 1.0.0 BC break is not allowed
stable release bug fixes 1.0.1 BC break is not allowed
development release features added 1.1.0dev1 BC break is not allowed
beta release bug fixes 1.1.0beta1 BC break is not allowed
stable release bug fixes 1.1.0 BC break is not allowed
stable release features added 1.2.0 BC break is not allowed
development release major changes 2.0.0dev1 BC break is allowed
alpha release major changes 2.0.0alpha1 BC break is allowed - but discouraged
beta release bug fixes 2.0.0beta1 BC break is allowed - but discouraged
RC release features added 2.0.0RC1 BC break is allowed - but heavily discouraged
RC release bug fixes 2.0.0RC2 BC break is allowed - but heavily discouraged
stable release bug fixes 2.0.0 BC break is not allowed
stable release bug fixes 2.0.1 BC break is not allowed

Automation

It should be possible to turn this rule set into a little tool which can compute the next version for you based on questions you answer (like is this the first release, did this release break BC?, what state should this release have etc.)

This should make it possible to generate correct version numbers without going through this rather lengthy list.

A sample implementation can be found at http://www.backendmedia.com/PEAR/version_generator.phps.

Please note that this implementation currently does not enforce the usage of the patch level version number and still uses the state "RC" instead of "beta" for release candidates.

Future versions of the PEAR packager will hopefully include functionality validate the version name based on relevant metadata set in the package.xml and by comparing the package API with prior versions.

Back