Wie wird die semantische Versionierung auf Programme ohne API angewendet?

42

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:

  1. Was ist, wenn mein Code keine API bietet? Wie soll ich meinen Code versionieren?
  2. Was ist, wenn mein Code in einem späten Stadium seiner Entwicklung eine API anbietet?
Mario
quelle
7
Punkt 1 der Spezifikation besagt: Software, die Semantic Versioning verwendet, MUSS eine öffentliche API deklarieren. Diese API kann im Code selbst deklariert sein oder nur in der Dokumentation vorhanden sein. Wie auch immer es getan wird, es sollte präzise und umfassend sein. Ich denke, die Antwort ist, dass Sie SemVer technisch nicht nutzen. Es liegt also ganz bei Ihnen.
Ant P
Lesen Sie diesen Artikel, der eine gute Lösung für Apps vorschlägt, die keine API bieten, wie z. B. Desktop-Apps: softwareengineering.stackexchange.com/a/357887/269082
ferit

Antworten:

48

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.

  • Eine Programmierbibliothek oder ein Webdienst verfügt über eine API.
  • Consumer-Software verfügt möglicherweise über eine grafische Benutzeroberfläche.
  • Befehlszeilenprogramme verfügen über eine Reihe von Optionen und Optionen.
  • Konfigurationsdateien sind auch eine Benutzeroberfläche.

Am Beispiel von Consumer-Software wie einem Textverarbeitungsprogramm:

  • Erhöhen Sie die Patch-Nummer, wenn Sie eine Fehlerbehebung versenden, z. B .: " Behobener Fehler, bei dem die Anwendung dienstags immer um 00:00 Uhr abstürzt ".
  • Erhöhen Sie die Nebenversionsnummer, wenn Sie eine neue Funktion hinzufügen, z. B .: " Unterstützung für unterstrichenen Text hinzugefügt ".
  • Erhöhen Sie die Hauptversion, wenn Sie die Benutzeroberfläche grundlegend überarbeitet oder alle internen Elemente neu geschrieben haben. ZB: „ Symbolleisten verwenden zu viel Bildschirmanzeige. Die Benutzeroberfläche wird jetzt nur durch Berührungsgesten bereitgestellt. “Eine solche Änderung würde bestehende Workflows beschädigen.

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 39etwas 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.

amon
quelle
1
Viele von Microsoft-Entwicklungstools erstellte Softwareprodukte haben das ABCD-Format, wobei AB die "üblichen" Haupt- / Nebenversionsnummern sind und CD das Datum und die Uhrzeit der Erstellung der Software codiert.
MZB
Ich liebe die Semantik des π-Versionierungssystems.
Ogier Schelvis