Drei Zahlen, drei Bedeutungen.
Etwas bricht
- höhere Mindestversion von Plattform oder Laufzeit
- ein Feld, eine Spalte, ein Dienst, eine Einstellung oder ein Dateiformat fällt weg oder wird umbenannt
- geändertes Standardverhalten
- auch was zurückgenommen wird
Neues kommt dazu
- alles Bisherige läuft unverändert weiter
- ein neuer Schalter mit Standard „aus“
- etwas als „veraltet“ markieren, solange es weiter funktioniert
Nur Korrektur
- Fehler- und Sicherheitskorrekturen
- Doku, Tests, interner Umbau ohne sichtbare Wirkung
Ändert eine „Korrektur“ dokumentiertes Verhalten, auf das sich jemand verlässt, ist sie ein Bruch.
Von 0.1.0 bis 2.0.0, Schritt für Schritt.
Unter 1.0 darf alles brechen.
Noch ist nichts endgültig
Eine Software beginnt bei 0.1.0. Die führende 0 sagt: Alles darf sich ändern.
- Bruch und neue Funktion: mittlere Zahl,
0.9.3→0.10.0 - Fehlerkorrektur: letzte Zahl,
0.9.3→0.9.4
Unter 1.0 bleibt eine Software, solange sie sich noch bewegt. 1.0.0 kommt erst, wenn sie vollständig ist und über Monate im Einsatz fehlerfrei läuft.
Ein Versprechen
Innerhalb einer Hauptversion bricht nichts. Wer 1.x nutzt, kann jedes 1.y einspielen, ohne etwas anzupassen.
- Bruch: erste Zahl,
1.x→2.0 - Neue Funktion: mittlere Zahl
- Korrektur: letzte Zahl
Was ein Paketmanager daraus macht
Composer und npm installieren mit ^ nur Updates, die laut Nummer nichts brechen.
Vier Regeln, die über die Norm hinausgehen.
Erst testen, dann taggen
Eine Version bekommt ihre Nummer erst, wenn alle Tests bestanden sind, auch der Test im echten Einsatz mit dem noch ungetaggten Stand. Wer zuerst taggt, veröffentlicht womöglich eine kaputte Version, die sich nicht zurückholen lässt.
Punktversion vor Funktionsversion
Behebt eine neue Version einen Fehler, der auch die Vorgängerreihe betrifft, kommt zuerst deren korrigierte Punktversion. Viele bleiben bewusst auf Punktversionen; ist die letzte kaputt, bleiben genau sie auf dem Fehler sitzen.
Vor dem Tag begründen
Die Commits seit der letzten Version zeigen, welche Stufe passt. Mit KI-Agenten: den Agenten die Einordnung vorschlagen lassen, aber selbst freigeben und taggen.
Wegfall ist ein Bruch
Auch was zurückgenommen wird, bricht etwas. Nur als „veraltet“ zu markieren, während es weiter funktioniert, ist eine neue Funktion.
Woher es kommt, und wer es anders macht.
Wo es gilt
Überall, wo andere Software von einer Software abhängt: Composer (PHP), npm (JavaScript), Cargo (Rust), Go-Module. Auch Content-Management-Systeme wie Contao folgen SemVer und bieten zusätzlich Langzeitversionen an. Das Schema x.y.z gab es lange vorher; SemVer hat festgelegt, was jede Zahl bedeutet.
Mehr: semver.org
Die Nummer ist das Datum
Wo zu festen Terminen veröffentlicht wird und das Alter mehr zählt als die Art der Änderung.
Jede Version eine neue Hauptzahl
Alle vier Wochen. Endnutzer haben keine Abhängigkeiten, Updates kommen automatisch.
Die Nummer ist ein Name
Produktnamen; intern laufen eigene Build-Nummern.
Zwei Nummern
Neben der sichtbaren Version steigt bei jedem Hochladen in den Store eine Build-Nummer.
Wenn die Zahl unhandlich wird
Die erste Zahl steigt, wenn die zweite zu groß wird. Der Kernel bricht grundsätzlich nichts, was Programme nutzen.
Annäherung an π
Jede Version fügt eine Stelle hinzu. Ein Scherz des Autors: Hier ändert sich nur noch wenig.