Kurzfassung
Semantic Versioning (SemVer) ist eine weit verbreitete Versionierungskonvention, die das Format MAJOR.MINOR.PATCH verwendet, wobei jedes Segment die Art und Kompatibilitätsauswirkung einer Software-Änderung kommuniziert.
Was ist Semantic Versioning?
Semantic Versioning, definiert unter semver.org, legt fest, dass eine Versionsnummer die Form MAJOR.MINOR.PATCH hat:
- MAJOR wird bei inkompatiblen API-Änderungen erhöht, die die Rückwärtskompatibilität brechen
- MINOR wird bei neuer Funktionalität erhöht, die rückwärtskompatibel hinzugefügt wird
- PATCH wird bei rückwärtskompatiblen Bugfixes erhöht
Pre-Release-Versionen und Build-Metadaten können mit Bindestrichen und Pluszeichen angehängt werden (z.B. 1.0.0-alpha.1 oder 1.0.0+build.42).
SemVer löst die sogenannte "Dependency Hell", indem es Konsumenten einen klaren Vertrag darüber gibt, was beim Upgrade zu erwarten ist. Package Manager wie npm, Maven und Helm verlassen sich auf SemVer, um kompatible Abhängigkeitsversionen automatisch aufzulösen. In CI/CD-Pipelines können automatisierte Tools wie semantic-release Conventional Commit Messages analysieren und die korrekte nächste Versionsnummer automatisch bestimmen und veröffentlichen.
Warum ist Semantic Versioning relevant?
- Klare Kommunikation: Versionsnummern vermitteln Konsumenten das Risiko und die Kompatibilitätsauswirkung eines Upgrades
- Automatisiertes Release Management: CI/CD-Tools können Versions-Bumps und Changelog-Generierung basierend auf SemVer-Regeln automatisieren
- Abhängigkeitsverwaltung: Package-Ökosysteme verlassen sich auf SemVer, um kompatible Versionen ohne manuellen Eingriff aufzulösen