Version
Encyclopedia
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.
For instance, in a scheme that uses a four-sequence identifier, the first sequence may be incremented only when the code is completely rewritten, while a change to the user interface or the documentation may only warrant a change to the fourth sequence.
This practice permits users (or potential adopters) to evaluate how much real-world testing a given software release has 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.4.1, etc.
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 have at times jumped (for example) from version 5.0 to 5.5 to indicate significant features have been added, but they are not enough to warrant incrementing the major version number. This is improper. It is usually done to create a visual differential between software versions. A person may be less inclined to go through the trouble of installing, reinstalling, and/or removing old versions of software if a minor change is made instead. (I.E. Version 5.0 to 5.01, or 5.0 to 5.1)
A different approach is to use the major and minor numbers, along with an alphanumeric string denoting the release type, i.e. "alpha", "beta" or "release candidate". A release train using this approach might look like 0.5, 0.6, 0.7, 0.8, 0.9
However, since version numbers are human-generated, not computer-generated, there is nothing that prevents arbitrary changes that violate such guidelines: for example, the first sequence could be incremented between versions that differ by not even a single line of code, to give the (false) impression that very significant changes were made.
Other schemes impart meaning on individual sequences:
or
Again, in these examples, the definition of what constitutes a "major" as opposed to a "minor" change is entirely arbitrary and up to the author, as is what defines a "build", or how a "revision" differs from a "minor" change.
A similar problem of relative change significance and versioning nomenclature exists in book publishing, where edition numbers or names can be chosen based on varying criteria.
In most proprietary software, the first released version of a software product has version 1.
It can be used in the third position:
For instance:
When a period is used to separate sequences, it does not represent a decimal point, and the sequences do not have positional significance. An identifier of 2.5, for instance, is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.
(as used by Microsoft
). Adobe Flash
is a notable case where a 4-part version number is indicated publicly, as in 10.1.53.64. Some companies also include the build date. Version numbers may also include letters and other characters, such as Lotus 1-2-3
Release 1a.
packages treat numbers as a continuous stream, therefore a free software or open source product may have version numbers 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.11.2, etc. An example of such a software package is MediaWiki
. However, many programs treat version numbers in another way, generally as decimal numbers, and may have version numbers such as 1.7, 1.8, 1.81, 1.82, 1.9, etc. In software packages using this way of numbering 1.81 is the next minor version after 1.8. Maintenance releases (i.e. bug fixes only) would generally be denoted as 1.81a, 1.81b, etc.
The standard GNU
version numbering scheme is major.minor.revision, but emacs
is a notable example using another scheme where the major number ("1") was dropped and a "user site" revision was added which is always zero in original emacs packages but increased by distributors. Similarly, Debian
package numbers are prefixed with an optional "epoch", which is used to allow the versioning scheme to be changed.
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 stable version (as of the end of 2011) is 1.2.3. Ubuntu Linux uses a similar versioning scheme—Ubuntu 10.10, for example, was released October 2010.
When using dates in versioning, for instance, file names, it is common to use the ISO scheme: YYYY-MM-DD, as this is easily string sorted to increasing/decreasing order. The hyphens are sometimes omitted.
Microsoft Office
build numbers are actually an encoded date.
and WordPerfect Office 2003
. When a date is used to denote version, it is generally for marketing purposes, and an actual version number also exists. For example, Microsoft Windows 2000 Server is internally versioned as Windows NT 5.0 ("NT" being a reference to the original product name).
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 π
; this is a form of unary numbering
– the version number is the number of digits. The current version is 3.1415926. 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
.
operating system was first labelled with standard numerical version numbers (Windows 1.0
through Windows 3.11
). Later, Microsoft started using separate version names for marketing purposes, first using years (Windows 95
(4.0), Windows 98
(4.10), Windows 2000
(5.0)), then using alphanumeric codes (Windows Me
(4.90), Windows XP
(5.1)), then using brand names (Windows Vista
(6.0)). With the release of Windows 7 it appears that Microsoft has returned to using numerical version numbers, although the official version number for Windows 7 is 6.1.
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.
BLAG Linux and GNU
features very large version numbers: major releases have numbers such as 50000 and 60000, while minor releases increase the number by 1 (e.g. 50001, 50002). Alpha and beta releases are given decimal version numbers slightly less than the major release number, such as 19999.00071 for alpha 1 of version 20000, and 29999.50000 for beta 2 of version 30000. Starting at 9001 in 2003, the most recent version as of 2011 is 140000.
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). Java SE
5.0, for example, has the internal version number of 1.5.0, and versions of Windows from NT 4 on have continued the standard numerical versions internally: Windows 2000 is NT
5.0, XP is Windows NT 5.1, Windows Server 2003
is NT 5.2, Vista is NT 6.0 and 7 is NT 6.1. Note, however, that Windows NT is only on its third major revision, as its first release was numbered 3.1 (to match the then-current Windows release number).
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. Generally alpha software is tested by developers only, while beta software is distributed for community testing. Alpha- and beta-version software is often given numerical versions less than 1 (such as 0.9), to suggest their approach toward a final "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.
This can apparently cause trouble for some package managers, though. The Rivendell radio broadcast automation package, for example, is about to have to release its first full production release package... v1.0.1, because if they called it v1.0.0, RPM
would refuse to install it, because the algorithm sorts "1.0.0" lower than "1.0.0rc2" (which is because version comparison algorithms are generally language-agnostic and thus don't know the meaning of "rc").
used odd
minor version numbers to denote development releases and even
minor version numbers to denote stable releases; see Linux kernel: Version numbering. 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. Since the 2004 release of the 2.6 kernel, Linux no longer uses this system, and has a much shorter release cycle, instead now simply incrementing the third number, using a fourth number as necessary.
The same odd-even system is used by some other software with long release cycles, such as GNOME
.
: 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.5, 7.6, 8.0, 8.1, 8.5, 8.6, 9.0, 9.1, 9.2.
Mac OS X has departed from this trend, having gone more conventionally from 10.0 to 10.7, one minor release at a time. However, note that the 10.4.10 update does not follow 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 "X.4.321" release.
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). In a similar fashion Xfire
1.99 was followed by 1.100. After over 8 years of development, eMule
just recently reached version 0.50a.
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. The developers also humorously joked that they skipped version 4 because "nobody wants to see a Winamp 4 skin", referencing the foreskin
of a penis.
A similar thing happened with UnixWare
7, which was the combination of UnixWare 2 and OpenServer 5.
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 WordPerfect, 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 three times has been marketed by reference only to the x:
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.
Another example of keeping up with competitors is when Slackware Linux jumped from version 4 to version 7 in 1999.
A similar jump has recently taken place with the Asterisk
open-source PBX construction kit, whose project leads announced that the current version 1.8.x will soon be followed by version 10, which will be followed by version 11, and then 12, and so forth, presumably dropping the other components (and their useful semantic significance) entirely. This change, though, does not seem to be motivated by 'keeping up with competition'. http://blogs.digium.com/2011/07/21/the-evolution-of-asterisk-or-how-we-arrived-at-asterisk-10/
Overcoming perceived marketing difficulties
In the mid-1990s, the rapidly growing CMMS, Maximo
, moved from Maximo Series 3 directly to Series 5, skipping Series 4 due to that number's perceived marketing difficulties in the Chinese market, where the number 4 is associated with “death” (see tetraphobia
). This did not, however, stop Maximo Series 5 version 4.0 being released. (It should be noted the "Series" versioning has since been dropped, effectively resetting version numbers after Series 5 version 1.0's release.)
Significance in software engineering
Version numbers are used in practical terms by the consumer, or client
, by being able to compare their copy of the software product against another copy, such as the newest version released by the developer. For the programmer team or company, versioning is often used on a file-by-file basis, where individual parts or sectors of the software code are compared and contrasted with newer or older revisions, often in a collaborative version control system. There is no absolute and definite software version schema; it can often vary from software genre to genre, and is very commonly based on the programmer's personal preference.
Significance in technical support
Version numbers allow people providing support to ascertain exactly what code a user is running, so that they know what bugs might affect a problem, and the like. This occurs when a program has a substantial user community, especially when that community is large enough that the people providing technical support are not the people who wrote the code.
Version numbers for files and documents
Some computer file systems
, such as the OpenVMS Filesystem, also keep versions for files.
Versioning amongst documents is relatively similar to the routine used with computers and software engineering, where with each small change in the structure, contents, or conditions, the version number is incremented by 1, or a smaller or larger value, again depending on the personal preference of the author
and the size or importance of changes made.
Version number ordering systems
Version numbers very quickly evolve from simple integers (1, 2, ...) to rational numbers (2.08, 2.09, 2.10)
and then to non-numeric "numbers" such as 4:3.4.3-2. These complex version numbers are therefore better treated as character strings. Operating systems that include package management facilities (such as all non-trivial Linux
or BSD distributions) will use a distribution-specific algorithm for comparing version numbers of different software packages. For example, the ordering algorithms of Red Hat and derived distributions differ to those of the Debian-like distributions.
As an example of surprising version number ordering implementation behavior, in Debian
, leading zeroes are ignored in chunks, so that 5.0005 and 5.5 are considered as equal, and 5.5<5.0006. This can confuse users; string-matching tools may fail to find a given version number; and this can cause subtle bugs in package management if the programmers use string-indexed data structures such as version-number indexed hash tables.
In order to ease sorting, some software packages will represent each component of the major.minor.release scheme with a fixed width. Perl represents its version numbers as a floating-point number, for example, Perl's 5.8.7 release can also be represented as 5.008007. This allows a theoretical version of 5.8.10 to be represented as 5.008010. Other software packages will pack each segment into a fixed bit width, for example, 5.8.7 could be represented in 24 bits: ( 5 << 16 | 8 << 8 | 7; hexadecimal: 050807; for version 12.34.56 in hexadecimal: 0C2238). The floating-point scheme will break down if any segment of the version number exceeds 1,000; a packed-binary scheme employing 8 bits apiece after 256.
Use in other media
Software-style version numbers can be found in other media. In some cases, the use is a direct analogy (for example, Dungeons & Dragons
3.5, where the rules were revised from the third edition, but not so much as to be considered the fourth), but more often it's used to play on an association with high technology and doesn't literally indicate a 'version' (e.g., Tron 2.0
, a video game followup to the film Tron
, or the television series The IT Crowd
, which refers to the second season as Version 2.0). A particularly notable usage is Web 2.0
, referring to the World Wide Web
as used in collaborative projects such as wiki
s and social networking websites.
See also
External links
Computer software
Computer software, or just software, is a collection of computer programs and related data that provide the instructions for telling a computer what to do and how to do it....
. 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
Revision control
Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...
is often used for keeping track of incrementally different versions of electronic information, whether or not this information is actually computer software.
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.Sequence-based identifiers
In sequence-based software versioning schemes, each software release is assigned a unique identifier that consists of one or more sequences of numbers or letters. This is the extent of the commonality, however, schemes vary widely in areas such as the quantity of sequences, the attribution of meaning to individual sequences, and the means of incrementing the sequences.Change significance
In some schemes, sequence-based identifiers are used to convey the significance of changes between releases: changes are classified by significance level, and the decision of which sequence to change between releases is based on the significance of the changes from the previous release, whereby the first sequence is changed for the most significant changes, and changes to sequences after the first represent changes of decreasing significance.For instance, in a scheme that uses a four-sequence identifier, the first sequence may be incremented only when the code is completely rewritten, while a change to the user interface or the documentation may only warrant a change to the fourth sequence.
This practice permits users (or potential adopters) to evaluate how much real-world testing a given software release has 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.4.1, etc.
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 have at times jumped (for example) from version 5.0 to 5.5 to indicate significant features have been added, but they are not enough to warrant incrementing the major version number. This is improper. It is usually done to create a visual differential between software versions. A person may be less inclined to go through the trouble of installing, reinstalling, and/or removing old versions of software if a minor change is made instead. (I.E. Version 5.0 to 5.01, or 5.0 to 5.1)
A different approach is to use the major and minor numbers, along with an alphanumeric string denoting the release type, i.e. "alpha", "beta" or "release candidate". A release train using this approach might look like 0.5, 0.6, 0.7, 0.8, 0.9
1.0b1, 1.0b2 (with some fixes), 1.0b3 (with more fixes)
1.0rc1 (which, if it is stable enough) 1.0. If 1.0rc1 turns out to have bugs which must be fixed, it turns into 1.0rc2, and so on. The important characteristic of this approach is that the first version of a given level (beta, RC, production) must be identical to the last version of the release below it: you cannot make any changes at all from the last beta to the first RC, or from the last RC to production. If you do, you must roll out another release at that lower level.However, since version numbers are human-generated, not computer-generated, there is nothing that prevents arbitrary changes that violate such guidelines: for example, the first sequence could be incremented between versions that differ by not even a single line of code, to give the (false) impression that very significant changes were made.
Other schemes impart meaning on individual sequences:
major.minor[.build[.revision]]
or
major.minor[.maintenance[.build]]
Again, in these examples, the definition of what constitutes a "major" as opposed to a "minor" change is entirely arbitrary and up to the author, as is what defines a "build", or how a "revision" differs from a "minor" change.
A similar problem of relative change significance and versioning nomenclature exists in book publishing, where edition numbers or names can be chosen based on varying criteria.
In most proprietary software, the first released version of a software product has version 1.
Designating development stage
Some schemes use a zero in the first sequence to designate alpha or beta status for releases that are not stable enough for general or practical deployment and are intended for testing or internal use only.It can be used in the third position:
- 0 for alpha (status)
- 1 for beta (status)
- 2 for release candidate
- 3 for (final) release
For instance:
- 1.2.0.1 instead of 1.2-a1
- 1.2.1.2 instead of 1.2-b2 (beta with some bug fixes)
- 1.2.2.3 instead of 1.2-rc3 (release candidate)
- 1.2.3.0 instead of 1.2-r (commercial distribution)
- 1.2.3.5 instead of 1.2-r5 (commercial distribution with many bug fixes)
Separating sequences
When printed, the sequences may be separated with characters. The choice of characters and their usage varies by scheme. The following list shows hypothetical examples of separation schemes for the same release (the thirteenth third-level revision to the fourth second-level revision to the second first-level revision):- A scheme may use the same character between all sequences: 2.4.13, 2/4/13, 2-4-13
- A scheme choice of which sequences to separate may be inconsistent, separating some sequences but not others: 2.413
- A scheme's choice of characters may be inconsistent within the same identifier: 2.4_13
When a period is used to separate sequences, it does not represent a decimal point, and the sequences do not have positional significance. An identifier of 2.5, for instance, is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.
Number of sequences
There is sometimes a fourth, unpublished number which denotes the software buildSoftware build
In the field of computer software, the term software build refers either to the process of converting source code files into standalone software artifact that can be run on a computer, or the result of doing so...
(as used by Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...
). Adobe Flash
Adobe Flash
Adobe Flash is a multimedia platform used to add animation, video, and interactivity to web pages. Flash is frequently used for advertisements, games and flash animations for broadcast...
is a notable case where a 4-part version number is indicated publicly, as in 10.1.53.64. Some companies also include the build date. Version numbers may also include letters and other characters, such as Lotus 1-2-3
Lotus 1-2-3
Lotus 1-2-3 is a spreadsheet program from Lotus Software . It was the IBM PC's first "killer application"; its huge popularity in the mid-1980s contributed significantly to the success of the IBM PC in the corporate environment.-Beginnings:...
Release 1a.
Incrementing sequences
There are two schools of thought regarding how numeric version numbers are incremented: Most free softwareFree software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
packages treat numbers as a continuous stream, therefore a free software or open source product may have version numbers 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.11.2, etc. An example of such a software package is MediaWiki
MediaWiki
MediaWiki is a popular free web-based wiki software application. Developed by the Wikimedia Foundation, it is used to run all of its projects, including Wikipedia, Wiktionary and Wikinews. Numerous other wikis around the world also use it to power their websites...
. However, many programs treat version numbers in another way, generally as decimal numbers, and may have version numbers such as 1.7, 1.8, 1.81, 1.82, 1.9, etc. In software packages using this way of numbering 1.81 is the next minor version after 1.8. Maintenance releases (i.e. bug fixes only) would generally be denoted as 1.81a, 1.81b, etc.
The standard GNU
GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
version numbering scheme is major.minor.revision, but emacs
Emacs
Emacs is a class of text editors, usually characterized by their extensibility. GNU Emacs has over 1,000 commands. It also allows the user to combine these commands into macros to automate work.Development began in the mid-1970s and continues actively...
is a notable example using another scheme where the major number ("1") was dropped and a "user site" revision was added which is always zero in original emacs packages but increased by distributors. Similarly, Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...
package numbers are prefixed with an optional "epoch", which is used to allow the versioning scheme to be changed.
Using negative numbers
There exist some projects that use negative version numbers. One example is the smalleiffel compiler which started from -1.0 and counted upwards to 0.0.Degree of compatibility
Some projects use the major version number to indicate incompatible releases. Two examples are Apache APR and the FarCry CMS.Date
The WineWine (software)
Wine is a free software application that aims to allow computer programs written for Microsoft Windows to run on Unix-like operating systems. Wine also provides a software library, known as Winelib, against which developers can compile Windows applications to help port them to Unix-like...
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 stable version (as of the end of 2011) is 1.2.3. Ubuntu Linux uses a similar versioning scheme—Ubuntu 10.10, for example, was released October 2010.
When using dates in versioning, for instance, file names, it is common to use the ISO scheme: YYYY-MM-DD, as this is easily string sorted to increasing/decreasing order. The hyphens are sometimes omitted.
Microsoft Office
Microsoft Office
Microsoft Office is a non-free commercial office suite of inter-related desktop applications, servers and services for the Microsoft Windows and Mac OS X operating systems, introduced by Microsoft in August 1, 1989. Initially a marketing term for a bundled set of applications, the first version of...
build numbers are actually an encoded date.
Year of release
Other examples that identify versions by year include Adobe Illustrator 88Adobe Illustrator
Adobe Illustrator is a vector graphics editor developed and marketed by Adobe Systems. Illustrator is similar in scope, intended market, and functionality to its competitors, CorelDraw, Xara Designer Pro and Macromedia FreeHand....
and WordPerfect Office 2003
WordPerfect Office
WordPerfect Office is an office suite developed by Corel Corporation. As of March 2010, the latest version is WordPerfect Office X5 , which is available in three editions: Home & Student, Standard and Professional....
. When a date is used to denote version, it is generally for marketing purposes, and an actual version number also exists. For example, Microsoft Windows 2000 Server is internally versioned as Windows NT 5.0 ("NT" being a reference to the original product name).
TeX
TeXTeX
TeX is a typesetting system designed and mostly written by Donald Knuth and released in 1978. Within the typesetting system, its name is formatted as ....
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
Asymptote
In analytic geometry, an asymptote of a curve is a line such that the distance between the curve and the line approaches zero as they tend to infinity. Some sources include the requirement that the curve may not cross the line infinitely often, but this is unusual for modern authors...
approaches π
Pi
' is a mathematical constant that is the ratio of any circle's circumference to its diameter. is approximately equal to 3.14. Many formulae in mathematics, science, and engineering involve , which makes it one of the most important mathematical constants...
; this is a form of unary numbering
Unary numeral system
The unary numeral system is the bijective base-1 numeral system. It is the simplest numeral system to represent natural numbers: in order to represent a number N, an arbitrarily chosen symbol representing 1 is repeated N times. For example, using the symbol | , the number 6 is represented as ||||||...
– the version number is the number of digits. The current version is 3.1415926. This is a reflection of the fact that TeX is now very stable, and only minor updates are anticipated. TeX developer Donald Knuth
Donald Knuth
Donald Ervin Knuth is a computer scientist and Professor Emeritus at Stanford University.He is the author of the seminal multi-volume work The Art of Computer Programming. Knuth has been called the "father" of the analysis of algorithms...
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
METAFONT
Metafont is a programming language used to define vector fonts. It is also the name of the interpreter that executes Metafont code, generating the bitmap fonts that can be embedded into e.g. PostScript...
asymptotically approaches e
E (mathematical constant)
The mathematical constant ' is the unique real number such that the value of the derivative of the function at the point is equal to 1. The function so defined is called the exponential function, and its inverse is the natural logarithm, or logarithm to base...
.
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 WindowsMicrosoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
operating system was first labelled with standard numerical version numbers (Windows 1.0
Windows 1.0
Windows 1.0 is a 16-bit graphical operating environment, developed by Microsoft and released on 20 November 1985. It was Microsoft's first attempt to implement a multi-tasking graphical user interface-based operating environment on the PC platform. Windows 1.0 was the first version of Windows...
through Windows 3.11
Windows 3.1x
Windows 3.1x is a series of 16-bit operating systems produced by Microsoft for use on personal computers. The series began with Windows 3.1, which was first sold during March 1992 as a successor to Windows 3.0...
). Later, Microsoft started using separate version names for marketing purposes, first using years (Windows 95
Windows 95
Windows 95 is a consumer-oriented graphical user interface-based operating system. It was released on August 24, 1995 by Microsoft, and was a significant progression from the company's previous Windows products...
(4.0), Windows 98
Windows 98
Windows 98 is a graphical operating system by Microsoft. It is the second major release in the Windows 9x line of operating systems. It was released to manufacturing on 15 May 1998 and to retail on 25 June 1998. Windows 98 is the successor to Windows 95. Like its predecessor, it is a hybrid...
(4.10), Windows 2000
Windows 2000
Windows 2000 is a line of operating systems produced by Microsoft for use on personal computers, business desktops, laptops, and servers. Windows 2000 was released to manufacturing on 15 December 1999 and launched to retail on 17 February 2000. It is the successor to Windows NT 4.0, and is the...
(5.0)), then using alphanumeric codes (Windows Me
Windows Me
Windows Millennium Edition, or Windows Me , is a graphical operating system released on September 14, 2000 by Microsoft, and was the last operating system released in the Windows 9x series. Support for Windows Me ended on July 11, 2006....
(4.90), Windows XP
Windows XP
Windows XP is an operating system produced by Microsoft for use on personal computers, including home and business desktops, laptops and media centers. First released to computer manufacturers on August 24, 2001, it is the second most popular version of Windows, based on installed user base...
(5.1)), then using brand names (Windows Vista
Windows Vista
Windows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...
(6.0)). With the release of Windows 7 it appears that Microsoft has returned to using numerical version numbers, although the official version number for Windows 7 is 6.1.
The Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...
project uses a major/minor versioning scheme for releases of its operating system, but uses code names from the movie Toy Story
Toy Story
Toy Story is a 1995 American computer-animated film released by Walt Disney Pictures. It is Pixar's first feature film as well as the first ever feature film to be made entirely with CGI. The film was directed by John Lasseter and featuring the voices of Tom Hanks and Tim Allen...
during development to refer to stable, unstable and testing releases.
BLAG Linux and GNU
BLAG Linux and GNU
BLAG Linux and GNU is a GNU/Linux distribution made by the Brixton Linux Action Group.BLAG is a single-CD distro with applications desktop users "expect" from a desktop including multimedia, graphics, desktop internet applications and more. BLAG also includes a collection of server packages...
features very large version numbers: major releases have numbers such as 50000 and 60000, while minor releases increase the number by 1 (e.g. 50001, 50002). Alpha and beta releases are given decimal version numbers slightly less than the major release number, such as 19999.00071 for alpha 1 of version 20000, and 29999.50000 for beta 2 of version 30000. Starting at 9001 in 2003, the most recent version as of 2011 is 140000.
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). Java SE
Java Platform, Standard Edition
Java Platform, Standard Edition or Java SE is a widely used platform for programming in the Java language. It is the Java Platform used to deploy portable applications for general use...
5.0, for example, has the internal version number of 1.5.0, and versions of Windows from NT 4 on have continued the standard numerical versions internally: Windows 2000 is NT
Windows NT
Windows NT is a family of operating systems produced by Microsoft, the first version of which was released in July 1993. It was a powerful high-level-language-based, processor-independent, multiprocessing, multiuser operating system with features comparable to Unix. It was intended to complement...
5.0, XP is Windows NT 5.1, Windows Server 2003
Windows Server 2003
Windows Server 2003 is a server operating system produced by Microsoft, introduced on 24 April 2003. An updated version, Windows Server 2003 R2, was released to manufacturing on 6 December 2005...
is NT 5.2, Vista is NT 6.0 and 7 is NT 6.1. Note, however, that Windows NT is only on its third major revision, as its first release was numbered 3.1 (to match the then-current Windows release number).
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. Generally alpha software is tested by developers only, while beta software is distributed for community testing. Alpha- and beta-version software is often given numerical versions less than 1 (such as 0.9), to suggest their approach toward a final "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.
This can apparently cause trouble for some package managers, though. The Rivendell radio broadcast automation package, for example, is about to have to release its first full production release package... v1.0.1, because if they called it v1.0.0, RPM
RPM Package Manager
RPM Package Manager is a package management system. The name RPM variously refers to the .rpm file format, files in this format, software packaged in such files, and the package manager itself...
would refuse to install it, because the algorithm sorts "1.0.0" lower than "1.0.0rc2" (which is because version comparison algorithms are generally language-agnostic and thus don't know the meaning of "rc").
Odd-numbered versions for development releases
Between the 1.0 and the 2.6.x series, the Linux kernelLinux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....
used odd
Even and odd numbers
In mathematics, the parity of an object states whether it is even or odd.This concept begins with integers. An even number is an integer that is "evenly divisible" by 2, i.e., divisible by 2 without remainder; an odd number is an integer that is not evenly divisible by 2...
minor version numbers to denote development releases and even
Even and odd numbers
In mathematics, the parity of an object states whether it is even or odd.This concept begins with integers. An even number is an integer that is "evenly divisible" by 2, i.e., divisible by 2 without remainder; an odd number is an integer that is not evenly divisible by 2...
minor version numbers to denote stable releases; see Linux kernel: Version numbering. 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. Since the 2004 release of the 2.6 kernel, Linux no longer uses this system, and has a much shorter release cycle, instead now simply incrementing the third number, using a fourth number as necessary.
The same odd-even system is used by some other software with long release cycles, such as GNOME
GNOME
GNOME is a desktop environment and graphical user interface that runs on top of a computer operating system. It is composed entirely of free and open source software...
.
Apple
Apple had their own twist on this habit during the era of the classic MacOSMac OS history
On January 24, 1984, Apple Computer Inc. introduced the Macintosh personal computer, with the Macintosh 128K model, which came bundled with what was later renamed the Mac OS, but then known simply as the System Software....
: 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.5, 7.6, 8.0, 8.1, 8.5, 8.6, 9.0, 9.1, 9.2.
Mac OS X has departed from this trend, having gone more conventionally from 10.0 to 10.7, one minor release at a time. However, note that the 10.4.10 update does not follow 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 "X.4.321" release.
Version 1.0 as a milestone
Proprietary software developers often start at version 1 for the first release of a program and increment the major version number with each rewrite. This can mean that a program can reach version 3 within a few months of development, before it is considered stable or reliable.In contrast to this, the free-software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
community tends to use version 1.0 as a major milestone
Milestone (Project management)
Within the framework of project management, a milestone is the end of a stage that marks the completion of a work package or phase, typically marked by a high level event such as completion, endorsement or signing of a deliverable, document or a high level review meeting.In addition to signaling...
, 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
MAME
MAME is an emulator application designed to recreate the hardware of arcade game systems in software on modern personal computers and other platforms. The intention is to preserve gaming history by preventing vintage games from being lost or forgotten...
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
Arcade game
An arcade game is a coin-operated entertainment machine, usually installed in public businesses such as restaurants, bars, and amusement arcades. Most arcade games are video games, pinball machines, electro-mechanical games, redemption games, and merchandisers...
s. Version 0.99 was simply followed by version 0.100 (minor version 100 > 99). In a similar fashion Xfire
Xfire
Xfire is a proprietary freeware instant messaging service for gamers, that also serves as a game server browser and has various other features. It is currently available for Microsoft Windows. Xfire was originally developed by Ultimate Arena based in Menlo Park, California...
1.99 was followed by 1.100. After over 8 years of development, eMule
EMule
eMule is a free peer-to-peer file sharing application for Microsoft Windows. Started in May 2002 as an alternative to eDonkey2000, eMule now connects to both the eDonkey network and the Kad network...
just recently reached version 0.50a.
To describe program history
WinampWinamp
Winamp is a media player for Windows-based PCs and Android devices, written by Nullsoft, now a subsidiary of AOL. It is proprietary freeware/shareware, multi-format, extensible with plug-ins and skins, and is noted for its graphical sound visualization, playlist, and media library features.Winamp...
released an entirely different architecture for version 3 of the program. Due to lack of backwards compatibility
Backward compatibility
In the context of telecommunications and computing, a device or technology is said to be backward or downward compatible if it can work with input generated by an older device...
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. The developers also humorously joked that they skipped version 4 because "nobody wants to see a Winamp 4 skin", referencing the foreskin
Foreskin
In male human anatomy, the foreskin is a generally retractable double-layered fold of skin and mucous membrane that covers the glans penis and protects the urinary meatus when the penis is not erect...
of a penis.
A similar thing happened with UnixWare
UnixWare
UnixWare is a Unix operating system maintained by The SCO Group . UnixWare is typically deployed as a server rather than desktop. Binary distributions of UnixWare are available for x86 architecture computers. It was originally released by Univel, a jointly owned venture of AT&T's Unix System...
7, which was the combination of UnixWare 2 and OpenServer 5.
Keeping up with competitors
There is a common habit in the proprietary software industry 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
Java Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...
numbering, SCO Unix version numbers, and Corel WordPerfect, as well as the filePro DB/RAD
Rational Application Developer
IBM Rational Application Developer for WebSphere Software is a commercial Eclipse-based integrated development environment , made by IBM's Rational Software division, for visually designing, constructing, testing, and deploying Web services, portals, and Java Enterprise Edition ...
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
Microsoft Access
Microsoft Office Access, previously known as Microsoft Access, is a relational database management system from Microsoft that combines the relational Microsoft Jet Database Engine with a graphical user interface and software-development tools. It is a member of the Microsoft Office suite of...
jumped from version 2.0 to version 7.0, to match the version number of Microsoft Word
Microsoft Word
Microsoft Word is a word processor designed by Microsoft. It was first released in 1983 under the name Multi-Tool Word for Xenix systems. Subsequent versions were later written for several other platforms including IBM PCs running DOS , the Apple Macintosh , the AT&T Unix PC , Atari ST , SCO UNIX,...
.
Microsoft has also been the target of 'catch-up' versioning, with the Netscape
Netscape
Netscape Communications is a US computer services company, best known for Netscape Navigator, its web browser. When it was an independent company, its headquarters were in Mountain View, California...
browser
Netscape (web browser)
Netscape 7 was a series of proprietary cross-platform Internet suites created by Netscape Communications Corporation and then in-house by AOL to continue the Netscape series after Netscape 6. There were three main editions released from the Netscape 7 series; being Netscape 7.0, 7.1 and 7.2...
skipping version 5 to 6, in line with Microsoft's Internet Explorer
Internet Explorer
Windows Internet Explorer is a series of graphical web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems, starting in 1995. It was first released as part of the add-on package Plus! for Windows 95 that year...
, but also because the Mozilla application suite inherited version 5 in its user agent
User agent
In computing, a user agent is a client application implementing a network protocol used in communications within a client–server distributed computing system...
string during pre-1.0 development and Netscape 6.x was built upon Mozilla's code base.
Sun's Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
has at times had a hybrid system, where the actual version number has always been 1.x but three times 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.
Another example of keeping up with competitors is when Slackware Linux jumped from version 4 to version 7 in 1999.
A similar jump has recently taken place with the Asterisk
Asterisk
An asterisk is a typographical symbol or glyph. It is so called because it resembles a conventional image of a star. Computer scientists and mathematicians often pronounce it as star...
open-source PBX construction kit, whose project leads announced that the current version 1.8.x will soon be followed by version 10, which will be followed by version 11, and then 12, and so forth, presumably dropping the other components (and their useful semantic significance) entirely. This change, though, does not seem to be motivated by 'keeping up with competition'. http://blogs.digium.com/2011/07/21/the-evolution-of-asterisk-or-how-we-arrived-at-asterisk-10/
Superstition
- The Office 2007 release of Microsoft OfficeMicrosoft OfficeMicrosoft Office is a non-free commercial office suite of inter-related desktop applications, servers and services for the Microsoft Windows and Mac OS X operating systems, introduced by Microsoft in August 1, 1989. Initially a marketing term for a bundled set of applications, the first version of...
has an internal version number of 12. The next version Office 2010 has an internal version of 14, due to superstitions surrounding the number 1313 (number)13 is the natural number after 12 and before 14. It is the smallest number with eight letters in its name spelled out in English. It is also the first of the teens – the numbers 13 through 19 – the ages of teenagers....
. - CorelCorelCorel Corporation from the abbreviation is a computer software company headquartered in Ottawa, Ontario, that specializes in graphics processing, similar to Adobe Systems...
's WordPerfect OfficeWordPerfect OfficeWordPerfect Office is an office suite developed by Corel Corporation. As of March 2010, the latest version is WordPerfect Office X5 , which is available in three editions: Home & Student, Standard and Professional....
, version 13 is marketed as "X3" (Roman number 10 and "3"). The procedure has continued into the next version, X4. The same has happened with Corel's Graphic Suite (i.e. CorelDRAWCorelDRAWCorelDRAW is a vector graphics editor developed and marketed by Corel Corporation of Ottawa, Canada. It is also the name of Corel's Graphics Suite...
, Corel Photo-PaintCorel PHOTO-PAINTCorel PHOTO-PAINT is a raster graphics editor developed and marketed by Corel since 1992. Corel currently markets the software for Windows operating systems, previously having marketed versions for Linux and Mac OS...
) as well as its video editing softwareVideo editing softwareVideo editing software, is application software which handles the post-production video editing of digital video sequences on a computer non-linear editing systems...
"Video Studio". - NokiaNokiaNokia Corporation is a Finnish multinational communications corporation that is headquartered in Keilaniemi, Espoo, a city neighbouring Finland's capital Helsinki...
decided to jump directly from S60S60 (software platform)The S60 Platform is a software platform for mobile phones that runs on Symbian OS. It was created by Nokia, who made the platform open source and contributed it to the Symbian Foundation. S60 has been used by mobile device manufacturers including Siemens mobile, Lenovo, LG Electronics, Panasonic...
3rd Edition to S60 5th Edition, skipping the fourth edition due to the tetraphobiaTetraphobiaTetraphobia is an aversion to or fear of the number . It is a superstition most common in East Asian regions such as Mainland China, Taiwan, Japan, Korea and Vietnam....
of their Asian customers. - ABBYY LingvoLingvoLingvo, a family of dictionary software for desktop PC, PDA and smartphones, gives translations of words and phrases for 11 European and Asian languages, accompanied with transcription, pronunciation, word usage examples and the list of inflected forms. The languages are: Russian, English, German,...
Dictionary uses numbering 12, x3 (14), x5 (15).
Geek culture
- The S.u.S.E Linux distributionSUSE Linux distributionsSUSE Linux is a computer operating system. It is built on top of the open source Linux kernel and is distributed with system and application software from other open source projects. SUSE Linux is of German origin and mainly developed in Europe. The first version appeared in early 1994, making...
started at version 4.2, to reference 4242 (number)42 is the natural number immediately following 41 and directly preceding 43. The number has received considerable attention in popular culture as a result of its central appearance in The Hitchhiker's Guide to the Galaxy as the "Answer to the Ultimate Question of Life, the Universe, and...
, "the answer to life, the universe and everything" mentioned in Douglas AdamsDouglas AdamsDouglas Noel Adams was an English writer and dramatist. He is best known as the author of The Hitchhiker's Guide to the Galaxy, which started life in 1978 as a BBC radio comedy before developing into a "trilogy" of five books that sold over 15 million copies in his lifetime, a television...
' The Hitchhiker's Guide To The GalaxyThe Hitchhiker's Guide to the GalaxyThe Hitchhiker's Guide to the Galaxy is a science fiction comedy series created by Douglas Adams. Originally a radio comedy broadcast on BBC Radio 4 in 1978, it was later adapted to other formats, and over several years it gradually became an international multi-media phenomenon...
. - The current SlackwareSlackwareSlackware is a free and open source Linux-based operating system. It was one of the earliest operating systems to be built on top of the Linux kernel and is the oldest currently being maintained. Slackware was created by Patrick Volkerding of Slackware Linux, Inc. in 1993...
Linux distribution is version 13.37, referencing leetLeetLeet , also known as eleet or leetspeak, is an alternative alphabet for the English language that is used primarily on the Internet. It uses various combinations of ASCII characters to replace Latinate letters...
.
Overcoming perceived marketing difficulties
In the mid-1990s, the rapidly growing CMMS, Maximo
Maximo (MRO)
IBM Maximo Asset Management software provides asset lifecycle and maintenance management for all asset types on a single platform. It is used to help maximize the value of critical business and IT assets over their lifecycles with workflows by enforcing best practices that yield benefits for all...
, moved from Maximo Series 3 directly to Series 5, skipping Series 4 due to that number's perceived marketing difficulties in the Chinese market, where the number 4 is associated with “death” (see tetraphobia
Tetraphobia
Tetraphobia is an aversion to or fear of the number . It is a superstition most common in East Asian regions such as Mainland China, Taiwan, Japan, Korea and Vietnam....
). This did not, however, stop Maximo Series 5 version 4.0 being released. (It should be noted the "Series" versioning has since been dropped, effectively resetting version numbers after Series 5 version 1.0's release.)
Significance in software engineering
Version numbers are used in practical terms by the consumer, or client
Consumer
Consumer is a broad label for any individuals or households that use goods generated within the economy. The concept of a consumer occurs in different contexts, so that the usage and significance of the term may vary.-Economics and marketing:...
, by being able to compare their copy of the software product against another copy, such as the newest version released by the developer. For the programmer team or company, versioning is often used on a file-by-file basis, where individual parts or sectors of the software code are compared and contrasted with newer or older revisions, often in a collaborative version control system. There is no absolute and definite software version schema; it can often vary from software genre to genre, and is very commonly based on the programmer's personal preference.
Significance in technical support
Version numbers allow people providing support to ascertain exactly what code a user is running, so that they know what bugs might affect a problem, and the like. This occurs when a program has a substantial user community, especially when that community is large enough that the people providing technical support are not the people who wrote the code.
Version numbers for files and documents
Some computer file systems
File system
A file system is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device which contain it. A file system organizes data in an efficient manner and is tuned to the...
, such as the OpenVMS Filesystem, also keep versions for files.
Versioning amongst documents is relatively similar to the routine used with computers and software engineering, where with each small change in the structure, contents, or conditions, the version number is incremented by 1, or a smaller or larger value, again depending on the personal preference of the author
Author
An author is broadly defined as "the person who originates or gives existence to anything" and that authorship determines responsibility for what is created. Narrowly defined, an author is the originator of any written work.-Legal significance:...
and the size or importance of changes made.
Version number ordering systems
Version numbers very quickly evolve from simple integers (1, 2, ...) to rational numbers (2.08, 2.09, 2.10)
and then to non-numeric "numbers" such as 4:3.4.3-2. These complex version numbers are therefore better treated as character strings. Operating systems that include package management facilities (such as all non-trivial Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
or BSD distributions) will use a distribution-specific algorithm for comparing version numbers of different software packages. For example, the ordering algorithms of Red Hat and derived distributions differ to those of the Debian-like distributions.
As an example of surprising version number ordering implementation behavior, in Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...
, leading zeroes are ignored in chunks, so that 5.0005 and 5.5 are considered as equal, and 5.5<5.0006. This can confuse users; string-matching tools may fail to find a given version number; and this can cause subtle bugs in package management if the programmers use string-indexed data structures such as version-number indexed hash tables.
In order to ease sorting, some software packages will represent each component of the major.minor.release scheme with a fixed width. Perl represents its version numbers as a floating-point number, for example, Perl's 5.8.7 release can also be represented as 5.008007. This allows a theoretical version of 5.8.10 to be represented as 5.008010. Other software packages will pack each segment into a fixed bit width, for example, 5.8.7 could be represented in 24 bits: ( 5 << 16 | 8 << 8 | 7; hexadecimal: 050807; for version 12.34.56 in hexadecimal: 0C2238). The floating-point scheme will break down if any segment of the version number exceeds 1,000; a packed-binary scheme employing 8 bits apiece after 256.
Use in other media
Software-style version numbers can be found in other media. In some cases, the use is a direct analogy (for example, Dungeons & Dragons
Dungeons & Dragons
Dungeons & Dragons is a fantasy role-playing game originally designed by Gary Gygax and Dave Arneson, and first published in 1974 by Tactical Studies Rules, Inc. . The game has been published by Wizards of the Coast since 1997...
3.5, where the rules were revised from the third edition, but not so much as to be considered the fourth), but more often it's used to play on an association with high technology and doesn't literally indicate a 'version' (e.g., Tron 2.0
Tron 2.0
Tron 2.0 is a first person shooter computer game developed by Monolith Productions. According to Tron creator Steven Lisberger, Tron 2.0 was the official sequel to the 1982 film Tron, but was later declared non-canon by Tron: Legacy director Joesph Kosinski. The PC version of the game was released...
, a video game followup to the film Tron
Tron
-Film:*Tron , a franchise that began in 1982 with the Walt Disney Pictures film Tron** Tron , a 1982 science fiction film by Disney, starring Jeff Bridges, Bruce Boxleitner, Cindy Morgan, Dan Shor and David Warner...
, or the television series The IT Crowd
The IT Crowd
The IT Crowd is a British sitcom by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris O'Dowd, Richard Ayoade, Katherine Parkinson and Matt Berry...
, which refers to the second season as Version 2.0). A particularly notable usage is Web 2.0
Web 2.0
The term Web 2.0 is associated with web applications that facilitate participatory information sharing, interoperability, user-centered design, and collaboration on the World Wide Web...
, referring to the World Wide Web
World Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...
as used in collaborative projects such as wiki
Wiki
A wiki is a website that allows the creation and editing of any number of interlinked web pages via a web browser using a simplified markup language or a WYSIWYG text editor. Wikis are typically powered by wiki software and are often used collaboratively by multiple users. Examples include...
s and social networking websites.
See also
- Software release life cycle
- Revision controlRevision controlRevision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...
- Product life cycle managementProduct life cycle managementProduct life-cycle management is the succession of strategies used by business management as a product goes through its life-cycle. The conditions in which a product is sold changes over time and must be managed as it moves through its succession of stages.Product life-cycle Like human beings,...
- Software engineeringSoftware engineeringSoftware Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
- Maintenance releaseMaintenance releaseA maintenance release is a release of a product that does not add new features or content. For instance, in computer software, maintenance releases are typically intended to solve minor problems, typically "bugs" or security issues....
- Point releasePoint releaseA point release is a minor release of a software project, especially one intended to fix bugs or do minor cleanups rather than add features. The term implies that such releases are relatively frequent, and is generally used with respect to open source projects being developed in the "bazaar model"...
- Continuous Data ProtectionContinuous data protectionContinuous data protection , also called continuous backup or real-time backup, refers to backup of computer data by automatically saving a copy of every change made to that data, essentially capturing every version of the data that the user saves...
- Microsoft Version NumberMicrosoft Version NumberMicrosoft's version numbering identifies the specific release and revision of Microsoft software products. If you are running Microsoft's Internet Explorer you can view this number by selecting "Help" and "About" from the menu. This version number is composed of 4 parts separated by periods and may...
- Version Control System Forum http://computer-engineering.in/index.php?/topic/25-version-control-system/
External links
- Software Release Practice Howto
- Software version numbering at Everything2Everything2Everything2, Everything2, or E2 for short is a collaborative Web-based community consisting of a database of interlinked user-submitted written material. E2 is moderated for quality, but has no formal policy on subject matter...
- Why most versioning problems are caused by backwards in-compatibility
- http://semver.org/ Semantic Versioning Specification (SemVer)