Very interesting and well explained, the Semantic Versioning specification is authored by Tom Preston-Werner, inventor of Gravatars and cofounder of GitHub. He beautifully explains here – http://semver.org/
In short, given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner, and
PATCH version when you make backwards-compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.