Semantic Versioning: What's in a number?

Why does software have version numbers?

There are a lot of ways you can give a piece of software version information. No matter how you do it, there are always multiple reasons why you should do it.

This ad is inserted via ochCall2Action and displayed via ochAddAds
Looks like Google ran out of ads to serve... or do you have an ad blocker activated?

#1. Show progress

One of the reasons software has version numbers is to show progress, e.g version 2.0.0 comes after version 1.0.0. It signifies that one release of a piece of software is different from another release of the same software.

#2. Marketing

Another reason to have version numbers for software is marketing: “Version 2.0.0 has 100 new features over version 1.0.0” and this concept translates from software development all the way up to product marketing where new versions of software are released with much fanfare.

#3. Compatibility

Software developers use version numbers for a third reason: compatibility. That means that by looking at two version numbers for the same piece of software, a software developer can make a decision on how compatible these two versions are.

The encoding of that compatibility between versions is what gives version numbers meaning and since semantics is just a fancy word for meaning, this is called Semantic Versioning, or SemVer for short.

SemVer = Semantic Versioning

As said, there are a lot of ways for versioning software. For a software developer it's aim is compatibility information, but not taking into account the best-practices in the 'real-world' will lead to unwanted side effects.

In a discussion I had with a (potential) customer, He told me that he would never use my ochOpenGraph plugin because it was still in beta... How is that possible I asked him, that plugin is used on hundreds of websites and is rock solid due to continued maintenance on the plugin.

According to the customer it was beta because of the version-number I was using: 0.4.3. It was against his policy to use software below version 1.0.0 as everything below 1.0.0 was considered beta at best.

Go figure... The 1.0.0 version he was refering to was my 0.1.0 version. And that version was already created several years ago...

I was lucky for this customer taking the time to explain why he didn't purchase my plugin, but it made me realize that next to what I use the version numbers for: showing progress and compatibility, there was also the marketing aspect of the version numbers. So my way of versioning had a negative impact on usage of my plugins and extensions.

So I have decided to switch my version numbers to SemVer (Semantic Versioning). This is a widely used and accepted standard of software versioning.

SemWhat?

A semantic version number consists of three numbers separate by full stops (or periods). Like 1.3.7. Each of the numbers in a version number has a specified meaning that signifies something about the compatibility of the software. The three numbers are in the format of: breaking.feature.fix.

  • Breaking version = includes incompatible changes to the extension / plugin
  • Feature version = adds new feature(s) in a backwards-compatible manner
  • Fix version = includes backwards-compatible bug fixes

0.1.0 is a work in progress, you can expect that this software is not stable or should be used on production environments. new versions are likely to break functionality

1.0.0 is the first stable release

1.1.0 is the first feature release. in this version a new feature is added. It will not break backward-compatibility.

1.1.1 is the first (bug)fix version. In this version a bug is fixed. it will not break backward-compatibility.

2.0.0 is a stable release that will break backwards-compatibility. When upgrading to this version you should always execute additional steps to 'migrate' functionality from the 1 to 2 version.

More info

This ad is inserted via ochCall2Action and displayed via ochAddAds
Looks like Google ran out of ads to serve... or do you have an ad blocker activated?


Interesting blog? Like it on Facebook, +1 on Google, Tweet it or share this article on other bookmarking websites.

Written by
Pro-Blogger Top Blogger Thought Leader

With a solid background in ICT (operational, tactical and strategic) and years of experience in the community life, I see in communities and community thinking the future for companies.

This future requires another way of thinking and doing; both for executives and employees. It's not about me; it's about you. Your well-being and your (personal) growth.

'What comes around - goes around'

In the world of communities, the old 'management laws' no longer work and are even counterproductive.

I coach leaders and organizations in their quest for how new and servant leadership can contribute to communities and community thinking, and as a result to the growth of the organization.

I do this from the following initiatives:

 


Discuss this article

INFO: You are posting the message as a 'Guest'

Log In or Sign Up

Forgot your password? / Forgot your username?