Semantic version numbers

A drawing of a cartoon man pointing upwards

Heads up! This post was written in 2013, so it may contain information that is no longer accurate. I keep posts like this around for historical purposes and to prevent link rot, so please keep this in mind as you're reading.

— Cory

Gone are the days of arbitrarily assigning version numbers to every new software release. With semantic versioning, the question of how and when to bump versions is made simple.

According to, the syntax for version numbers should go like this: MAJOR.MINOR.PATCH

When you release a new version, it's easy to determine which numbers to increment:

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards-compatible manner, and
  3. PATCH version when you make backwards-compatible bug fixes.

The entire spec is actually quite short and simple (for a spec), but the concepts therein will [hopefully] change the way developers version their software in the future. While many projects already follow similar conventions, there are still many that don't. This is especially true in the case of smaller projects, where developers seem to arbitrarily bump version numbers without considering the impact such changes may have on their users.

If you don't have an existing standard for versioning your software, help make the world a better place and consider adopting SemVer in your next project!