Co naprawdę oznaczają wersje aktualizacji?

18

Wiele aktualizacji oprogramowania jest zgodnych ze schematem od v0.1 do v0.2 do v2.6.5.6 . Co tak naprawdę oznaczają te „aktualizacje” oprogramowania? Czy zawsze przestrzegany jest standard branżowy, czy programiści wciąż podnoszą aktualizację # lub dodają więcej miejsc po przecinku?

James Mertz
źródło
12
@ S.Lott Ponieważ jestem całkiem nowy na scenie programistycznej, nie znam specyfiki. To najlepszy sposób, by poprosić, żebym wymyślił.
James Mertz
9
@ S.Lott, zmniejsz panu kofeinę, to czyni cię drażliwym.
ocodo
2
@ S.Lott możesz dowolnie edytować według własnego uznania, aby poprawić pytanie. Czuję, że wiesz, czego szukam. Uważam jednak, że udzielone odpowiedzi były bardzo dobre. Sądzę również, sądząc po głosowaniu na mój poprzedni komentarz, że zrobiłem wszystko, co mogłem, i że pytanie jest w porządku. Z zadowoleniem przyjmuję jednak zarówno krytykę, jak i zmiany. Rób, co uważasz za stosowne. Dla mnie zostawiam to w spokoju.
James Mertz
1
@ S.Lott Pytanie wydaje się dość jasne, jak dla mnie. Nie sądzę, aby wymienienie konkretnej organizacji opracowującej standardy było znaczną poprawą. Jeśli uważasz inaczej, możesz go edytować. Masz za to przedstawiciela.
Adam Lear
3
@ S.Lott: „Czy istnieje standard branżowy” jest całkowicie w porządku. Tak, istnieją standardy branżowe! Nie ma znaczenia, kto je pisze: KronoS chce wiedzieć, co oznaczają wersje, to jego wybór, aby określić, jak szczegółowy jest on ... Być może powinieneś wspomnieć, że uważasz to pytanie za szerokie? Samo wbijanie szczegółów nie wyjaśnia tego użytkownikowi, mówiąc mu, aby zdefiniowało: słowo nie wyjaśnia tego użytkownikowi, mówiąc, że jest bez znaczenia po pierwszym komentarzu, który nie wyjaśnia tego użytkownikowi.
Tamara Wijsman,

Odpowiedzi:

16

Jak powiedział Shaun, tak naprawdę nie ma standardu. Niektóre firmy stosują lepsze praktyki wersjonowania niż inne (miałem do czynienia z dostawcami, którzy pomijają główne numery wersji, a inni utknęli na tym samym xy kilka wydań później).

Powiedziawszy to, wynalazca Gravatars i współzałożyciel GitHub ( Tom Preston-Werner ) jest autorem dokumentu do „ Semantic Versioning ”, który jest więcej niż wart przeczytania.

Oto wyjątkiem wstępu:

Jako rozwiązanie tego problemu proponuję prosty zestaw reguł i wymagań, które określają sposób przypisywania i zwiększania numerów wersji. Aby ten system działał, musisz najpierw zadeklarować publiczny interfejs API. Może to obejmować dokumentację lub być egzekwowane przez sam kod. Niezależnie od tego ważne jest, aby ten interfejs API był jasny i precyzyjny. Gdy zidentyfikujesz swój publiczny interfejs API, komunikujesz zmiany w nim z określonymi przyrostami numeru wersji. Rozważ format wersji XYZ (Major.Minor.Patch). Poprawki błędów, które nie wpływają na interfejs API, zwiększają wersję poprawki, kompatybilne wstecz dodatki / zmiany API zwiększają wersję mniejszą, a wstecznie niezgodne zmiany API zwiększają wersję główną.

Nazywam ten system „wersją semantyczną”. W ramach tego schematu numery wersji i sposób ich zmiany przekazują znaczenie dotyczące kodu źródłowego i tego, co zostało zmodyfikowane z jednej wersji do następnej.

Dan McGrath
źródło
7

4 cyfry to zwykle MajorV.MinorV.PatchNum.BuildNum, przynajmniej tam, gdzie pracuję.

Osobiście wolę schemat wersjonowania Ubuntu - znacznie ułatwia życie.

Praca
źródło
Jaki jest ich plan? Dlaczego wolisz je?
James Mertz
3
Ubuntu 10.10 = październik 2010 r., Ubuntu 10.04 = kwiecień 2010 r., Ubuntu 11.04 = Aprial 2011, Ubuntu 9.10 = październik 2009 r. Itd. Jest to wspomniane w linku do Wikipedii autorstwa Shaun.
Job
2
Zaletą korzystania z dat jako numerów wersji jest to, że - o ile nie zdarzy się jakiś paradoks czasowy - numer wersji będzie zawsze w odpowiedniej kolejności. Dla większości z nas łatwiej jest pamiętać, że dzisiaj jest 2011.02.13, niż próbować dowiedzieć się, jaka powinna być wersja nowego wydania.
jmort253
@ jmort245, Dokładnie! Systemy stworzone przez człowieka są dość nieuporządkowane. Dziwaczne banki uważają, że w ciągu roku jest 360, 362, 365, 366 itd. System kontroli wersji to kolejna z tych głupich kreacji. Znaczniki czasu nie każą nam myśleć, chociaż 20050207 odczytuje i wykracza nieco dłużej niż 502. Jakie oprogramowanie jest wydawane częściej niż raz w miesiącu?
Job
2
@job: Ale używanie wersji pozwala powiązać funkcje z konkretnymi większymi lub mniejszymi wersjami. Więc jeśli mam wersję 2, wiem, że mam funkcję X, podczas gdy wersja 1 nie ma wersji X.
Martin York
6

Krótka wersja jest taka, że ​​nie ma standardu, a firmy robią, co chcą. Zasadniczo im więcej liczb masz, tym mniejsza liczba zmian reprezentuje każda liczba. Zwykle zobaczysz co najmniej wersję xy, gdzie xa x oznacza główne wydania (główne ulepszenia / rozszerzenia funkcji), a y oznacza drobne wydania (znaczące poprawki lub poprawki błędów). Więcej miejsc po przecinku po tych dwóch może oznaczać różne rzeczy wewnętrznie dla firmy, chociaż często dotyczą mniejszych kompilacji treści lub łatek, które reprezentują szybsze i mniejsze poprawki.

Wikipedia ma artykuł, który opisuje to bardziej szczegółowo.

Shaun
źródło
3

Numery wersji służą jako odniesienie do raportów problemów. Jedynym wymaganiem jest to, aby każde wydanie miało unikalny numer wersji. Niektóre liczby są napędzane przez marketing - większe liczby całkowite są łatwiejsze do sprzedania, a liczby mocy takie jak 10 (rzymska X) są naprawdę chwytliwe. Niektóre osoby używają pewnej odmiany semantycznej wersji:

MAJOR.MINOR.MICRO.BUILD

  • Główne przyrosty: niezgodne zmiany lub całkowite przeprojektowanie interfejsu użytkownika
  • Niewielkie przyrosty: dodano nowe funkcje, zgodne z wcześniejszymi wersjami o tym samym głównym numerze wersji
  • Przyrosty mikro: wydanie poprawki błędu
  • Numer kompilacji: wygenerowany przez kompilator lub pobrany z kontroli wersji

Wiele grup upuszcza numer BUILD w swoich wydaniach. Jest to zwykle przydatne tylko między grupami testującymi i programistycznymi.

Niektóre grupy dodają dodatkową semantykę, na przykład nieparzyste przyrosty MINOR dla eksperymentalnych kompilacji, a parzyste przyrosty MINOR dla wydań produkcyjnych ( jądro Linux używa tego podejścia).

Najważniejsze jest to, że nie ma standardu, inne niż nowsze wersje używają wyższych numerów wersji i że każdy numer wersji jest unikalny.

Berin Loritsch
źródło