- Microsoft Office nutzte über lange Zeit das interne Quellcodeverwaltungssystem Source Depot und führte dann zur Verbesserung der Developer Experience und für technische Innovationen eine groß angelegte Migration zu Git durch
- Source Depot war durch zentrale Architektur, langsames Branching und umständliche Workflows in der Produktivität begrenzt; der Umstieg auf Git erforderte die Arbeit von Hunderten von Ingenieuren über mehrere Jahre
- Im Verlauf der Migration wurden große technische und organisatorische Herausforderungen bewältigt, darunter die Entwicklung neuer Technologien wie VFS for Git, die Portierung bestehender Build-/Test-Infrastruktur und der Parallelbetrieb beider Systeme
- Für eine erfolgreiche Umstellung wurden ein auf „Champions“ basierendes Kommunikationsmodell, radikale Transparenz, praxisnahe Schulungen und eine sofortige Rollback-Strategie als kollaborativer und menschenzentrierter Ansatz hervorgehoben
- Nach der Migration zeigten sich positive Ergebnisse wie kürzere Onboarding-Zeiten, eine höhere Git-Präferenz (89 %) und gesteigerte Produktivität; zugleich blieben wichtige Lehren für große technische Veränderungen zurück
Von Source Depot zu Git: Erfahrungen aus der groß angelegten Migration bei Microsoft Office
Eine neue Herausforderung: Entwicklerproduktivität maximieren
- Die Steigerung der Entwicklerproduktivität ist „Multiplier work“, deren Wert in großen Organisationen besonders hoch ist
- Ein repräsentatives Beispiel dafür war das Projekt zur Migration von Microsoft Office von Source Depot zu Git
- Dabei handelte es sich nicht um einen einfachen Toolwechsel, sondern um ein Großprojekt über lange Zeit mit Hunderten von Ingenieuren und komplexen Systemen
Source Depot: Quellcodeverwaltung aus jener Zeit
- Anfang der 2000er betrieb Microsoft mit Source Depot ein eigenes Versionsverwaltungssystem auf Basis von Perforce-Technologie
- Source Depot hatte Grenzen bei der Arbeitseffizienz durch langsames Branching, Zentralisierung, lange Code-Checkout-Zeiten und umständliche Merge-Verfahren (Reverse/Forward Integrate)
- Es war stark mit der gesamten Entwicklungsinfrastruktur (Build, Release, Workflow) gekoppelt, sodass ein einfacher Austausch strukturell nicht möglich war
- Der Git-Umstieg von Microsoft Office erforderte mehrere Jahre und die Arbeit von Hunderten von Ingenieuren
Beginn mit OneNote: Der Start der Migration
- In der Office-Engineering-Organisation fiel die Entscheidung für einen umfassenden Git-Umstieg aufgrund der Kosten für Wartung und Patches von Source Depot sowie der Anforderung nach „wettbewerbsfähiger Technologie“
- Da die Produkte der Office-Suite je nach Release-Zyklus (mehrere Monate, halbjährlich, monatlich, Insider) unterschiedliche Entwicklungspläne hatten, war ein langfristiger Parallelbetrieb von Source Depot und Git nötig
- Zentrale Aufgaben waren die Sicherung konsistenter Versionsverwaltung in Office, die Build-Validierung und die Portierung der Legacy-Testinfrastruktur
Die Größe von Office und die Kommunikationsstrategie
- Office war damals eine extrem große Organisation, in der 4.000 Ingenieure zusammenarbeiteten
- Für jedes Team wurde ein 'Developer Satisfaction Champion' benannt; über ein Hub-and-Spoke-Modell zwischen den Teams wurde eine reibungslose Feedback- und Kommunikationsstruktur aufgebaut
- Der Autor war Champion für OneNote und übernahm damit eine Schlüsselrolle direkt im Zentrum der groß angelegten Migration
VFS for Git: Die Grenzen extrem großer Codebasen überwinden
- Da bereits ein einziges git clone mehr als 200 GB erforderte, wurde das Problem gemeinsam mit GitHub durch Virtual File System for Git (VFS for Git) gelöst
- VFS for Git überwand die Grenzen von Standard-Git, indem nur tatsächlich benötigte Dateien geladen wurden
- In Zusammenarbeit mit Microsoft Windows war dies eine Erfahrung an der Grenze dessen, was bei einigen der größten Versionsverwaltungssysteme der Branche möglich war
Der stufenweise Migrationsansatz
Phase 1: Paralleles Universum (Parallel Universe)
- Es wurde ein Bridge-Service aufgebaut, der Source Depot und Git in Echtzeit synchronisierte; Probleme durch Inkonsistenzen und Modellunterschiede beider Systeme (Branch-Struktur, Changelists usw.) wurden wiederholt verbessert
- Der Ablauf aus Office-Main-/Private-Branches, Synchronisierung und Build wurde als 24/7-Automatisierungssystem betrieben
- Erst nach drei Anläufen wurde ein stabil funktionierendes paralleles System umgesetzt
Phase 2: Gleichwertigkeitsnachweis
- Sämtliche Test-Suites wurden wiederholt auf beiden Systemen ausgeführt, um zu belegen, dass die Build-Ergebnisse vollständig identisch waren
- Feine Unterschiede bei Zeilenumbrüchen, Groß-/Kleinschreibung und Testresultat-Formaten wurden über Monate hinweg debuggt und beseitigt
- Mit dem Ergebnis „Green across the board“ (Tests auf beiden Systemen erfolgreich) war die Vorbereitung für den eigentlichen Umstieg abgeschlossen
Ein menschenzentrierter Ansatz
Mehrkanalige, wiederholte Kommunikation
- Um die Zeitpläne von mehr als 4.000 Ingenieuren und Dutzenden Teams aufeinander abzustimmen, wurde mit Champions pro Team und einer intensiven Kommunikationsstruktur gearbeitet
- Wichtige Ankündigungen wurden mindestens dreimal wiederholt (E-Mail, Teams, Wiki, Meetings usw.), um Verwirrung zu minimieren
- Bei Problemen wurde durch sofortige und transparente Offenlegung von Informationen Vertrauen geschaffen
Schulung und Eingewöhnung für Git
- Für Ingenieure, die zehn Jahre lang mit Source Depot gearbeitet hatten, wurde ein stufenweises Lernsystem mit praxisnahen Übungsumgebungen und Leitfäden für Umstiegsbefehle bereitgestellt
- Über eine videobasierte Bibliothek mit Fokus auf reale Arbeitssituationen wurde szenariobasiertes Lernen ermöglicht
- Das diente nicht nur dem Abbau von Unsicherheit und dem Kompetenzaufbau, sondern auch der Anpassung an bestehende Workflows
Rollback-Strategie und Sicherheitsmechanismen
- Beim eigentlichen Umstieg erhielt der Director einen „roten Knopf“, mit dem bei schwerwiegenden Problemen jederzeit sofort ein Rollback möglich war
- Teile der bisherigen Historie aus Source Depot wurden über lange Zeit aufbewahrt, sodass die bestehende Entwicklungshistorie sicher erhalten blieb
Ergebnisse und wichtigste Erfolge
- Nach der Umstellung zeigte sich eine um 50 % kürzere Onboarding-Zeit, eine Git-Präferenz von 89 %, verbesserte Build-Performance sowie Produktivitätsgewinne bei Code Reviews und Zusammenarbeit
- Ingenieure bewerteten positiv, dass sie in der Branche übertragbare Fähigkeiten erwerben konnten
- Auch die direkte Einsatzfähigkeit neuer Mitarbeiter stieg
Zentrale Lehren aus einer groß angelegten Migration
- Für den Erfolg muss nicht nur in Technik, sondern weit mehr als erwartet in menschenzentrierte Kommunikation investiert werden
- Entscheidend sind der Aufbau paralleler Systeme, der Nachweis vollständiger Gleichwertigkeit, ein klarer Rollback-Plan von Beginn an und die Hervorhebung von Schlüsselpersonen (Champions)
- Qualitative Kennzahlen wie Zufriedenheit müssen unbedingt mitgemessen werden; organisatorische Stabilität und psychologische Sicherheit sind im Wandel besonders wichtig
- Das Wesen großer Veränderungen liegt in einem flexiblen und systematischen Change-Management über die gesamte Organisation hinweg
Fazit und mögliche Anwendung darüber hinaus
- Die Git-Migration von Office war ein historisches Projekt, das durch jahrelange Vorbereitung und mehrere Monate Umsetzung zustande kam
- Letztlich bleibt es als Beispiel für eine erfolgreich vorangetriebene organisatorische Veränderung bei gleichzeitiger Sicherung der Arbeitszusammenhänge Tausender Menschen bestehen
- Auch bei anderen großen Veränderungen wie Cloud-Migration, der Zerlegung monolithischer Architekturen oder Framework-Upgrades lassen sich Parallelvalidierung, wiederholte Kommunikation und schnell geplantes Rollback gleichermaßen anwenden
- Technische Details (Build-Infrastruktur, Offline-/Vertragsthemen usw.) wurden zwar nicht weiter behandelt, doch die wichtigste Lehre ist der strategische und organisatorische Ansatz für große technische Veränderungen
3 Kommentare
Wenn man viele Binärdateien verarbeitet, ist Git vielleicht nicht die beste Wahl, aber für codezentrierte Repositories scheint Git völlig auszureichen.
Das war sicher auch intern bei Microsoft eine große Veränderung, aber ich finde es auch positiv, dass dadurch Funktionen wie
partial cloneundsparse checkoutsowie Tools wie Scalar öffentlich verfügbar gemacht wurden und nun auch extern genutzt werden können hahaHacker-News-Kommentare
stash, Stage auf Hunk-Ebene und interaktives Rebase.