Согласно правилам семантического управления версиями (SemVer), каждая часть номера версии vx.x.x предназначена для представления различных типов изменений - эти различные типы изменений в первую очередь определяются их обратной совместимостью.

Номер основной версии (первый в последовательности) предназначен для использования при несовместимых изменениях API. второстепенный номер версии (средний) предназначен для использования при внедрении новых обратно-совместимых функций. Номер версии патча (последний) предназначен для использования для исправлений ошибок с обратной совместимостью.

Хотя SemVer - очень полезное руководство, и приведенные выше определения могут показаться довольно ясными, на практике вы можете обнаружить, что определение классификации SemVer для определенных изменений кода иногда может быть затруднительным. Если вы поддерживаете библиотеку или фреймворк, от которых зависят многие другие проекты, иногда даже самое тривиальное «исправление ошибок» может нарушить обратную совместимость для небольшого подмножества ваших пользователей - отчасти это связано с тем, что граница между функциями и ошибками может стать размытой. раз.

Иногда код других разработчиков может зависеть от недокументированного поведения в вашей библиотеке / модуле, которое выглядит как функция, но на самом деле является ошибкой (или просто неправильно выбранной конфигурацией по умолчанию) - хотя высказывание «Это не ошибка, это функция» является Хорошо известная в отрасли обратная задача также относительно распространена, когда дело касается более сложных проектов (хотя мы обычно не хотим этого признавать).

Я думаю, что за SemVer следует как можно внимательнее следить, но я также считаю, что важно знать, что для определенных сценариев SemVer - это столько же искусство, сколько и наука. Иногда вам нужно использовать свое понимание проекта и экосистемы, чтобы принимать обоснованные вероятностные решения, когда дело доходит до управления версиями.