How to versioning a software?

Earlier, I did some research on how to set version number to a software. I would like to share one of the most common formatting convention called Semantic Versioning (SemVer).

SemVer has the following format:

1.4.3 (12ACF) <- Build number, should correspond with a revision in source control

^ ^ ^

| | |

| | +--- Minor bugs, spelling mistakes, etc.

| +----- Minor features, major bug fixes, etc.

+------- Major version, UX changes, file format changes, etc.

A common instance of SemVer:

3.8.5 - 
Demonstrating the third major release, 
eighth minor and fifth patch version.