Wir versuchen, eine gute Möglichkeit für die Versionsnummerierung von Softwarekomponenten zu finden, die voneinander abhängig sind.
Lassen Sie uns genauer sein:
Softwarekomponente A ist eine Firmware, die auf einem eingebetteten Gerät ausgeführt wird, und Komponente B ist der entsprechende Treiber für einen normalen PC (Linux / Windows-Computer). Sie kommunizieren über ein benutzerdefiniertes Protokoll miteinander. Da sich unser Produkt auch an Entwickler richtet, werden wir stabile und instabile (experimentelle) Versionen beider Komponenten anbieten (die Firmware ist Closed-Source, während der Treiber Open-Source ist). Unsere größte Schwierigkeit ist der Umgang mit API-Änderungen im Kommunikationsprotokoll.
Während wir eine Kompatibilitätsprüfung im Treiber durchgeführt haben - sie prüft, ob die Firmware-Version mit der Treiberversion kompatibel ist -, haben wir begonnen, verschiedene Möglichkeiten der Versionsnummerierung zu diskutieren.
Wir haben eine Lösung gefunden, aber wir wollten auch das Rad neu erfinden. Aus diesem Grund würde ich gerne ein Feedback von der Programmierer- / Softwareentwickler-Community erhalten, da wir der Meinung sind, dass dies ein häufiges Problem ist.
Also hier ist unsere Lösung:
Wir planen, die weit verbreitete Major.Minor.Patch- Versionsnummerierung zu befolgen und gerade / ungerade Minor-Nummern für die stabilen / instabilen Versionen zu verwenden. Wenn wir Änderungen an der API vornehmen, erhöhen wir die untergeordnete Nummer.
Diese Konvention führt zu der folgenden Beispielsituation:
Der derzeitige stabile Zweig ist 1.2.1 und der instabile 1.3.7. Jetzt ändert ein neuer Patch für Unstable die API, wodurch die neue Unstable-Versionsnummer 1.5.0 wird. Sobald der instabile Zweig als stabil angesehen wird, sagen wir in 1.5.3, werden wir ihn als 1.4.0 veröffentlichen.
Ich würde mich über eine Antwort auf eine der folgenden Fragen freuen:
- Können Sie eine bewährte Methode für die Behandlung der oben beschriebenen Probleme vorschlagen?
- Denken Sie, dass unsere "benutzerdefinierte" Konvention gut ist?
- Welche Änderungen würden Sie an der beschriebenen Konvention vornehmen?