Unter http://semver.org/ wird empfohlen, die Hauptversionsnummer zu erhöhen, wenn eine Änderung vorgenommen wird, durch die die API beschädigt oder geändert wird. Dies scheint meiner Meinung nach die am häufigsten verwendete Konvention bei der Versionierung zu sein.
Es gibt zwei verwandte Szenarien, in denen ich nicht verstehe, wie diese Richtlinie angewendet werden soll:
- Was ist, wenn mein Code keine API bietet? Wie soll ich meinen Code versionieren?
- Was ist, wenn mein Code in einem späten Stadium seiner Entwicklung eine API anbietet?
semantic-versioning
Mario
quelle
quelle
Antworten:
Semver befasst sich hauptsächlich mit der Versionierung von Bibliotheken und Paketen in einer Weise, die die Abhängigkeitshölle in ihren verschiedenen Inkarnationen vermeidet. Die Idee hinter Semver kann jedoch auf alle Arten von Programmen ausgedehnt werden - jeder Code hat eine Art Benutzeroberfläche oder ist ziemlich nutzlos.
Am Beispiel von Consumer-Software wie einem Textverarbeitungsprogramm:
Viele Probleme, die Semver zu lösen versucht, existieren jedoch nicht außerhalb des Bereichs des Abhängigkeitsmanagements. In Consumer-Anwendungen ist die Version nicht nur eine Version, sondern auch ein Marketingobjekt.
Firefox und Chrome veröffentlichen vergleichsweise häufig neue Versionen und erhöhen ihre Hauptversionsnummer bei jeder Veröffentlichung. Dies führt zu lächerlich hohen Versionsnummern (beide sind derzeit in den 30ern). Ein Browser mit einer höheren Versionsnummer muss einfach besser sein als ein Browser mit einer niedrigeren Versionsnummer, oder?
Die Hauptversionsnummer von Apples Betriebssystem OS X ist Teil des Namens (X steht für 10 in römischen Ziffern), wodurch die Nebenversionsnummer zur effektiven Hauptversionsnummer wird.
Das Ubuntu-Betriebssystem verwendet ein Versionsschema auf Jahr.Monat.Patchlevel. Auf diese Weise können Sie sich leicht merken, wie alt Ihr Betriebssystem ist, aber es ist viel schwieriger herauszufinden, welche Versionen kompatibel sind und wie lange die Unterstützung für die einzelnen Versionen dauert.
Der Linux-Kernel hat die Versionsnummer von 2.6.39 auf 3.0.0 angehoben, weil die
39
etwas größer wurde und um das 20-jährige Jubiläum von Linux zu feiern.Donald Knuths legendäres Textsatzsystem verwendet eine Versionsnummer, die ab Version 3 gegen π konvergiert, indem bei jeder Veröffentlichung eine weitere Ziffer hinzugefügt wird: 3.14159265…. Dies zeigt, wie das System der Perfektion näher kommt. Ebenso konvergiert das Metafont-System zu e : 2.7182818….
Daher werden viele Anwendungen von Semver nicht gut bedient. Wählen Sie ein Versionsschema, das für Ihre Benutzer gut ist (unabhängig davon, ob diese Benutzer Programmierkollegen oder Konsumenten sind), und halten Sie es konsistent.
quelle