The versions can be divided into marketing and technical ones.
There is no doubt that semantic versions should be used for libraries.
It is more difficult for applications - these versions are seen by ordinary users. Usually, either this is some kind of marketing version (version 3 with such new features), or year-month (like Ubuntu), or year-year_number (like JetBrains). Usually there is always a fix number at the end.
I usually use the JetBrains style for applications in my projects: year.Release number for the year.the prefix number. For example, 2023.1.0. But this is more for users and UI.
For server applications, it is quite possible to use semantic versions, where the first digit is whether compatibility with old clients is broken or not (which corresponds to semantic versions).
What is the semantic version?
For more information on the specialized website: https://semver.org/lang/ru/
Briefly: the version consists of 3 digits separated by dots: MAJOR.MINOR.THE PATCH.
- An increase in the major version means that incompatible changes have appeared.
- An increase in the minor version means that new functionality has been added (without incompatible changes, but there may be bug fixes).
- Increasing the patch means that only bugs have been fixed without changing the functionality and API.