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

31
Константин Назаров (@racktear) Экстремально предвзятый взгляд на версионирование программных продуктов: как запутать релиз-цикл раз и навсегда X.Y.Z

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

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

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

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

X.Y.Z

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

‹#›

Direct X

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

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

‹#›

Internet Explorer

7.0.6001.18000 ?

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

‹#›

C-C-C-Combo

(12.0.6212.1000) SP1 MSO (12.0.6213.1000)

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

‹#›

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

3.1415926

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

‹#›

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

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

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

‹#›

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

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

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

‹#›

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

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

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

‹#›

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

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

‹#›

Major

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

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

‹#›

Minor

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

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

‹#›

Patch

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

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

‹#›

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

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

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

‹#›

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

• Photoshop CS6 • Windows 8.1 • OS X 10.9

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

‹#›

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

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

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

‹#›

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

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

‹#›

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

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

3.0.0.fc2951f5

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

‹#›

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

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

2.0.0b1337

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

‹#›

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

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

4.0.8 beta1

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

‹#›

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

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

2.6.0-FooBar

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

‹#›

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

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

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

‹#›

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

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

‹#›

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

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

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

‹#›

Релиз цикл

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

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

‹#›

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

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

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

‹#›

FAQ

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

‹#›

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

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

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

‹#›

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

•Меняйте Patch Level

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

‹#›

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

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

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

‹#›

Sphinx

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