Мне очень нравится схема Semantic Versioning, но это действительно имеет смысл для API, поскольку основное внимание уделяется нарушению изменений и обратной совместимости. Для не-API, например. программное обеспечение конечного пользователя, многие из правил больше не имеют смысла. Например, сама концепция обратной совместимости на самом деле ничего не значит; пользователь испытывает новые функции или их нет, меньше ошибок или нет, и т.д. Тем не менее я получал бы четкую схему для версии xyz, которая следует за духом Semantic Versioning, чтобы пользователи могли иметь представление о том, чего ожидать от номеров новой версии, если они знакомы со схемой.
Я пробовал рисовать что-то вроде:
- Bump z, если вы вносите внутренние изменения в код (например, исправления ошибок, рефакторинг), которые не меняют пользовательский интерфейс. Может включать новые "внутренние" функции.
- Ударьте, добавляя функции, которые изменяют пользовательский интерфейс, помимо исправлений ошибок, к текущим функциям.
- Bump x...???... радикально разные изменения в пользовательском опыте? Что радикально отличается?
- Начальная альфа-разработка происходит как 0.0.z
- Первая версия бета-тестирования установлена в 0.1.0 и остается равной 0.y.z
- Первая версия пользователя установлена в 1.0.0
Другая идея состоит в том, чтобы сделать х-удары, когда удаляются функции, поскольку некоторые пользователи могут полагаться на них, но это может показаться неоправданным в некоторых случаях. (Скажите, что вы знаете всех пользователей, и все они хотят удалить очень незначительную функцию. Переход с 1.0 на 2.0 будет несколько противоречивым.)
Это более субъективно, чем Semantic Versioning, потому что гораздо проще объективно идентифицировать обратные совместимые функции и нарушать функции API. Существуют ли какие-либо "стандартизированные" схемы управления версиями, которые я могу исследовать для получения дополнительных указаний?