Software versioning

Original author: Wikipedia
  • Transfer

Software Product Version Change Methodology


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

   With the existing category of version numbers (major, minor), the numbers are usually set in ascending order and correspond to new developments in software. At the initial level, the version control system is engaged in tracking the gradually appearing versions of electronic information, which allows you to store several versions of the same document, if necessary, return to earlier versions, determining who made the change and when and much more. However, a large number of versioning schemes have been 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 stages of development: these changes are classified by significance levels. The decision about which sequence to change between stages of development is based on the significance of changes at the last stage of development, for example, in a scheme with a 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 to the interface or documentation.

   In later releases, the major number (major) increases when significant transitions in functionality occur, the minor number (minor) is added only when minor functions have been added or corrections have been made. The version number changes if all minor issues are fixed. The following numbers are used for a typical software product: 0.9 (for beta), 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 jump from version 5.0 immediately to 5.5, in order to indicate the addition of several significant functions in the program, but they are not enough to change the main version number, however such jumps are still inappropriate.

   Another approach to using major and minor version numbers is to add an alphanumeric sequence, thereby determining the stage of development of the release: alpha, beta, release candidate. A series of versions using this approach may look as follows: 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 , plus new functions 1.0b3 , then the version becomes 1.0rc1 . If version 1.0rc1 is stable enough, then it becomes 1.0 , however if errors are found in 1.0rc1 that need to be fixed, it will have the number 1.0rc2etc. An important characteristic of this approach is that the stages of development of versions are identical. You cannot make any changes between the latest beta and the first release by the candidate or the last release by the candidate and the finished product. If you have done this, you need to release another version at a lower development stage.

   Well-known examples of alphanumeric versions are Macromedia Flash MX, Adobe Photoshop CS2.

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

Designation Stage Designation


   To assign 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. It is given the third number in cases where it is still planned to test the version or the version is suitable only for internal use.

The sequence in such schemes is as follows:
  • 0 - alpha
  • 1 - beta
  • 2 - release candidate
  • 3 - public release
For instance:
  • 1.2.0.1 instead of 1.2-a
  • 1.2.1.2 instead of 1.2-b2 (beta with several bug fixes)
  • 1.2.2.3 instead of 1.2-rc (release candidate)
  • 1.2.3.0 instead of 1.2-r (for commercial distribution)
  • 1.2.3.5 instead of 1.2-r5 (for commercial distribution with many bug fixes)


Sequence separation


   When published, 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 circuits on the same release:
  • The scheme can use the same punctuation between the sequences: 2.4.13 , 2/4/13 , 2-4-13
  • The choice of the scheme, which numbers to divide and which not, can be contradictory: 2.413
  • A schema can use different punctuation marks within the same sequence: 2.4_13


Sequence Numbers


    Sometimes there is a fourth circuits unpublished number that indicates the assembly ( the build ) software (as it does, the Microsoft ). , Adobe Flash, on the contrary, most distinguishes 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 stream 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 there will be a version1.81 , current releases will be indicated by 1.81a , 1.81b , etc.

Using dates in versions


    The developers of the Wine project used the dates when versioning, 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 . Company of Ubuntu the Linux uses a similar numbering scheme, such as the release in April 2010 numbered like Ubuntu 10.04. Microsoft Office build numbers are also actually encoded dates.

   It should be noted here that when using dates in version numbering, you must 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 by year of release ( Adobe Illustrator 88, WordPerfect Office 2003). Although this move is most often used for marketing purposes, and this version number still exists. For example, the version of Microsoft Windows 2000 Server actually has a Windows NT 5.0 number.

TeX Version Numbering Scheme


   The system TeX uses a unique numbering scheme versions. After the appearance of version number 3, a digit corresponding to the sequence of the number was added after the period to all subsequent updated versions Π this is one of the forms of the unary number system - the version number corresponds to the number 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 her number will be the full number в, in which all remaining shortcomings will become permanent functions. METAFONT adheres to a similar scheme , numbering versions with numbers from the mathematical constant e.

Apple circuit


   , Apple uses a formalized version numbering structure based on the NumVersion structure, it consists of a major version number (1-2 numbers), a minor version number (1 number), a fixed version number (“bug” version) (1 number), and a development stage indicator (prealpha, alpha, beta, etc.) and prerelease numbers (0-255). When writing these version numbers in a line, there was a conditional agreement to omit part of the number indicating the zero or 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 manufacturers use various schemes to indicate the release of their software. For example, the Microsoft Windows operating system appeared on the market with a standard numerical version designation 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 again returned to the standard numerical scheme, although the official name of the version of Windows 7 is 6.1.

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

Hidden Version Numbers


   A software product may have a so-called “hidden” version number that is not indicated in the main product name (usually, all version numbering rules are followed when compiling a hidden number). For example, Java SE 5.0 has an internal number of 1.5.0, and Windows versions starting 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 versioning schemes listed above, the pre-release designation system is used in most cases as a program that works 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). Basically, alpha software products are tested only 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 you are creating a preview of an existing product, then it can 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 indicated by the tag "rc- #", which means release candidate (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 an odd version numbering to indicate releases in development, and even numbering for stable releases. For example, Linux 2.3 was the development series of the second major Linux kernel design, and Linux 2.4 was the stable release series into which Linux 2.3 developed. In the Linux kernel release number, the minor version number was written first, followed by the release number in ascending order. For example Linux 2.4.0 → Linux 2.4.22. After the release of 2.6 kernel in 2004, Linux no longer uses this system, now the release cycle is much shorter. Now they just increase the third number, using the fourth if necessary.

Apple and odd numbers


   Apple had its own peculiarities at the expense of odd numbers, especially during the MacOS system . Even when minor releases were issued, the version number was rarely greater than 1, and if the number needed to be increased they jumped immediately by 5, while offering 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 is missing), 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 step


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

   Unlike companies, the free software community uses version 1.0 as a key development step, meaning 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 slowly approaches 1.0 until all the flaws in preparation for the release are eliminated. MAME Developers, for example, they don’t want to release version 1.0 of the emulator program, arguing that it will never be completely completed, because arcade games will always appear. Version 0.99 simply follows version 0.100. A similar example of Xfire , after the release of 1.99 comes 1.100. So for 6 years of existence, eMule still has not reached version 0.50.

Program history


   Winamp released a completely different configuration of the third version of the program, in which there was no backward compatibility with plugins 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 skipped ... The same thing happened with UnixWare 7, which was a mix of UnixWare 2 and Open Server 5.

How to keep up with competitors


   In the proprietary software industry, there is a common habit of skipping the numbering of major and minor versions for marketing purposes.

   This can be seen in the example of several Microsoft and America Online products , as well as in the Sun Solaris version numbering system , Java Virtual Machine , in Unix and Corel Word Perfect versions of SCO . 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 a single intermediate. A slight difference can be seen between the versions of AOL's PC client software, although they only number the major releases - 5.0, 6.0, 7.0, etc. In the same wayMicrosoft Access jumped from version 2.0 to version 7.0 to catch up with versioning of Microsoft Word .

   Microsoft also had the goal of catching up with the version numbering of the Netscape browser by skipping version 5 and immediately launching the sixth version of Internet Explorer.

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

Superstition


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

   Corel's version 13 of the WordPerfect Office program is listed 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 , booming in the Chinese market , jumped from the Maximo Series 3 version right away to Series 5, skipping Series 4, because the wrong pronunciation of number 4 in Chinese could mean “death” or “failure”. Although this, however, did not stop the Maximo Series 5 with the release of release 4.0. It should be noted that the Series numbering stopped there, but resumed quite successfully, starting with the release 1.0.

Significance of Version Numbering in Software Development


   Version numbers are used in practical terms by the consumer or client in order to be able to compare their copy of the software product and the new version released by the developer. The team of programmers and companies use version numbering to compare individual parts and sectors of the program code of some versions with others, usually working 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.

The illustrations from the article: " A successful Git branching model " were used.

Translation was made by Natalya Volodina , an employee of Chyrius .

Also popular now: