Версии можно разделить на маркетинговые и технические.
Для библиотек без сомнения стоит использовать семантические версии.
Для приложений сложнее – эти версии видят обычные пользователи. Обычно либо это какая-то маркетинговая версия (версия 3 с такими-то новыми функциями), либо год-месяц (как у Ubuntu), либо год-номер_в_году (как у JetBrains). Обычно в конце еще всегда есть номер фикса.
Обычно для приложений в своих проектах использую стиль JetBrains: год.номер_релиза_в_году.номер_фикса. Например, 2023.1.0. Но это скорее для пользователей и UI.
Для серверных приложений вполне можно использовать семантические версии, где первая цифра – сломана ли совместимость со старыми клиентами или нет (что соответствует семантическим версиям).
Что такое семантическая версия?
Подробно на специализированном сайте: https://semver.org/lang/ru/
Кратко: версия состоит из 3х цифр через точки: МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ.
- Увеличений мажорной версии означает, что появились несовместимые изменения.
- Увеличение минорной версии означает, что добавлена новая функциональность (без несовместимых изменений, но возможно есть и исправления ошибок).
- Увеличение патча означает, что были исправлены только ошибки без изменения функциональности и API.