semantic versioning

Semantic Versioning

versioning system that represents the product version, using a formal convention based on 3 parts in alpha numerics.

format

a 3-component number in the format of “X.Y.Z”, in which

  • X: Major version
  • Y: Minor version
  • Z: Patch version

the purpose of SemVer

Semantic Versioning represents changes and bug fixes. It shows how software moves closer to release target through different development phases.

It tracks what’s going on with the software as new plugins, add-ons, libraries and extensions are being built almost everyday.

in software dependency context

we have a definition of dependency software, means a software depends on another software. using SemVer as rule of version release will better help manage dependency.

for example

a website depends on Hugo platform. In the event that these twos both follow Semver, when Hugo updates from version 4.2.0 to 4.2.1, you’ll know for sure it’s not a breaking change, you’ll be able to update the website dependency without thinking twice.

how SemVer works

  • Major number: For incompatible API changes.
  • Minor number: Roll-out new backwards-compatible features.
  • Patch number: Introduce backwards-compatible bug fixes.

the first version starts at 0.1.0 and not at 0.0.1, since no bug fixes there. we always kick off with a set of features on the first draft. what’s done before 1.0.0 is only the development phase. we only ship out product once it comes with something useful.