Software Semantic Versioning


The quote "Be the best version of yourself" holds true for a software too as software is a working entity which has its own properties and behaviour. Software is a great combination of artistry and engineering. So why should one not be artful to version that engineered piece of software. Semantic versioning or SemVer is a versioning system which provides a universal way of versioning software development projects. This helps us keep track of what's going on in the development process of the software.

SemVer is a three component system which has a format of x.y.z where  'x' stands for a major version, 'y' stands for a minor version and 'z' stands for a patch. Thus, we have major.minor.patch.

The patch is bumped up, if it is just the bugs which have been fixed while keeping the contract same (refactoring). If some functionality is added or new features are implemented in a backwards compatible way, then minor is bumped up. Finally, if some backward incompatible changes are made  which is likely to break the existing API, then major is bumped up. Following these guidelines give meaning to the version numbers. It always starts with 0.1.0 and till we reach the version 1.0.0, we are on the development phase. Pre-releases can also be defined by appending a hyphen and an identifier to a version. 

There is no legitimate excuse which exists for not using the versioning system. It helps you avoid the dreaded place called "dependency hell". If there are many dependencies, then releasing new versions can became a nightmare at the blink of an eye. Without compliance to some standard set of formal specification, version numbers essentially become useless for managing the dependencies. So all one needs to do to make their lives easier is to decide to start following the versioning system and then simply adhere to these simple rules.

Comments

Popular posts from this blog

Touch Typing

Argumentum Ad Verecundiam (Appeal To Authority)

Learning Linux The Hard Way (LLTHW)