Ми намагаємося визначити хороший спосіб зробити нумерацію версій для компонентів програмного забезпечення, які залежать один від одного.
Давайте будемо більш конкретними:
Програмний компонент A - це мікропрограмне забезпечення, яке працює на вбудованому пристрої, а компонент B - його відповідний драйвер для звичайного ПК (машина Linux та Windows). Вони спілкуються один з одним за допомогою користувацького протоколу. Оскільки наш продукт також орієнтований на розробників, ми запропонуємо стабільні та нестабільні (експериментальні) версії обох компонентів (прошивка закритого коду, а драйвер із відкритим кодом). Наша найбільша складність полягає в тому, як впоратися зі змінами API в протоколі зв'язку.
Поки ми впроваджували перевірку сумісності у драйвері - вона перевіряє, чи версія прошивки сумісна з версією драйвера - ми почали обговорювати кілька способів нумерації версій.
Ми придумали одне рішення, але також відчули, як винаходити колесо. Ось чому я хотів би отримати відгуки від спільноти програмістів / розробників програмного забезпечення, оскільки ми вважаємо, що це поширена проблема.
Тож ось наше рішення:
Ми плануємо слідкувати за широко використовуваною нумерацією версій major.minor.patch та використовувати парні / непарні незначні числа для стабільних / нестабільних версій. Якщо ми вносимо зміни в API, ми збільшимо незначну кількість.
Ця конвенція призведе до наступного прикладу:
Поточна стабільна галузь - 1,2,1, а нестабільна - 1,3,7. Тепер новий патч для нестабільних змін API, що призведе до того, що номер нової нестабільної версії стане 1.5.0. Після того, як нестабільна гілка буде вважатися стабільною, скажімо в 1.5.3, ми випустимо її як 1.4.0.
Я буду радий відповісти на будь-яке з пов’язаних нижче питань:
- Чи можете ви запропонувати найкращу практику вирішення описаних вище питань?
- Як ви вважаєте, наша "звичайна" конвенція гарна?
- Які зміни ви застосували б до описаної конвенції?