ALM-Prognosen #3: Verteilte Versionskontrollen halten Einzug in Unternehmen

Der dritte Teil der ALM-Prognosen erörtert die wesentlichen Vorteile verteilter Versionskontrolle für das Application Lifecycle Management und weist auf zu vermeidende Schwächen bei Tools und Praktiken hin.

vorlesen Druckansicht 27 Kommentare lesen
Lesezeit: 10 Min.
Von
  • Mik Kersten
Inhaltsverzeichnis

Vor der Entscheidung, zu einem verteilten Versionskontrollsystem zu migrieren, stehen derzeit viele Teams und Organisationen. Der dritte Teil der ALM-Prognosen erörtert die wesentlichen Vorteile verteilter Versionskontrolle für das Application Lifecycle Management und weist auf zu vermeidende Schwächen bei Tools und Praktiken hin.

Vor einigen Jahren provozierte Linus Torvalds in einer Präsentation über Git und verteilte Versionskontrollsysteme (DVCS) mit der Aussage: "wenn ihr wirklich gerne CVS benutzt – solltet ihr euch in einer Anstalt befinden". Seitdem ist die Wahrnehmung von DVCS rapide gestiegen, und für viele, die eine Migration zur verteilten Versionskontrolle erwägen, füllen die Diskussionen viele Kaffeepausen und Sitzungen. Nachdem dann die ersten Schritte Richtung DVCS getan sind, werden die Diskussionen hitziger und drehen sich darum, wie sich bewährte Praktiken einführen lassen.

Mehr Infos

ALM-Prognosen

Der rapide Aufschwung von Git, Mercurial und Co. in der Open-Source-Entwicklung verdeutlicht, dass die traditionellen Versionsmanagementsysteme und das zentralisierte Modell für Commit-Rechte nicht mehr den heutigen Wünschen der Entwicklergemeinde entsprechen. Wie häufig Git derzeit neu eingeführt wird, ist darüber hinaus ein Beleg dafür, dass DVCS funktioniert und mit der Open-Source-Entwicklung skaliert. Das wird etwa dadurch deutlich, dass im Februar 2012 knapp die Hälfte aller Eclipse-Projekte auf Git umgezogen waren, obgleich die Git-Unterstützung innerhalb der Eclipse-Welt noch ein junges Unterfangen ist. Zuvor hatte schon eine Umfrage der Eclipse Foundation ergeben, dass sich der Einsatz von Git innerhalb eines Jahres auf 17,4 Prozent fast verdoppelt hat.

Der zentrale Nutzen von DVCS ist, dass sich die von der Versionskontrolle verwalteten Regeln und Konventionen zur Zusammenarbeit dem Nutzerkreis anpassen lassen. Ein zentralisiertes Rechtemodell in der Versionsverwaltung zwingt die Entwickler zur Bildung von Teamgrenzen, um die entsprechenden Rechte zu verwalten.

Mit der aktiven Unterstützung solch klarer Verantwortlichkeiten begibt man sich in eine vergleichbare Grauzone wie mit der Meinung, dass eine modulare, objektorientierte Spaltung von Software ausreichend sei, um die Komplexität eines großen Systems zu verwalten. Sie ist es nicht. Dependency Injection, aspektorientierte und deklarative Programmierung sind weitere Schlüsselkomponenten moderner Programmiermodelle. Mit anderen Worten: Um die Implementierung des Systems effektiv umzusetzen, darf man die Entwickler nicht in ihren Projekten einzäunen. Vielmehr ist die Interaktion zwischen den Teams und über deren Grenzen hinweg die eigentliche Antriebskraft für Innovation. Diese Interaktion ist jedoch nicht nur auf der Ebene der Versionskontrolle zu finden.

Hier kommen Tasks ins Spiel. Egal ob in Form von User Stories, Features oder Bugfixes machen sie die Planung und den Lebenszyklus einer großen Anwendung aus. Sie stehen somit über der Modularität des Systems, indem sie die Diskussionen zwischen Entwicklern und Endanwendern festhalten und nicht die APIs und Module der Software. Die Zusammenfassung von Tasks zu Benutzerberichten, Plänen und Releases treibt die Weiterentwicklung der Software im Laufe der Zeit voran und definiert die Grenzen, die sich zwischen Entwicklern herausbilden.

Zentralisierte Versionsverwaltungssysteme konzentrieren sich komplett auf Änderungen und ignorieren die soziale Komponente der Zusammenarbeit. Ein großes System zu verwalten bedeutet, ein System in Komponenten zu zerlegen und die Zugangskontrolle mit Rechten für Commits zu regeln. Das bringt Versionskontrolle mit der Modularität des Systems zusammen, nicht mit der Art, wie Entwickler am System arbeiten. Die unterschiedlich gestaltete Zusammenarbeit der Entwickler und die Review-Aktivitäten sind festzuhalten und zu vereinfachen – genau das ermöglicht DVCS.

Visualisierung der Geschichte des Eclipse-Projekts Mylyn

Im Video entspricht die Verzeichnisstruktur der Modularität des Mylyn-Projekts. Nach ein paar Sekunden sieht man, dass sich die Aktivität der Entwickler nicht nur auf einzelne Module beschränkt, sondern sich über die Grenzen hinweg bewegt. Innovation lässt sich nur erreichen, wenn diese Grenzen überschritten und Ideen umgesetzt werden, anstatt nur zu reagieren und zu versuchen, Probleme zu umgehen. Die gezeigten Aktivitäten entsprechen den von den Mylyn-Committern durchgeführten Tasks, Changesets und Patch Reviews der letzten Jahre.

Mit der Vereinfachung der alltäglichen Vorgänge zur Unterstützung des Arbeitsablaufs zwischen Entwicklern (wie Task-basiertes Branching und Merging) verändert DVCS den Ablauf, indem es Entwicklern erleichtert, ihre Aktivität innerhalb des SCM-Systems festzuhalten, statt diese durch externe Tools zu verfolgen. Durch die tägliche Zusammenarbeit, regelmäßigen Reviews und das entgegengebrachte Vertrauen zwischen Entwicklern hat DVCS die Welt der Versionskontrolle entscheidend verändert.