Version Number

Most projects have a version number. Even smaller units like files or functions may have their own version numbers. Which version numbering schemes do exist and what are their pros and cons?

Common Version Number Format

Many projects use a version like major[.minor[.micro[.build]]], where major, minor, micro, and build are nonnegative integers. The micro component is sometimes called the patchlevel.

Some projects append a string like "rc", "alpha", "beta", all followed by a small positive integer, to the last component they use to indicate versions that are "almost" finished.

Meaning of the Version Number Components

The Linux kernel (http://www.kernel.org/) uses even minor numbers for release versions, and odd minor numbers for development versions. The development version major.minor evolves from major.(minor-1) and leads to major.(minor+1) or (major+1).0.

The Wine project (http://www.winehq.com/) uses the release date as a single component version number.

Version Numbers for Shared Libraries

Every shared library should have a version number. This number may be different from the version number of the project, in which the library is distributed.


Alternative Version Number Format

An alternative version number format proposed by David Tanzer (http://davidtanzer.net/node/75) is v[major][qualifier][revision] where "major" and "revision" are positive integers and "qualifier" is one of the following:

Example: "libfoo-v01ds05". --David Tanzer


EditText of this page (last edited July 25, 2011) or FindPage with title or text search