Softwareentwickler verwenden in der Regel kein Datum als Versionsnummer, obwohl das Format JJJJMMTT (oder dessen Abweichungen) solide genug aussieht, um verwendet zu werden. Stimmt etwas mit diesem Schema nicht? Oder gilt es nur für begrenzte Arten von Software (wie Eigenproduktionen)?
versioning
Donotalo
quelle
quelle
Antworten:
Dies ist etwas, das Sie aus verschiedenen Blickwinkeln betrachten müssen, um die Bedürfnisse der Benutzer sowie die Bedürfnisse der Software und Entwickler zu berücksichtigen.
Im Allgemeinen ist es Ihren Kunden egal, wie hoch die Versionsnummer der Software sein wird, solange sie wissen, dass sie etwas Neueres ausführen (dh Produkt 2012 ist neuer als Produkt 2010) und dass sie es wissen ist auf dem neuesten Stand, wenn Patches bereitgestellt werden können (z. B. Produkt 2012, Update 10). Daher bevorzuge ich aus Sicht des Kundenbrandings entweder benannte Versionen (z. B. Windows XP, Windows Vista), gefolgt von einer strengen Abfolge von Patches, die möglicherweise von Benutzern installiert werden.
Das heißt jedoch, dass das Schreiben von Software, die Dinge überprüft, die für den Benutzer einfach sind, dazu neigt, den Code unter der Haube viel schwerer zu schreiben. Daher bevorzuge ich das einfache
Major.Minor
Versionsschema, wenn auch nur, weil Sie einen einfachen Zahlenvergleich durchführen können, um zu überprüfen, ob etwas auf dem neuesten Stand ist, wie im Folgenden dargestellt:Um dies in einen gewissen Kontext zu bringen, ist es mir im Allgemeinen egal, wie groß die Nebenzahl wird (dh 1.1024), wodurch das obige System weiterhin erfolgreich ausgeführt werden kann. Im Allgemeinen sind die Revisionsnummern nur für die interne Entwicklung von Interesse, und ich habe nicht einmal wirklich gesehen, dass sie sich auf Dinge auswirken, die weit über das bloße Vergeben einer zusätzlichen Nummer hinausgehen, um den Überblick zu behalten.
Die beiden oben genannten Schemata gelten jedoch nicht nur für Umgebungen, in denen eine kontinuierliche Bereitstellung verwendet wird (z. B. Stack Exchange). Daher bevorzuge ich in der Regel ein Datum, gefolgt von einer Revisionsnummer, wie sie auf dem Stack Exchange verwendet wird Websites. Der Grund dafür ist, dass sich die Versionen in der Umgebung für die kontinuierliche Bereitstellung zu häufig ändern und möglicherweise mehrere Versionen des Codes am selben Tag angezeigt werden, was die Versionsnummer und das aktuelle Datum rechtfertigt raus noch mehr. Theoretisch könnte man für alles nur die Revisionsnummer verwenden, aber mit dem aktuellen Datum können Sie wichtige Meilensteine intern nachverfolgen, die die Diskussion erleichtern könnten.
quelle
Das Problem bei der Verwendung eines Datums besteht darin, dass die Angaben anhand der Zählzahlen und nicht anhand des Fälligkeitsdatums geschrieben werden.
Sie können in Spezifikationen nicht auf ein Datum verweisen, da das Veröffentlichungsdatum möglicherweise verpasst wird.
Wenn Sie nicht über einen solchen formalen Prozess verfügen, für den unterschiedliche Releases im Voraus identifiziert werden müssen, ist die Verwendung von Datumsangaben in Ordnung. Sie müssen der Mischung keine weitere Zahl hinzufügen.
Es ist unwahrscheinlich, dass Versionsnummern Daten enthalten, da ihr Kontext mit Spezifikationen verknüpft ist.
Build-Nummern enthalten wahrscheinlich Daten, da ihr Kontext mit dem Zeitpunkt des Builds verknüpft ist.
quelle
Obwohl dieser Ansatz die beschriebenen Vorteile bietet, gibt es einige Nachteile, wenn Sie das Datum als Versionsnummer verwenden:
Datumsbasierte Versionen sind flach. Mit v2.1.3 können Sie die Versionsnummer, die Unterversionsnummer und die Unterversionsnummer anzeigen. Mit 20110119 können Sie nur sehen, wann es geschrieben wurde. Sie könnten Ihre datumsbasierten Versionen nach Monat gruppieren, aber es würde Ihnen trotzdem nichts sagen. Es kann mehrere Monate dauern, bis kleine Fehler behoben sind, und dann zwei Wochen, in denen viel Code geschrieben wurde, was zu einer Hauptversion führt. Daten sagen dir das nicht, normale Versionsnummern schon.
Wenn Sie die Version und möglicherweise die Versionsnummer wirklich wirklich täglich ändern müssen, kann dies darauf hinweisen, dass Sie keinen ordnungsgemäßen Veröffentlichungsprozess haben. Stattdessen ändert jeder das Material wild und befördert es auf Produktionsserver, wann immer er möchte. In diesem Fall liegt ein Problem mit dem Prozess vor, und die Verwendung eines anderen Versionsnummernschemas kann das Problem nicht lösen.
quelle
Versionen werden häufig verwendet, um Informationen darüber zu übermitteln, wie unterschiedlich eine bestimmte Version der Software von der vorherigen ist. Wenn Sie beispielsweise ein Upgrade von 1.0 auf 2.0 von Acme durchführen, handelt es sich theoretisch um ein bedeutendes Upgrade, das bedeutende Änderungen mit sich bringt.
Ein Upgrade von 1.0 auf 1.1 ist hingegen ein geringfügiges Upgrade und beinhaltet theoretisch geringfügige, inkrementelle Änderungen und Fehlerkorrekturen.
Es wäre schwierig, dies in einem Datumsformat darzustellen, obwohl Sie eine Mischung verwenden könnten. Zum Beispiel v1.0.YYYY.MMDD
quelle
Ohne gute Ideen aus anderen Antworten zu wiederholen, habe ich ein Problem im Kopf, das noch nicht angesprochen wurde.
Wenn Sie einen Fork zwischen einer älteren Version aus Gründen der Abwärtskompatibilität und einer neuen Version für eine inkompatible Modernisierung durchführen, können Sie diese nicht anhand von Versionsnummern unterscheiden.
Zum Beispiel wurde der Linux-Kernel um das Jahr 2000 in den alten 2.4.x-Zweig verzweigt, der wahrscheinlich noch heute unterstützt wird und als 2.4.199 gilt, während die neue Version seit vielen, vielen Jahren 2.6 ist und 2.6.32 ist für ältere Systeme, aber 3.2 für die neuesten Kernel.
Wenn Sie Dokumentation zu Ihren Veröffentlichungen haben, werden Sie die Informationen verdoppeln und den Leuten mitteilen, dass die Version 20120109 im Jahr 2012 am 01/09 eingetroffen ist. Mh. Aber was ist, wenn es im letzten Moment eine Fehlererkennung gibt und eine Veröffentlichung um eine Woche verzögert wird, aber die Dokumentation, in der der Name erwähnt wird, bereits fertig ist, vielleicht gedruckt wird, die Presseinformationen sind raus und so weiter. Jetzt haben Sie eine Unstimmigkeit, die problematisch ist, wenn die Version 20120109 am 13.01.2012 eingetroffen ist.
In SQL wurde oft die Frage diskutiert, ob IDs semantische Informationen enthalten sollen, und das Ergebnis ist immer: Vermeiden Sie es wie die Hölle! Sie erstellen eine unnötige Abhängigkeit. Es kann nicht von Nutzen sein.
Ubuntu mit seinem 04/10-Schema hatte 2006 sein Problem, als die Version 6.04 verzögert wurde und 6.06 wurde. Im Jahr 3000 wird es bald das nächste Problem geben! :)
quelle
stable
Serie sind derzeit 2.6.32.54 (2012-01-12) und 3.1.10 (2012-01-18).Es gibt viele Softwarepakete, die das Datum tatsächlich als Version verwenden. Ubuntu kommt in den Sinn, wo ihre Version YY.MM ist. Die Build-Nummern für Microsoft Office-Produkte sind auch eine Kodierung des Build-Datums. Jeff Atwood schrieb einen Coding Horror-Blogeintrag über die Versionsnummerierung , einschließlich dieser Empfehlung:
Meiner Meinung nach spielt es keine Rolle, solange Sie konsistent sind und in der Lage sind, von einer Build-Versionsnummer (was auch immer es ist) zu gehen und alle Artefakte, die in diesem Build stecken, aus Ihrem Versionskontrollsystem abzurufen. Die Benutzer interessieren sich in der Regel überhaupt nicht für die Versionsinformationen, sondern für die vom System bereitgestellten Funktionen. Versionsinformationen sind für die Entwickler nur von echtem Wert.
quelle
Verwenden Sie die semantische Versionierung. Auf diese Weise erhalten Sie eine Vorstellung davon, welche Änderungen zwischen den Versionen vorgenommen werden, ohne den Code selbst überprüfen zu müssen: http://semver.org/
quelle
Die Verwendung von Versionsnummern zeigt, wie GROSS die Änderung ist
Zum Beispiel kann 2.4.3 bedeuten, dass Version 2 die Hauptänderung am gesamten System ist. .4 ist ein kleines Update. und die letzte .3 ist ein kleiner Bugfix für diese Version. Auf diese Weise ist leicht zu erkennen, wie viel sich zwischen den einzelnen Versionen geändert hat.
Trotzdem sehe ich immer noch, dass viele Leute Datumsangaben oder SCM-Revisionsnummern als Versionsnummern verwenden, solange Sie eine Möglichkeit haben, auf unterstützende Versionshinweise und die Dokumentation dessen, was für diese Version im Geltungsbereich war, zurückzugreifen, gibt es kein wirkliches Problem.
quelle
Einige gute Antworten hier bereits, aber ich möchte auf einen Fall hinweisen, bei dem die Verwendung von Datumsangaben durchaus Sinn macht: kleine Bibliotheken oder Codeausschnitte, bei denen der Code wahrscheinlich häufig aktualisiert wird, jedoch in winzigen Teilen, ohne dass sich eine einzelne Version drastisch von der vorherigen unterscheidet einer.
Mit anderen Worten, ich spreche von Situationen, in denen es keine tatsächliche "Versionsnummer" gibt, sondern im Grunde eine Art quasi-tägliches Repository-Dump.
Wenn ich auf solche Dinge stoße, freue ich mich normalerweise über die Wahl, da es für mich nützlicher ist, zu wissen, dass ich ein relativ aktuelles Skript / eine relativ aktuelle Bibliothek anstelle einer bestimmten Version verwende.
quelle
Daten als Versionsnummer sind gut für das Marketing. Wenn Benutzer "Windows NT 5.0" verwenden, stellen sie möglicherweise nicht fest, dass es veraltet ist. Wenn Sie jedoch immer noch "Windows 2000" verwenden, werden Sie sofort wissen, dass es sich um ein 12 Jahre altes Betriebssystem handelt, und Sie werden aufgefordert, ein Upgrade durchzuführen.
Es erschwert jedoch die Unterscheidung zwischen "Haupt" - und "Neben" -Updates.
quelle
Problem mit der Verwendung von Daten als Versionsnummern
Die Antworten hier sind gut, aber ich habe niemanden gesehen, der dieses Problem mit der Verwendung von Datumsangaben ansprach: Der Benutzer kann nicht feststellen, wie oft Änderungen vorgenommen wurden.
Ich versuche zu sagen, dass ich feststellen kann, dass Windows 3.1 und Windows 7 weit voneinander entfernt sind ... und möglicherweise nicht kompatibel sind. Windows 95 und Windows 2000 geben nur das Jahr an, in dem das Produkt eingeführt wurde.
Mit Python weiß ich beispielsweise, dass Version 2.7.2 von 2.4.6 entwickelt wurde. Wenn ich weiter schaue, sehe ich, dass Version 2.4.6 am 19. Dezember 2008 veröffentlicht wurde; und diese Version 2.7.2 wurde am 11. Juni 2011 veröffentlicht. Daraus kann ich eine Meinung über die Stabilität (dh die Häufigkeit der Veröffentlichung) eines Produkts ableiten.
Wenn stattdessen Python Veröffentlichungsdaten verwendet hätte, kann ich nicht wissen, wie diese Produkte verbunden sein könnten. Weitere Verwirrung würde sich ergeben, da Python 3.1.4 ebenfalls am 11. Juni 2011 veröffentlicht wurde (dasselbe wie Python 2.7.2).
Kurz gesagt, ich denke nicht, dass Datums-Versionierung für sich genommen wertvoll ist.
quelle
Ich mag diese Idee aus Gründen, die bereits von anderen beschrieben wurden, nicht. Verwenden Sie einfach das Schema major.minor.bugfix - es gibt einen Grund, warum die meisten Leute das so machen.
Aber was auch immer Sie tun: Wählen Sie ein Versionsnamensschema und bleiben Sie dabei . Tun Sie es nicht wie Windows, wo sie das Schema mit jeder Veröffentlichung ändern. Und machen Sie es nicht wie Android, wo jede Version eine API-Versionsnummer (8), eine Versionsnummer für Marketingzwecke (2.2) und einen blöden Namen (Froyo) hat.
quelle
Datum als Version
Wenn Ihr Produkt nicht verkauft wird, ist es in Ordnung und wahrscheinlich nützlich, nur das Datum zu verwenden. Wenn Sie es verkaufen und Upgrades an Kunden durchführen, möchten diese ein Modell mit einem bestimmten Funktionsumfang kaufen. Es ist viel einfacher, sie bei einem Upgrade zu verkaufen, wenn dieses Modell einen eindeutigen Namen hat. Es spielt keine Rolle, um was es sich handelt, aber zum Beispiel kauft niemand wirklich das Ford-Auto vom 20. Januar 2012, das Kia-Modell soll es sein. Gleiches gilt für Software. Wenn Sie einen harten Modellnamen und eine harte Version angeben, unterscheidet sich die Funktionalität von der älterer Modelle. Für mich macht gerade ein Date das nicht, es heißt ich habe es dann gemacht, es könnte keine neuen Features haben.
Schema, das wir verwenden
Ich habe nicht behauptet, dass unser System eine klare Marke wie oben schafft. Wir verwenden jetzt ein vierteiliges Schema. Versionsnummer, Status, Datum und Prüfsumme.
Dies ist möglicherweise übertrieben, aber es ermöglicht uns, mehrere Versionen des Builds für Version 1200 zu haben, die unsere Ingenieure verwenden können, und wir unterscheiden sie nach Datum. Der Status gibt an , ob es sich um eine interne Testversion, einen Kunden-Patch oder eine Goldversion handelt. Die Prüfsumme ist neu und ermöglicht es einem Techniker oder Kunden zu überprüfen, ob er tatsächlich die richtige von unserer Distribution heruntergeladen hat.
Wir könnten also eine Folge von haben
Wir beziehen uns normalerweise nur auf die Hauptversionsnummern des Kunden, dh "12". Ein Kunde erhält jedoch die neueste Goldversion von 12, dh 1200_GLD_120120_F0D1, es sei denn, er benötigt den Fix.
quelle
Nehmen wir an, einige Kunden verwenden Version 2 Ihres Produkts und einige haben ein Upgrade auf Version 3 durchgeführt. Dieses Upgrade ist keine leichte Entscheidung.
Angenommen, die letzte Version von Version zwei ist 2.3.2 und Version drei ist 3.0.3. Jetzt finden Sie eine Schwachstelle, die unbedingt behoben werden muss, sodass Sie 2.3.3 und 3.0.4 am selben Tag freigeben. Kannst du sehen, dass das Erscheinungsdatum völlig irrelevant ist? Möglicherweise haben Sie 2013 die Arbeit an Version 2 eingestellt und seitdem nur einige wesentliche Fehlerkorrekturen veröffentlicht. Das Datum ist im Vergleich zur Versionsnummer irrelevant.
quelle
Ich finde es funktioniert super. Ich verwende es für interne Software (jjjj.mm.dd) und für Open Source-Software, die ich veröffentlicht habe.
Es funktioniert möglicherweise nicht in allen Fällen.
quelle
Technisch kann es kein Datum für die Versionsnummer verwenden, aber es kann eine Datumsnummer für den Kunden anzeigen. Zum Beispiel macOS 16.7.23 --- das bedeutet: 23.7.2016
Ich denke, Technologie ist nicht das Problem, das Problem ist, wie es sich anfühlt? Wenn Sie eine Datumsnummer verwenden, die Software lebendig machen könnte, so wie ein Mann, der Geburtstag hat. Jedes Jahr, in dem wir erwachsen werden, wächst das Gleiche wie Software.
Die Hausnummer sieht aus wie die Maschine, die Maschine, keine lebendige, keine lebendige.
quelle