Семантическое управление версиями для приложений конечного пользователя

Всего один подход…

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

Учитывая номер версии MAJOR.MINOR.PATCH, увеличивайте:
- MAJOR версию при внесении несовместимых изменений API,
- MINOR версию при добавлении функций обратно совместимым способом и
-PATCH версия при исправлении ошибок с обратной совместимостью.

Semver наиболее полезен при применении к программным компонентам, , которые обычно имеют четко определенный «общедоступный API» (интерфейс прикладного программирования). Понятие общедоступного API является основным требованием для использования semver.

Например, если инструмент командной строки с именем edi принимает один аргумент, который должен быть числом, то его общедоступный API выглядит так: edi <number>. Если в следующей версии инструмента API изменится на edi <date>, это будет критическое изменение для общедоступного API (поскольку пользователь, передавший число в edi, получит ошибка) и, следовательно, потребует увеличения номера ОСНОВНОЙ версии (например, с 1.3.0 до 2.0.0).

Что такое общедоступный API веб-приложения, мобильного или настольного приложения?

Чтобы ответить на этот вопрос, давайте рассмотрим приложение Twitter (с начальной версией 1.0.0) в качестве примера. Если команда разработчиков Twitter добавит кнопку в свой пользовательский интерфейс, изменили ли они свой общедоступный API?

С точки зрения конечного пользователя, они видят новую функцию. И они не заботятся о семверах или номерах версий (если они не видят их в маркетинге, например, iPhone 7 или PS4-slim). Так что с точки зрения конечного пользователя «это просто не имеет значения»… если только что-то не пойдет не так. Затем это будет сотрудник службы поддержки, который будет заботиться о номере версии Twitter, которую пытается использовать конечный пользователь, чтобы он мог устранить проблему. (Но этот разговор о поддержке обычно заканчивается: «В любом случае, установите последнюю версию…»).

Теперь рассмотрим конечного пользователя, который пишет код для автоматизации пользовательского интерфейса (пользовательского интерфейса) или выполняет очистку экрана данных внутри приложения Twitter. Новая кнопка * является * потенциально значимой и может быть критическим изменением, поскольку UI является их общедоступным API. Они ожидали увидеть новую версию под названием2.0.0.

Другой вид изменения пользовательского интерфейса может происходить в веб-приложениях - код пользовательского интерфейса может измениться (например, изменение класса CSS или элемента HTML), но пользовательский интерфейс может выглядеть таким же . Для конечного пользователя, который пишет код, это может также быть критическим изменением (в зависимости от того, как его код взаимодействует с приложением Twitter). 2.0.0.

Однако на практике авторы приложений не заботятся о конечных пользователях, которые пишут код, поскольку они составляют крошечную часть всей своей аудитории и обычно доставляют больше проблем, чем они стоят: P

Два случайных интернет-человека, которые нашли время написать в блоге о плюсах и минусах управления версиями приложений, - это Дэйв Холл и Оуэн Джейкобсон. Они согласны с тем, что semver полезен для компонентов, но утверждают, что он бесполезен для приложений конечных пользователей по следующим причинам:

  • Конечные пользователи не могут выбирать, какую версию запускать (для мобильных и веб-приложений; настольные приложения предлагают большую гибкость).
  • Конечные пользователи не знают и не заботятся о том, какую версию они используют.

Но есть и другой тип пользователей, которым небезразличны изменения в приложении, которые, возможно, не были учтены ...

Установщик-пользователь

Пользователь-установщик - это человек, который должен установить приложение. Для них «общедоступный API» приложения - это требования для установки. Но кто является пользователем-установщиком?

Для мобильного приложения и настольного приложения Twitter установщик (обычно) является конечным пользователем. Требования для установки - это минимально необходимая версия операционной системы и подключение к Интернету.

Для веб- приложения Twitter, установщик - это кто-то из команды DevOps (или Операции). Они глубоко заботятся о требованиях к установке, поскольку им необходимо обеспечить правильную инфраструктуру на основе этих требований.

Предложение

Учитывая важность требований к установке приложения для пользователей-установщиков, я предлагаю использовать semver для версии приложений конечных пользователей, используя требования-установки в качестве общедоступных API с пользователями-установщиками в качестве потребителей этого API.

На практике увеличивайте:

  • ОСНОВНАЯ версия, когда вы вносите несовместимые изменения API (например, пользователи-установщики должны каким-либо образом изменить свою инфраструктуру (телефон / планшет / ПК / веб-сервер / конфигурация брандмауэра и т. Д.),
  • МИНИМАЛЬНАЯ версия, когда вы добавляете функциональные возможности обратно совместимым образом (например, передаете дополнительные данные в уже подготовленный API или добавляете какие-либо функциональные возможности конечного пользователя, которые не влияют на требования к установке), и
  • Версия PATCH, когда вы вносите исправления ошибок с обратной совместимостью (например, исправляя любую ошибку конечного пользователя, которая не влияет на требования к установке).

Рассматривая установщиков-пользователей как потребителей приложения конечного пользователя, а установочные-требования как общедоступный API, Я считаю, что semver действительно имеет смысл и ценен как механизм связи для приложений конечных пользователей.