Semantic Versioning is a conceptual software versioning scheme which defines concepts of API compatibility and a specific, strict set of versioning rules intended to avoid dependency hell.
A number of software packages have made a commitment to apply the concepts of Semantic Versioning, or help to enforce its rules. For example: npm, and other package managers often help manage software dependencies using these rules.
Not all software versioning applies these semantics, which can lead to confusion. Semantic Versioning 2.0.0, the current specification, was originally written by Tom Preston-Werner, and is a community based effort hosted at https://github.com/semver/semver.