Staramy się wybrać dobry sposób numerowania wersji komponentów oprogramowania, które są od siebie zależne.
Bądźmy bardziej konkretni:
Komponent programowy A to oprogramowanie wewnętrzne działające na urządzeniu wbudowanym, a komponent B jest odpowiednim sterownikiem dla zwykłego komputera PC (komputer z systemem Linux / Windows). Komunikują się ze sobą za pomocą niestandardowego protokołu. Ponieważ nasz produkt jest skierowany również do programistów, zaoferujemy stabilne i niestabilne (eksperymentalne) wersje obu komponentów (oprogramowanie układowe jest typu open source, a sterownik typu open source). Naszą największą trudnością jest sposób obsługi zmian API w protokole komunikacyjnym.
Kiedy wdrażaliśmy kontrolę zgodności w sterowniku - sprawdza ona, czy wersja oprogramowania układowego jest zgodna z wersją sterownika - zaczęliśmy omawiać wiele sposobów numeracji wersji.
Wymyśliliśmy jedno rozwiązanie, ale chcieliśmy też wynaleźć koło na nowo. Dlatego chciałbym uzyskać informacje zwrotne od społeczności programistów / programistów, ponieważ uważamy, że jest to powszechny problem.
Oto nasze rozwiązanie:
Planujemy podążać za powszechnie stosowaną numeracją wersji major.minor.patch i używać parzystych / nieparzystych mniejszych liczb dla wersji stabilnych / niestabilnych. Jeśli wprowadzimy zmiany w interfejsie API, zwiększymy liczbę mniejszą.
Ta konwencja doprowadzi do następującej przykładowej sytuacji:
Obecna stabilna gałąź to 1.2.1, a niestabilna to 1.3.7. Teraz nowa poprawka dla niestabilnej zmiany API, co spowoduje, że nowy numer wersji niestabilnej zmieni się na 1.5.0. Gdy niestabilna gałąź zostanie uznana za stabilną, powiedzmy w 1.5.3, wydamy ją jako 1.4.0.
Z przyjemnością odpowiem na dowolne z poniższych pytań:
- Czy możesz zasugerować najlepszą praktykę rozwiązywania wyżej opisanych problemów?
- Czy uważasz, że nasza „niestandardowa” konwencja jest dobra?
- Jakie zmiany zastosowałbyś do opisanej konwencji?