Nie ma na to uniwersalnego standardu - spójrz na stronę wikipedii ("software versioning"), zobaczysz że to naprawdę obszerny temat.
Popularny i dość intuicyjny jest tzw. semantic versioning (też możesz wyguglować). Streszczając: wersję zapisujesz X.Y.Z, gdzie:
- Z zwiększasz gdy nowa wersja tylko naprawia bugi,
- Y zwiększasz gdy dodajesz coś nowego ale nie łamiesz kompatybilności,
- X zwiększasz gdy łamiesz kompatybilność wsteczną.
(plus wyjątek że gdy X==0, na przykład 0.8.9, kompatybilność nie ma znaczenia i wszystko może się zmieniać.)
Ale jak wspomniałem wyżej, każdy robi to inaczej. Na przykład node.js istnieje od 6 lat i obecnie ma wersję 0.12.7. Natomiast z projektów które na pewno używają SemVer, teraz kojarzę przede wszystkim język programowania Rust (który parę miesięcy temu osiągnął 1.0).