Some of you might have noticed the small tweet that was sent out by Hippo CTO Arje Cahn (@arjecahn) on April 7th earlier this year.This tweet, small as it is, is packed with news.
First, it contains one of the first public mentions of the name of our upcoming new release: Hippo CMS 10. But surprisingly, this is not the subject of this blog. In this blog, I want to address the question that immediately comes up second: “Why did you guys step up from 7.9 to 10?”. Actually, Arje’s tweet points to an answer as well; Hippo has introduced Semantic Versioning from now on.
The version numbering as used by Hippo for years has been doing the job fine, and actually it could still be performing well for years to come. However, in the mean time, software versioning itself has evolved and a popular informal standard has emerged, adapted by many software manufacturers. It is referred to as Semantic Versioning.
Semantic versioning has a widespread adoption in the industry. This means that people are used to this numbering scheme and understand what to expect from it. We decided that the release of our new CMS is a great opportunity adopt this best practice.
By design, semantic versioning clearly indicates and communicates to users/customers/partners what to expect from a new version with respect to backwards-compatibility and upgrade requirements. It is clear and makes everything easy:
In the Semantic Versioning scheme, software releases have the format of three numbers, separated by dots, with an optional label added, e.g.:
In general, this takes the form of
The MAJOR version number is issued to introduce new functionality or changes in the system and/or architecture that could break backwards compatibility with previous versions or might introduce incompatible API changes.
In a MINOR version, we introduce new functionality in a less invasive way; backwards compatibility with the major version is not affected.
A PATCH version is mainly intended for small changes or bug fixes only. This is done in a backwards compatible way with the major version.
An additional <label> can be used to add meta data like labels for pre-release or release, i.e. ‘FCS’ or ‘GA’.
This new version numbering scheme allows Hippo to release multiple minor versions per year that bring you new features in a backward compatible fashion, while at the same time provide you with enough room to hold onto a major version if you do not want to go through a full major release update yet.
How does this affect me?
Actually, nothing much is changing. The successor of Hippo 7.9 will not be called 7.10, but we will just erase the rather meaningless ‘7’ and use 10 as ‘major’ version. It is a naming operation only.
If you want to read the full description of Semantic Versioning, take a look at the definition at semver.org.Upgrading from 7.9 to version 10 could be regarded completely the same as upgrading from 7.9 to 7.10 would have been.