Getting Semantic with Software Version Numbering

It is often said that one of the hardest things in software development is naming things. You may have heard this quote:

This not only includes naming variables, functions and classes but also extends to naming/numbering software versions and releases.

Communicating Versions

Naming in software development is at its core communication. When naming a software version or release we should communicate as much as we can about the content of the release. Without standard numbering, understanding what changed between versions can become a nightmare: What’s the difference between v1.2.4 and v1.3.0 again? Does v4.3.1 have that breaking change or was that v.4.3.3?

Semantic Versioning

To help cut through the confusion and clearly convey the scope of changes in a software release, Ruths.ai has adopted Semantic Versioning (SemVer). SemVer is a simple software standard that has been widely adopted to help software version numbers clearly communicate changes to end users.

How it Works

A version number is comprised of three numbers separated by a dot: MAJOR.MINOR.PATCH (e.g. v1.4.3).

  • The MAJOR number (1 on our example) is incremented only when incompatible API changes are made. These are drastic changes that can affect how you interact with the software.
  • The MINOR number (4 in our example) is incremented when new features or functionality are added in backwards-compatible manner.
  • The PATCH number (3 in our example) is incremented only when there are small backwards-compatible bug fixes.

In Practice

Knowing these Semantic Versioning rules, it is possible to see how a new version will impact you. Here are some examples:

  • Moving from v1.4.3 to v1.4.4
    • Includes only bug fixes
    • Update should be seamless
  • Moving from v1.4.3 to v1.5.0
    • Includes new features and possibly bug fixes as well
    • Update should not impact current use
  • Moving from v1.4.3 to v2.0.0
    • A new product or breaking changes to existing product
    • Breaking changes included

For more information checkout the official SemVer standard at https://semver.org/.

Leave a Comment

Your email address will not be published. Required fields are marked *