Naja, 3 Varianten, das ist ja nix. Da gibt es ganz andere Konstellation,
wo's wirklich hässlich wird.
Aber 3 Varianten sind einfach:
Es gibt nur ein "Projekt" bzw. Repo. Daraus werden immer die drei
Varianten gebaut. Die Architektur der Software ist eben an diesen 3
Varianten ausgerichtet. Es gibt einen Kern, den alle Varianten
verwenden, und den Variantenspezifischen Code.
Mein (schmerzhaft) gemachte Erfahrung:
Drei Kopien die sich in Details unterscheiden, sind eine Garantie für
absolutes Chaos. Werdet ihr in Zukunft noch merken. Wird mit der Zeit
immer schlimmer. Bis keine Wartung mehr möglich ist. Horror pur.
Auch der Ansatz mit Bibliotheken etc. verkompliziert das ganze Handling
nur ungemein. Unterm Strich arbeitet man dennoch nur an einem großen
"Projekt" das nun über unterschiedlichen Bibliotheken und den drei
Varianten verteilt ist. Eine wirkliche Unabhängigkeit existiert nicht.
Die Realität sieht so aus: Bug tritt in Variante A auf. Die
Wahrscheinlichkeit dass der Bug in einer Bibliothek ist, ist umso
größer, je weniger sich die Varianten unterscheiden. Also wird man
meistens an den gemeinsamen Bibliotheken arbeiten. Dabei hat man viel
schlechtere Testmöglichkeiten, da jedes mal die geänderte Bibliothek
irgendwie in die aktuelle Variante importiert werden muss, mit der man
gerade arbeitet. Overhead ohne Ende. Wenn dann die Bibliothek gefixt
wurde, und die aktuelle Arbeits-Variante darauf angepasst wurde, muss
man die geänderte Bibliothek nun in die verbleibenden anderen Varianten
integrieren.
Mit den Bibliotheken gewinnt man nix, außer ein Riesenaufwand für nix.
Am Ende vom Tag muss man eh immer alle drei Varianten gemeinsam
bearbeiten. Von daher kann man sich diesen Aufwand sparen.
Bibliotheken funktionieren witzigerweise dann am besten, wenn sich
Bibliotheks-Team und Anwendungs-Team nicht kennen, geschweige denn
gegenseitig beeinflussen können. Dann macht das Bibliotheks-Team was es
will, und das Anwender-Team muss die Bibliothek fressen, so wie sie ist.
Aber bei Varianten in einem Unternehmen existiert diese Trennung nicht.
Das ist der Kern des Problems.