📜 ⬆️ ⬇️

Software versioning

Software Product Version Change Methodology


Software versioning is the process of creating unique names or numbers for different versions of software products.

With the existing version number category (main, minor), the numbers are usually set in increasing order and correspond to new software developments. At the initial level, a version control system is involved in tracking gradually emerging versions of electronic information, allowing you to store multiple versions of the same document, return to earlier versions, if necessary, determining who made this or that change and when. However, a large number of version numbering schemes were created to track software changes.

Each stage of software development corresponds to a unique identifier, which consists of a sequence of numbers or letters. In some schemes, sequential identifiers are used to determine the significance of changes between development stages: these changes are classified by significance levels. The decision about which sequence to change between the development stages is based on the significance of the changes at the last development stage, for example in the scheme, with the version consisting of a sequence of 4 numbers, the first number can be added only when the code is completely rewritten, while the fourth number changes with minor changes in the interface or documentation.
')
In later releases, the major number (major) increases when significant transitions in functionality occur, a minor number is added only when minor functions have been added or corrected. The version number changes if all minor issues are fixed. For a typical software product, the following numbers are used: 0.9 (for beta versions), 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 sometimes skip from version 5.0 to 5.5 immediately to mark the addition of several significant functions in the program, but they are not enough to change the main version number; nevertheless, such jumps are still irrelevant.

Another approach to using major and minor version numbers is to add an alphanumeric sequence, thereby determining the development stage of the release: alpha, beta, release candidate. A series of versions using this approach may look like this: if new functions are added to versions 0.5, 0.6, 0.7, 0.8, 0.9 , they can be called 1.0b1, 1.0b2 , another plus new functions 1.0b3 , then the version becomes 1.0rc1 . If version 1.0rc1 is fairly stable, then it becomes 1.0 , but if errors are found in 1.0rc1 that need to be fixed, it will have the number 1.0rc2 , etc. An important feature of this approach is the respect for the identity of the development stages of versions. You can not make any changes between the latest beta version and the first release of the candidate or the latest release of the candidate and the finished product. If you did this, you need to release a different version at a lower stage of development.

Famous examples of alphanumeric versions are Macromedia Flash MX, Adobe Photoshop CS2.

Sometimes the presence of the human factor in the creation of version numbers leads to errors in changing versions. For example, developers can change the sequence between versions, even if one line of code has not been rewritten, only to create a false impression that significant changes have been made.

Designation Stage


For assigning alpha or beta status to releases that are not yet stable enough for practical use, there are schemes where zero is used in the first sequence. He put the third number in those cases where it is planned to test the version or version is only suitable for internal use.

The sequence in such schemes is as follows:For example:

Separation of sequences


When publishing, sequences can be separated by punctuation marks. The choice of punctuation marks and their use depends on the scheme.

The following list shows possible examples of split schemes on the same release:

Sequence numbers


Sometimes there is a fourth unpublished number in the charts, which stands for software build ( build ) (as Microsoft does). Adobe Flash, on the contrary, most of all marks the fourth version number: 10.1.53.64 . Some companies also include a build date. Version numbers may include letters and punctuation marks: Lotus 1-2-3 Release 1a.

Sequence increment


There are two different ways to increment a sequence of numbers in a version. Most free software products use an uninterrupted flow of sequential 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 product is MediaWiki . Other programs use decimal numbers: 1.7 , 1.8 , 1.81 , 1.82 , 1.9 , etc. In such programs after version 1.8 will be version 1.81 , current releases will be denoted 1.81a , 1.81b , etc.

Using dates in versions


The developers of the Wine project used dates when numbering versions, they indicated the year, month and day of release: “Wine 20040505” . Now Wine uses the “standard” numbering of releases, the latest version of 2010 is number 1.2 . Ubuntu Linux uses a similar numbering scheme, for example, the April 2010 release is numbered as Ubuntu 10.04. Microsoft Office build numbers are also actually coded dates.

Here it should be noted that when using dates in the numbering of versions, it is necessary to use the ISO scheme, that is, first indicate the year, then the month, and then the day (YYYY-MM-DD), and the hyphen can be omitted.

There are also examples of version numbering year of release ( Adobe Illustrator 88, WordPerfect Office 2003). Although such a move is most often used for marketing purposes, the real version number still exists. For example, the version of Microsoft Windows 2000 Server actually has Windows NT 5.0.

TeX Version Numbering Scheme


TeX uses a unique version numbering scheme. After the appearance of version number 3, a number corresponding to the number sequence was added to all subsequent updated versions after the point - this is one of the forms of the unary numeral system - the version number corresponds to the number of the number in the number. The latest version number is 3.1415926. This method reflects the stability of the TeX system. TeX developer Donald Knuth said that the latest version will be released after his death and its number will be the full number Π, in which all remaining flaws will become permanent functions. A similar scheme follows METAFONT , enumerating versions with numbers from a mathematical constant e.

Apple schema


, Apple uses a formalized version numbering structure based on the NumVersion structure, it consists of the main version number (1-2 numbers), the minor version number (1 number), the revised version number ("bug" version) (1 number), the development stage indicator (pre-alpha, alpha, beta, etc.) and prerelease numbers (0-255). When writing these version numbers in a line, there was a conditional agreement to omit the part of the number designating zero or the last stage of development. For example: 1.0.2b12, 1.0.2 (instead of 1.0.2f0), and 1.1 (instead of 1.1.0f0) .

Other schemes


Software makers use various schemes to indicate the release of their software. For example, the Microsoft Windows operating system appeared on the market with a standard numeric version numbering scheme (from Windows 1.0 to Windows 3.11). Later, Microsoft developers began to separate version names for marketing purposes, that is, first using the release year (Windows 95 (4.0), Windows 98 (4.10), Windows 2000 (5.0)), then alphanumeric codes (Windows Me (4.90), Windows XP (5.1)), followed by brand names (Windows Vista (6.0)). Judging by the latest release of Windows 7, Microsoft has returned to the standard numerical scheme, although the official name of the Windows 7 version is 6.1.

In the Debian project, the major / minor scheme is used for the releases of the operating system, and the names from the Toy Story cartoon are used for the names of software products in development.

Hidden version numbers


A software product may have a so-called “hidden” version number, which is not indicated in the main product name (usually, in compiling a hidden number, all version numbering rules are observed). For example, the Java SE 5.0 version has the internal number 1.5.0, and the Windows versions from NT 4 continue the internal standard version numbering: Windows 2000 is NT 5.0, XP is Windows NT 5.1, 2003 is NT 5.2, Vista is NT 6.0 and 7 This is NT 6.1.

Preliminary versions of software products


Together with the various version designation schemes listed above, the system designating preliminary versions is used in most cases as a program that makes its way through all stages of software development. Programs that are in the early stages of development are called “alpha” (the first letter of the Greek alphabet). More mature programs, but not yet ready for release, are called “beta” (the second letter of the Greek alphabet). In general, alpha software products are only tested by developers, while beta products are distributed to public testing. These two versions of the product are usually assigned a number less than 1, for example, 0.9, since 1.0. This is for a public release. However, if a preliminary version is created for an already existing product, then it may be indicated by the letter “a” (meaning alpha) added to the version number of the finished product, for example, version 2.5 - preliminary version 2.5.a or 2.5a. Products ready for release can be marked with the tag "rc- #", which means release candidate. When the version is already released, the tag is removed.

Odd Numbers in Version Designation for Release Development


Between the 1.0 and 2.6.x series, the Linux kernel used odd version numbering to designate releases in development, and for stable releases even numbering. For example, Linux 2.3 was a series of development of the second main design of the Linux kernel, and Linux 2.4 was a series of stable releases in which Linux 2.3 evolved. In the Linux kernel release number, the minor version number was first written, and then the release number in ascending order. For example, Linux 2.4.0 → Linux 2.4.22. After the release of the 2.6 kernel in 2004, Linux no longer uses this system, now the release cycle is much shorter. Now they simply increase the third number, using the fourth if necessary.

Apple and odd numbers


Apple had its own particulars about odd numbers, especially during the MacOS system. Even then, when minor (minor) releases were released, the version number was rarely more than 1, and if the number needed to be increased, they jumped immediately to 5, suggesting a slight change in magnitude between the main and minor releases (for example, 8.5 means "eight and a half" , and 8.6 means "eight and a half point one"). The completed sequence of versions looks like this: 1.0, 1.1, 2.0, 2.1, 3.0, 3.2 (3.1 omitted), 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.

Version 1.0 as a key development stage


Developers of proprietary software always name the first release of the program version 1, and then increase the number of the main version after each rewriting of the code. This means that the program can reach version 3 in just a few months of development, while it still may not become stable and reliable.

Unlike companies, the free software community uses version 1.0 as a key development stage, denoting that the product is complete, it has all the necessary functions, and it is reliable enough for public use.

According to this scheme, the version number is slowly approaching 1.0, while all the shortcomings in preparing for the release are eliminated. The developers of MAME , for example, do not seek to release version 1.0 of the emulator program, arguing that it will never be fully completed, because arcade games will always appear. Version 0.99 is simply followed by version 0.100. A similar example of Xfire , after the release of 1.99 is 1.100. So for 6 years of its existence, eMule has not yet reached version 0.50.

Program history


Winamp has released a completely different configuration of the third version of the program, in which there was no backward compatibility with plug-ins and other resources of the previous version. However, this version became fully compatible with versions 2 and 3, but was numbered fifth, that is, 4 was missed ... The same thing happened with UnixWare 7, which was a connection of UnixWare 2 and Open Server 5.

How to keep up with competitors


In the proprietary software industry, there is a common habit of jumping into major and minor version numbers for marketing purposes.

This can be seen on the example of several Microsoft and America Online products, as well as in the Sun Solaris version numbering system, Java Virtual Machine , in SCO Unix and Corel Word Perfect versions. The filePro DB / RAD software products were numbered from 2.0 to 3.0 to 4.0 to 4.1 to 4.5 to 4.8 to 5.0, and they are already preparing release 5.6, without having any intermediate. There is a slight difference between the AOL's PC client software versions, although they only number the major releases - 5.0, 6.0, 7.0, etc. In the same way, Microsoft Access jumped from version 2.0 to version 7.0 to catch up with the version numbering of Microsoft Word versions.

Microsoft also had a goal to catch up with the version numbering of the Netscape browser, skipping version 5 and releasing the sixth version of Internet Explorer right away.

Developed by Sun, the Java programming language in places had a mixed numbering system, in which the finished version number was always 1.x, but three times the version was sold only with reference to x:Sun also missed the first version of Solaris , where Solaris 2.8 (or 2.9) was the real version number of Solaris 8 (or 9), according to marketing documents.

Superstitions


The 2007 release of the Microsoft Office program had an internal version number of 12. The release of Office 2010 was internally numbered already 14, due to the bad reputation of the devil's dozen.

Corel WordPerfect Office version 13 is marketed as “X3” (Roman numeral 10 and “3”). The procedure was repeated in the next version of X4.

How to overcome marketing difficulties


In the mid-1990s, CMMS and Maximo , which were rapidly developing in the Chinese market, jumped from the Maximo Series 3 version to the Series 5 right away, skipping the Series 4, as the incorrect pronunciation of number 4 in Chinese could mean "death" or "failure." Although this, however, did not stop Maximo Series 5 with the release of release 4.0. It should be noted that the Series numbering stopped at this, but it resumed quite successfully, starting with release 1.0.

Significance of Version Numbering in Software Development


Version numbers are used in practical terms by the consumer or customer in order to be able to compare their copy of the software product and the new version released by the developer. A team of programmers and companies use version numbering to compare individual parts and sectors of the program code of some versions with others, usually cooperating with the Version Control System. There is no absolute and definite numbering scheme for software product versions, so very often numbering depends on the personal choice of programmers.

Used illustrations from the article: " A successful Git branching model "

The translation was made by Natalia Volodina, an employee of the company " Chyrius ".

Source: https://habr.com/ru/post/118756/


All Articles