Software Versioning Article Index for
Software
Website Links For
Software
 

Information About

Software Versioning




Software versioning is the process of assigning either unique '''version names''' or unique '''version numbers''' to unique states of Computer Software . Within a given version number category (major, minor), these numbers are generally assigned in increasing order and correspond to new developments in the software. At a fine-grained level, Revision Control is often used for keeping track of incrementally different versions of electronic information, whether or not this information is actually computer software.


SOFTWARE VERSIONING SCHEMES

A variety of version numbering schemes have been created to keep track of different versions of a piece of software. The ubiquity of computers has also led to these schemes being used in contexts outside computing.


Numeric


The most common software versioning scheme is a scheme in which different major releases of the software each receive a unique numerical identifier. This is typically expressed as three numbers, separated by periods, such as version 2.4.13. One very commonly followed structure for these numbers is:
major.minor {Link without Title} ]

or
major.minor {Link without Title} ]


In most commercial software, the first released version of a software product has version 1.0. Numbers below 1 mean Alpha or Beta versions, i.e., versions for testing purposes or internal use, or versions that aren't stable enough for general or practical deployment.

In principle, in subsequent releases, the ''major'' number is increased when there are significant jumps in functionality, the ''minor'' number is incremented when only minor features or significant fixes have been added, and the ''revision'' number is incremented when minor bugs are fixed. A typical product might use the numbers 0.9 (for beta software), 0.9.1, 0.9.2, 0.9.3, 1.0, 1.0.1, 1.0.2, 1.1, 1.1.1, 2.0, 2.0.1, 2.0.2, 2.1, 2.1.1, 2.1.2, 2.2, etc. Developers may at times jump (for example) from version 5.0 to 5.5 to indicate that significant features have been added, but not enough to warrant incrementing the major version number.

There is sometimes a fourth, unpublished number which denotes the software build (as used by Microsoft ). Some companies also include the build date. Version numbers may also include letters and other characters, such as Lotus 1-2-3 Release 1a.


1.0B1, 1.0B2 (WITH SOME FIXES), 1.0B3 (WITH MORE FIXES)


This is to permit users (or potential adopters) to evaluate how much real-world testing a given build of code has actually undergone. If changes are made between, say, 1.3rc4 and the production release of 1.3, then that release, which asserts that it has had a production-grade level of testing in the real world, in fact contains changes which have not necessarily been tested in the real world ''at all''.
This approach commonly permits the third level of numbering ("change"), but does not apply this level of rigor to changes in that number: 1.3.1, 1.3.2, 1.3.3, 1.3.4... 1.4b1, etc.


Date

The Wine project used a date versioning scheme, which uses the year followed by the month followed by the day of the release; for example, "Wine 20040505". Wine is now on a "standard" release track; the most current version as of August 2 , 2007, is 0.9.42. Ubuntu Linux uses a similar versioning scheme—Ubuntu 7.04, for example, was released April 2007.


Year of release

Other examples, identifying versions by year ( Adobe Illustrator 88, WordPerfect Office 2003)


Alphanumeric codes

Examples:


TeX

TeX has an idiosyncratic version numbering system. Since version 3, updates have been indicated by adding an extra digit at the end, so that the version number Asymptotically approaches π . The current version is 3.141592. This is a reflection of the fact that TeX is now very stable, and only minor updates are anticipated. TeX developer Donald Knuth has stated that the "absolutely final change (to be made after my death)" will be to change the version number to π, at which point all remaining bugs will become permanent features.

In a similar way, the version number of METAFONT Asymptotically approaches E .


Apple

Apple has a formalised version number structure based around the NumVersion struct, which specifies a one- or two-digit major version, a one-digit minor version, a one-digit 'bug' (i.e. revision) version, a stage indicator (drawn from the set development/prealpha, alpha, beta and final/release), and a one-byte (i.e. having values in the range 0-255) pre-release version, which is only used at stages prior to final. In writing these version numbers as strings, the convention is to omit any parts after the minor version whose value are zero (with 'final' being considered the zero stage), thus writing 1.0.2b12, 1.0.2 (rather than 1.0.2f0), and 1.1 (rather than 1.1.0f0).


Other schemes

Some software producers use different schemes to denote releases of their software. For example, the Microsoft Windows operating system was first labelled with standard numerical version numbers ( Windows 1.0 through Windows 3.11 ), then by years ( Windows 95 , Windows 98 , Windows 2000 ), after that using alphanumeric codes ( Windows Me , Windows XP ), and now using names ( Windows Vista ). The Debian project uses a major/minor versioning scheme for releases of its operating system, but uses code names from the movie Toy Story during development to refer to stable, unstable and testing releases.


INTERNAL VERSION NUMBERS

Software may have an "internal" version number which differs from the version number shown in the product name (and which typically follows version numbering rules more consistently). is Windows 4.0, 98 is 4.10, 2000 is 5.0, Me is 4.90, XP is 5.1, 2003 is 5.2, and Vista is 6.0.


PRE-RELEASE VERSIONS

In conjunction with the various versioning schemes listed above, a system for denoting pre-release versions is generally used, as the program makes its way through the stages of the Software Release Life Cycle .
Programs that are in an early stage are often called "alpha" software, after the first letter in the Greek alphabet. After they mature but are not yet ready for release, they may be called "beta" software, after the second letter in the Greek alphabet. Alpha- and beta-version software is often given numerical versions less than 1 (such as 0.9), to suggest their approach toward a public "1.0" release. However, if the pre-release version is for an existing software package (e.g. version 2.5), then an "a" or "alpha" may be appended to the version number. So the alpha version of the 2.5 release might be identified as 2.5a or 2.5.a.
Software packages which are soon to be released as a particular version may carry that version tag followed by "rc-#", indicating the number of the release candidate. When the version is actually released, the "rc" tag disappears.


MODIFICATIONS TO THE NUMERIC SYSTEM


Odd-numbered versions for development releases

Up until the 2.6.x series, the Linux kernel used Odd minor version numbers to denote development releases and Even minor version numbers to denote stable releases. For example, Linux 2.3 was a development family of the second major design of the Linux kernel, and Linux 2.4 was the stable release family that Linux 2.3 matured into. After the minor version number in the Linux kernel is the release number, in ascending order; for example, Linux 2.4.0 → Linux 2.4.22. Even further, a trivial version number was added to 2.6.8, making 2.6.8.1 which denoted a very minor change. This fourth number has been made standard since 2.6.11.1.


Apple

Apple had their own twist on this habit during the era of the Classic MacOS : although there were minor releases, they rarely went beyond 1, and when they did, they twice jumped straight to 5, suggesting a change of magnitude intermediate between a major and minor release (thus, 8.5 really means 'eight and a half', and 8.6 is 'eight and a half point one'). The complete sequence of versions (neglecting revision releases) is 1.0, 1.1, 2.0, 2.1, 3.0, 3.2 (skipping 3.1), 4.0, 4.1, 5.0, 5.1, 6.0, 7.0, 7.1, 7.2, 7.5, 7.6, 8.0, 8.1, 8.5, 8.6, 9.0, 9.1, 9.2.

Mac OS X has bucked this trend, having gone more conventionally from 10.0 to 10.5, one minor release at a time. However, note that the 10.4.10 update bucks the previously-indicated approach of having a "one- or two-digit major version, a one-digit minor version, a one-digit 'bug' (i.e. revision) version…". The bug-fix value is not a decimal indicator, but is an incremental whole value; while it is not expected, there would be nothing preventing a distant-future "10.4.321" release.


POLITICAL SIGNIFICANCE OF VERSION NUMBERS


Version 1.0 as a milestone

Commercial software developers often start at version 1 for the first release of a program and increment the major version number with each rewrite, meaning that a program can reach version 3 within a few months of development, before it's even considered stable or reliable.

In contrast to this, the Free-software community tends to use version 1.0 as a major milestone, indicating that the software is "complete", that it has all major features, and is considered reliable enough for general release.

In this scheme, the version number slowly approaches 1.0 as more and more bugs are fixed in preparation for the 1.0 release. The developers of MAME do not intend to release a version 1.0 of their emulator program. The argument is that it will never be truly "finished" because there will always be more Arcade Game s. Version 0.99 was simply followed by version 0.100 (minor version 100 > 99).


To describe program history

Winamp released an entirely different architecture for version 3 of the program. Due to lack of Backwards Compatibility with plugins and other resources from the major version 2, a new version was issued that was compatible with both version 2 and 3. The new version was set to 5 (2+3), skipping version 4.


Keeping up with competitors

There is a common habit in the commercial software industry (usually, though not always, spurned by non-commercial programmers) to make major jumps in numeric major or minor version numbers for reasons which do not seem (to many members of the program's audience) to merit the "marketing" version numbers.

This can be seen in several Microsoft and America Online products, as well as Sun Solaris and Java Virtual Machine numbering, SCO Unix version numbers, and Corel Word Perfect, as well as the filePro DB/ RAD programming package, which went from 2.0 to 3.0 to 4.0 to 4.1 to 4.5 to 4.8 to 5.0, and is about to go to 5.6, with no intervening release. A slightly different version can be seen in AOL's PC client software, which tends to have only major releases (5.0, 6.0, 7.0, etc.). Likewise, Microsoft Access jumped from version 2.0 to version 7.0, to match the version number of Microsoft Word .

Microsoft has also been the target of 'catch-up' versioning, with the Netscape Browser skipping version 5 to 6, in line with Microsoft's Internet Explorer , but also because the Mozilla application suite inherited version 5 in its User Agent string during pre-1.0 development and Netscape 6.x was built upon Mozilla's code base.

Sun's Java has at times had a hybrid system, where the actual version number has always been 1.''x'' but twice has been marketed by reference only to the ''x'':
  • JDK 1.0.3

  • JDK 1.1.2 through 1.1.8

  • J2SE 1.2.0 ("Java 2") through 1.4.2

  • Java 1.5.0 ("Java 5")

  • Java 1.6.0 ("Java 6")


Sun also dropped the first digit for Solaris, where Solaris 2.8 (or 2.9) is referred to as Solaris 8 (or 9) in marketing materials.