Im Bereich der Bibliotheken im Open-Source Sektor, insbesondere im JavaScript / Node und .NET Umfeld hat sich inzwischen das sogenannte Semantic Versioning durchgesetzt:
http://semver.org/
Kurz: Major.Minor.Patch.
Optional gibts noch ein Suffix, das z.b. sonstige Metadaten wie Buildzeitpunkt mittracken kann und/oder Prerelease-Versionen (zb. beta-builds) deklariert.
Patch wird bei Bugfixes hochgedreht.
Minor wird bei neuen Features hochgedreht.
Major wird hochgedreht sobald es breaking changes gibt.
Prerelease-Informationen werden mit einem Minus angehaengt, Build-Metadaten mit einem plus, und sie duerfen auch mehrere Elemente behinhalten.
Beide sind rein
ASCII alphanumerisch plus Bindestrich.
Beispiele:
1.0.0-beta.1 (ist die erste Beta)
1.0.0-beta-1 (ist die erste Beta, andere schreibweise)
3.2.17+20170623 (wurde am 23.06.2017 gebaut)
3.2.17+date.20170623 (wurde am 23.06.2017 gebaut, und ist etwas sprechender)
2.1.0-beta.2+branch.feature-brmpft.svnrev.57 (ist ein build zur beta 2 und wurde aus
SVN revision 57 aus dem branch feature-brmpft gebaut)
Normalerweise sieht man nur normale und prerelease versionen. Metadaten sind eher selten und werden meist nur in internen builds zum testen verwendet.