Экстремально предвзятый взгляд на версионирование...

Post on 12-Aug-2015

95 views 3 download

Transcript of Экстремально предвзятый взгляд на версионирование...

Константин Назаров (@racktear)

Экстремально предвзятый взгляд на версионирование программных продуктов: как запутать релиз-цикл раз и навсегда

X.Y.Z

‹#›

Direct X

Какая у меня версия? 9.0c, конечно!

‹#›

Internet Explorer

7.0.6001.18000 ?

‹#›

C-C-C-Combo

(12.0.6212.1000) SP1 MSO (12.0.6213.1000)

‹#›

Мое любимое: версия TeX

3.1415926

‹#›

Требования к версии

• Версия должна иметь смысл • Отражать совместимость • Быть “сравнимой” (>/</=) • И быть понятной пользователям

‹#›

Версионирование API

• Для совместимости • Для “устаревания” • Несколько вариантов одновременно

‹#›

Что будет если версионировать API неправильно

• Вы рискуете расстроить клиентов • И запутаетесь сами

‹#›

Семантическая версия

‹#›

Major

•Меняется при потере совместимости

‹#›

Minor

•Меняется при добавлении фич

‹#›

Patch

•Меняется при починке багов

‹#›

Причем здесь приложения?

• GUI — это “API” для людей • Пользователи тоже хотят предсказуемости

‹#›

Маркетинговые версии

• Photoshop CS6 • Windows 8.1 • OS X 10.9

‹#›

Маркетинговые версии

• Не путайте их с версией продукта • Избегайте их, если можете • Или ведите отдельно

‹#›

Типичные ошибки

‹#›

Ревизия в версии

• Ничего не говорит пользователю • Бесполезна для приложения • Затрудняет сравнение версий

3.0.0.fc2951f5

‹#›

Номер билда в версии

• Ничего не говорит пользователю • Бесполезна для приложения

2.0.0b1337

‹#›

alpha/beta/rc в версии

• Затрудняет сравнение версий • Бесполезны для приложения

4.0.8 beta1

‹#›

Произвольные суффиксы в версии

• Затрудняют сравнение версий

2.6.0-FooBar

‹#›

Не перегружайте версию

•Можно иметь и другие идентификаторы

‹#›

Другие проблемы

‹#›

Автоматизация

• Нет целостной версии — нет и автоматизации • В каждой системе будет своя версия

‹#›

Релиз цикл

• Версионирование вас ко многому обязывает • Оно может вынудить отложить изменения • Или выпустить их в неудобное время

‹#›

Решаем проблемы с версиями

• Не уверены что выбрать? SemVer! • Отделите маркетинговую версию • Отделите ревизию и номер билда • Поделитесь знанием с коллегами

‹#›

FAQ

‹#›

Есть ли универсальная схема версионирования?

• Нет • И не пытайтесь ее изобрести

‹#›

Security fix ломающий совместимость

•Меняйте Patch Level

‹#›

Адаптация enterprise софта

• Бранч для кастомера значит новый продукт • Начните с версии в исходном бранче • Подумайте о маркетинговой версии • Используйте “кодовые имена”

‹#›

Sphinx

• Андрей Аксенов

‹#›

knazarov@parallels.com @racktear