Versioning Your Software Correctly : A Guide to Semantic Versioning

  • major-version: a breaking release which is backwards incompatible
  • minor-version: a feature addition which maintains backward compatibility
  • patch: a bug fix, without any feature addition, and maintains backward compatibility
  • pre-release-specifier: the existence of a dash-separated pre-release-specifier tells your users that any given release might not be fully stable. It can be added to any release at any point, and the test-specifier in itself can have versions, indicated by semantic integer or other standing versioning protocols.
  • Having a 0 as your major-version tells users that the release is a development release and features might be broken.
  • In addition to semantic versioning and pre-release specifier, build metadata can also be added to version names by using a + at the end of the semantic name. Eg. 1.0.1-alpha.beta+0023
  1. 0.1.33 - a development release, with an additional feature release and the 33rd bug-fix.
  2. 1.4.2-alpha.2 - a breaking release from the previous major-version (0), with the 4th backward compatible feature addition and 2nd bug-fix. Additionally, this is an alpha pre-release, with the pre-release version set at alpha.2 - the second backward compatible iteration over the pre-release. Note that version 1.4.3 would have higher precedence over 1.4.2-alpha.x.

--

--

Hacker | Engineer | Building Enterpret | ex-Samsung, IIIT-H | vivekkaushal.com

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Vivek Kaushal

Vivek Kaushal

Hacker | Engineer | Building Enterpret | ex-Samsung, IIIT-H | vivekkaushal.com