Eindeutige Kennzeichnung des Versionsstands einer Software

Zwei Personen haben einige Jahre lang gemeinsam eine Software entwickelt und immer weiter entwickelt. Wer von beiden jeweils welchen Teil des Codes geschrieben hat, ist nicht mehr nachvollziehbar. Die Software befindet sich in einem Gitlab.

Nun sind die beiden Entwickler uneins über die zukünftige weitere Entwicklung.

Deshalb wollen sich gegenseitig eine uneingeschränkte Lizenz an dem jetzigen Stand der Software einräumen.

Dieser jetzige Stand soll dauerhaft „fixiert“ werden und in einem schriftlichen Vertrag rechtssicher dokumentiert werden.

Zukünftig soll dann jeder der beiden Entwickler den fixierten Code verwenden dürfen, um die Software nach seinen Ideen weiterzuentwickeln.

Meine Idee wäre, den Code als ZIP-Datei zu speichern. Von der ZIP-Datei dann einen Hashwert zu erzeugen. Den Hashwert in den Vertrag zu schreiben. Und jeder der beiden Entwickler bekommt eine Kopie der ZIP-Datei.

Ist das schlau und ausreichend? Oder habt Ihr bessere Ideen?

Microfilm, beim Notar hinterlegt. Je eine Kopie pro Partei.

So wurde Software in den 90ern dokumentiert. Ist das noch immer State of the Art?

State of Art nicht, aber im Streitfall etwas womit jeder umgehen kann, und jeder versteht. Auch ohne Computerwissen.

Schöne Antwort. – Und wie wäre State of the Art?

microfilm eher weniger mittlerweile würd ich mal sagen :wink:

Hat in der Tat den Vorteil, dass es auch mit einfachsten Hilfsmitteln (Lupe) bis in alle Ewigkeit gelesen werden kann. Meines Wissens nach werden die wirklich wichtigen staatlichen Dokumente auf Mikrofilm in irgendwelchen Bergwerksstollen langzeitarchiviert.

Usability ist gruselig, wenn ich mich an Mikrofilm und -fiche aus der Uni-Bibliothek erinnere :grimacing:

Immer noch besser als in Stein gemeißelt, wobei letzteres im Gegensatz zum Mikrofilm auch einem Brand standhält. Ich sehe schon das Zeitalter der Steinmetze wiederkommen. Millionen Zeilen Programmcode in Stein meißeln.

2 „Gefällt mir“

Trifft nicht ganz das Thema, aber mit git blame kann man doch sehen, wer welche Code-Zeile zumindest zum letzten Mal verändert/commited hat.

https://www.git-scm.com/docs/git-blame

Weiter frage ich mich: Ist denn ZIP überhaupt deterministisch?
Ein kleiner Test bei mir hat ergeben:
Zippen eines Ordners mit 7zip und anschliessendes berechnen einer SHA256 ergibt jedes Mal (3x) einen anderen Hash-Wert.

Die SHA256 ohne ZIP über den gesamten Ordner ergibt, natürlich wie erwartet immer die gleiche Checksumme.

Hier ist noch ein guter Read zum Thema ZIP und Determinismus:
https://zerostride.medium.com/building-deterministic-zip-files-with-built-in-commands-741275116a19

Sie nehmen beide eine Kopie der gezippten Datei und die wird per Hashwert identifiziert (wobei ich den Test mit unterschiedlichen Ergebnissen zu zip nicht bestätigen kann).

Praktisch sollte man sowieso einen RA zum Urheberrecht einbinden, der die Vereinbarung prüft (kostet, erspart aber späteren Streitaufwand). Und den kann man auch gleich fragen.