Go ahead and open an instance of your favorite software and select Help -> About from the main menu. Doing so will bring up a screen similar to this one, on which you will find a version number, and quite possibly even build information:
Source: Cubase Pro 9.5 Software
Many software products also show the version number on the splash screen displayed when you launch the software. In fact, just about all software has a version number. It is important because, as software companies continually strive to improve their software after it is first released to the market, they need to distinguish between earlier and later versions of the software. They do that by assigning a version number to each new release.
If you are a developer of a software product, or even a code library, you will need to know how to generate a version number every time you release a software update. If you are unsure of how to do that, then you have come to the right place! By the end of this programming tutorial, you will know exactly how to keep track of changes to your code in such a way that you will easily be able to ascertain both the order of releases and their degree of change.
What are the parts of a version number?
If you look closely at the version number in the screen capture above, you will see that it is composed of three numbers, separated by a period (.) – 9.5.0. In practice, different companies may employ anywhere from two to four sets of numbers. Each number relays information about a different level. As a standard practice, the numbers give the following information:
- First Number: This is the major release number and indicates major incompatible changes or additions to the product.
- Second Number: This is the minor release number and indicates minor changes to the product, or improvements to a functionality.
- Third Number: This number is used to indicate nominal changes like patches or bug fixes.
- Fourth Number: This is used only in special cases when there are changes even less significant than bug fixes and patches.
Although this is one of the most common formats used by organizations for versioning a software, there is no single standard practice when it comes to software versioning. Some of the most prevalent conventions and techniques for versioning include:
- Semantic Numbering.
- Apache APR.
- Date of release.
- Alphanumeric codes.
What is semantic numbering?
Since Semantic Numbering is the most ubiquitous versioning protocol, let’s take a moment to explore it more closely.
Semantic versioning follows the above defined pattern of Major, Minor, and Patch fixes. The degree of change is conveyed by increasing the numbers accordingly. For example, a change from 2.8.11 to 3.0.0 signifies major development or advancement and shows that the product has evolved greatly, to the point where the software becomes almost incompatible with the previous versions.
As a convention, a value of “0” is assigned to the major section until a product has been released. This denotes that the product is still being tested and is available to members of the development team(s), organization, or on a “beta” trial basis. Once launched, the developers will usually assign a version number of 1.0.0 unless the software underwent additional changes before release.
In the case of minor changes, the 2nd number of the version number is altered. This is typically done when new features are added to existing functionality of the product. Here, the product still remains highly compatible with the previous versions.
Finally, the 3rd part of the version number depicts only nominal changes like patches and bug fixes. In some cases, these changes might not even be identifiable and not affect the user’s overall experience in any perceivable manner.
The role of versioning in software development and maintenance
Now that we have listed some of the most common numbering schemes and gone over the finer points of Semantic Numbering, it is time to consider the importance of version numbering in software development and maintenance. Aside from telling us about the most current version of the software, the version number also ensures the following benefits:
- Makes changes more readily identifiable.
- The main reason for employing version numbering is to help identity the various development stages and releases of a software product, by making every version identifiable and unique. Semantic Versioning in particular, allows us to quickly scan the numbers and surmize the order in which the changes were released, making it easy to list all the versions of a product in chronological order.
- Another benefit of Semantic Versioning is that it helps organizations and consumers alike to identify the core aspects and features of the given version.
- Easier product comparison.
- Having different version numbers makes it easier for stakeholders to compare a specific release with other versions as well as enable people to draw the differences and trace the growth and enhancements.
- For instance, if you need to compare the performance of a product or service in the present time, with its performance at some point of time in the past, you will need the version numbers to identify and distinguish between two releases.
- Makes communication easier.
Anytime you want to raise an issue concerning a software product, the support form will ask for the specific version number affected. Th same goes for user communities like Github. Without an identifiable version number, you have to go around referring to the release as the “one that had the features X, Y, and Z”. This is akin to finding a house without an address! By assigning an identity to the different versions of a product, version numbers make it much easier to reference a particular version.
Final Thoughts on Software Versioning
In this programming tutorial, we learned how developers can keep track of changes to our code in such a way that we can more easily ascertain both the order of releases and their degree of change. Versioning protocols like Semantic Numbering offer make software changes more readily identifiable and offer a range of additional benefits such as easier product comparison and communication with other IT personnel and enthusiasts alike.
Subscribe to the Developer Insider Newsletter
From the hottest programming languages to commentary on the Linux OS, get the developer and open source news and tips you need to know. Delivered Tuesdays and Thursdays