# Semantic versioning

DevFeed: [Semantic versioning](<https://devfeed.tech/articles/semantic-versioning-33372.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2011/07/10/semantic-versioning>)

Published: 2011-07-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [version](<https://devfeed.tech/topics/version.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Software](<https://devfeed.tech/topics/software.md>), [.NET](<https://devfeed.tech/topics/net.md>)

Tags: [compatibility](<https://devfeed.tech/tags/compatibility.md>), [net](<https://devfeed.tech/tags/net.md>), [releases](<https://devfeed.tech/tags/releases.md>), [version](<https://devfeed.tech/tags/version.md>), [versioning](<https://devfeed.tech/tags/versioning.md>)

## AI overview

The article explains semantic versioning and its major, minor, and patch conventions. It argues that major versions should indicate backward-incompatible changes, while minor and patch releases represent new features and bug fixes, and it relates the scheme to .NET assembly version attributes.

## Source excerpt

I've seen some interesting software version sequences. Like Windows 3, 3.1, 3.11, 95, 95, ME, XP, Vista, 7. Or Oracle DBMS v5, v6, 7, 8, 8i, 9i, 10g , 11g (what does the g mean??). I've seen all sorts of version schemes to designate major versions, minor versions, patches, and other types of releases. (The worst ones are always when marketing gets involved).Tom Preston-Werner formalized the major-minor-point release (X.X.X) scheme at semver.org. I highly recommend anyone who considers themselves a professional developer to read every word in the article at semver.org. The beauty of semantic versioning is that there isn't anything new or innovative about it at all. It's all what you already know to be true. All versions <1.0.0 are development versions. Once 1.0 hits, the public interface is solidified. If and only if you break backwards compatibility you have to increase the major version. Minor versions and point releases (1.X.0 and 1.0.X) are for various levels of new features and bug fixes.When you release software labeled with semantic versions you make it easy for people to quickly asses how significant the release is (I might skip a point release and upgrade to minor releases, but I might avoid a major release due to the incompatibilities it might cause). It also forces the developers to exercise restraint in breaking compatibility with previous releases.The trouble with semantic versions in the corporate world is that marketing always has ulterior motives. They want to release a major version to make the product feel alive; they want to downplay breaking changes to a minor version to keep customers; or they want to introduce new terms that mean nothing to the average user (XP for eXPerience, Vista because it sounds cool). Those names are great for development code-names but they detract from a buyer's experience (I use the term buyer loosely to mean any potential user) in determining compatibility between products.In .NET assemblies, there are four segments su