Set of Rules to Standarize Software Versions: Semantic Versioning

Ahmet Burul
3 min readJan 8, 2022

Game and Application Academy which is realized in coorganization of Google Turkey continues. One of the first terms I refreshed in my memory during Unity Beginner Tutorials was that Unity is using Semantic Versioning as a versioning type. I wondered more details about Semantic Versioning and had a detailed search on it. I’m excited to be sharing with you as a summary.

Semantic Versioning (also known as SemVer) is a commonly adopted version order that uses a sequence of three digits (Major.Minor.Patch). It has been on the rise over the last few years.

The software that is versioned with SemVer allows to work in accordance with software engineering discipline. Thanks to this layout, the version numbers and the way the version numbers change become a description of what has changed in the code from one version to the next.

As mentioned,there are 3 component numbers in the format of Major.Minor.Patch.

X (Major Version) represents to radical changes which are able to break API. So major changes after 1.0 are going to have backwards incompatibilities. When you increase the major version number, you should be increasing it by one but reset both patch version and minor versions to zero. As an example,If your current version number is 2.4.1,you should set it to 3.0.0 when you do an incompatible modification on your system.

As an additional information,your current version should be 1.0.0 when you first release an application. Version number starts with 0 before the system had been released.

Y (Minor Version) represents to significant changes which would not break the API but also does not exist in current version. The version skips when a new functionality in a backwards compatible manner added to the software. When increasing the minor version,it should be increased by one and the patch version must be reset to zero. For example If your current version is 4.3.7,next version is expected to be 4.4.0.

Z (Patch Versions) represents to bug fixes in a backwards compatible manner. There are no functionality changes in the patch version upgrades. Patch version number should increase as you fix a bug. If you fix another bug in the version of 1.2.9,you should increase SemVer to 1.2.10. There is no limit to these numbers.

You could understand better If you check out the following scenerio:

  • You built the software for the first time and added key features. Version number: 0.1.0
  • You added another feature to the software. Version number: 0.2.0
  • You found a bug in the software and fixed it. Version number: 0.2.1
  • You added another feature to the software. Version number: 0.3.0
  • You released the software for the first time. Version number: 1.0.0

As a consequence,SemVer helps developers to keep software in some rules and having those to follow the version of any software is a good idea to manage dependencies in a regular format.It initiates a clear and easy-to-follow project management process.

--

--

Ahmet Burul

Software Engineer — 3D Artist — Game Developer — Team Worker