We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.

This lesson's interactive features are locked, please to keep using them

Semver

It's kinda weird to just name tags any old thing. We're developers, we like structure, sameness, and sometimes even bike-shedding.

"Semver", or "Semantic Versioning", is a naming convention for versioning software. You've probably seen it around, it looks like this:

The "v" isn't technically part of "semver", but it's often there to say "this is a version".

It has two primary purposes:

  1. To give us a standard convention for versioning software
  2. To help us understand the impact of a version change and if it's safe (how hard it will be) to upgrade to

Each part is a number that starts at 0 and increments upward forever. The rules are simple:

  • MAJOR increments when we make "breaking" changes (this is typically a big release, for example, Python 2 -> Python 3)
  • MINOR increments when we add new features in a backward-compatible manner
  • PATCH increments when we make backward-compatible bug fixes

To sort them from highest to lowest, you first compare the major versions, then the minor versions, and finally the patch versions. For example, a major version of 2 is always greater than a major version of 1, regardless of the minor and patch versions.

As a special case, major version 0 is typically considered to be pre-release software and thus the rules are more relaxed.