- Microsoft Office a longtemps utilisé Source Depot, son système interne de gestion de code source, avant de mener une migration à grande échelle vers Git afin d’améliorer l’expérience développeur et de favoriser l’innovation technique
- Source Depot, avec son fonctionnement centralisé, ses branches lentes et ses workflows peu pratiques, limitait la productivité, et le passage à Git a nécessité le travail de centaines d’ingénieurs sur plusieurs années
- La migration a impliqué de surmonter d’importants défis techniques et organisationnels, notamment via le développement de nouvelles technologies comme VFS for Git, le portage de l’infrastructure existante de build/test et l’exploitation parallèle des deux systèmes
- Pour réussir cette transition, l’équipe a mis l’accent sur une approche collaborative et centrée sur l’humain, avec un système de communication reposant sur des "champions", une transparence assumée, une formation pragmatique et une stratégie de rollback immédiat
- Après la migration, les résultats ont été positifs : réduction du temps d’onboarding, préférence accrue pour Git (89 %) et gains de productivité, avec à la clé plusieurs enseignements majeurs sur les grands changements techniques
De Source Depot à Git : retour d’expérience sur la migration à grande échelle de Microsoft Office
Un nouveau défi : maximiser la productivité des développeurs
- Améliorer la productivité des développeurs relève du "Multiplier work", dont la valeur augmente avec la taille de l’organisation
- Le projet de migration de Microsoft Office de Source Depot vers Git en a été un exemple représentatif
- Il ne s’agissait pas d’un simple changement d’outil, mais d’un vaste projet impliquant des centaines d’ingénieurs, des systèmes complexes et une exécution sur une longue période
Source Depot : la gestion de code source à l’époque
- Au début des années 2000, Microsoft exploitait Source Depot, son propre système de gestion de versions basé sur la technologie Perforce
- Source Depot souffrait de branches lentes, d’une architecture centralisée, de temps de checkout très longs et d’un mode de fusion peu pratique (Reverse/Forward Integrate), ce qui limitait l’efficacité du travail
- L’ensemble était fortement couplé à l’infrastructure de développement (build, release, workflow), ce qui rendait un simple remplacement impossible
- La transition de Microsoft Office vers Git a nécessité plusieurs années et les efforts de centaines d’ingénieurs
En commençant par OneNote : le début de la migration
- Au sein de l’organisation d’ingénierie Office, le coût de maintenance et de patch de Source Depot ainsi que le besoin de technologies « compétitives » ont conduit à décider une migration massive vers Git
- La suite Office suivait des calendriers de développement différents selon les cycles de publication (plusieurs mois, semestriel, mensuel, Insider), ce qui a imposé une coexistence prolongée de Source Depot et Git
- La cohérence de la gestion de versions d’Office, la validation des builds et le portage de l’infrastructure de test legacy sont devenus des chantiers essentiels
L’échelle d’Office et la stratégie de communication
- Office était alors une organisation gigantesque comptant 4 000 ingénieurs collaborant ensemble
- Un 'Developer Satisfaction Champion' a été désigné dans chaque équipe, et un modèle hub-and-spoke a été mis en place pour assurer une structure fluide de feedback et de communication entre les équipes
- L’auteur, champion pour OneNote, a joué un rôle clé sur le terrain pendant cette migration de grande ampleur
VFS for Git : dépasser les limites d’une base de code gigantesque
- Une seule commande
git clone nécessitait plus de 200 Go, un problème résolu grâce à Virtual File System for Git (VFS for Git), développé conjointement avec GitHub
- VFS for Git ne récupérait que les fichiers réellement utilisés, permettant de dépasser les limites du Git standard
- En collaboration avec Microsoft Windows, l’équipe a ainsi franchi les limites de l’un des plus grands systèmes de gestion de versions du secteur
Une approche par étapes de la migration
Étape 1 : l’univers parallèle (Parallel Universe)
- Un service de bridge synchronisant Source Depot et Git en temps réel a été mis en place, avec des améliorations itératives pour résoudre les écarts et différences de modèle entre les deux systèmes (structure des branches, changelist, etc.)
- Le processus branche principale/branche privée d’Office - synchronisation - build a été exploité sous la forme d’un système automatisé 24/7
- Ce n’est qu’au troisième essai qu’un système parallèle stable a pu être mis en production
Étape 2 : la validation d’équivalence
- L’ensemble des suites de tests a été exécuté à répétition sur les deux systèmes afin de prouver que les résultats de build étaient parfaitement identiques
- Des différences subtiles liées aux fins de ligne, à la casse ou encore au format des résultats de tests ont été déboguées et corrigées pendant plusieurs mois
- Le résultat "Green across the board" (tests validés sur les deux systèmes) a marqué la fin de la préparation avant le basculement réel
Une approche centrée sur l’humain
Communication multicanal et répétée
- Pour aligner les plannings de plus de 4 000 ingénieurs et de dizaines d’équipes, une structure de communication intensive a été bâtie autour des champions de chaque équipe
- Les annonces importantes étaient répétées au moins trois fois (email, Teams, wiki, réunions, etc.) afin de limiter toute confusion
- En cas de problème, une communication immédiate et transparente permettait de conserver la confiance
Formation à Git et adaptation
- Pour les ingénieurs habitués à Source Depot depuis dix ans, un environnement de formation pratique ainsi qu’un guide des commandes de transition ont été mis en place pour accompagner un apprentissage progressif
- Une vidéothèque orientée usage concret a permis de proposer un apprentissage fondé sur des scénarios réels
- Au-delà de la réduction de l’anxiété et du renforcement des compétences, l’objectif était d’aider à l’adaptation aux workflows existants
Stratégie de rollback et garde-fous
- Lors du basculement réel, un "bouton rouge" a été confié au Director afin de permettre un rollback immédiat à tout moment en cas de problème grave
- Une partie de l’historique de Source Depot a été conservée pendant longtemps, garantissant la préservation de l’historique de développement existant
Résultats et principaux acquis
- Après la migration, on a observé des gains de productivité : temps d’onboarding réduit de 50 %, préférence pour Git mesurée à 89 %, amélioration des performances de build, meilleure efficacité des code reviews et hausse de la collaboration
- Les ingénieurs ont également apprécié l’acquisition de compétences transférables dans l’industrie
- La capacité à rendre les nouveaux arrivants opérationnels plus rapidement s’est elle aussi renforcée
Principaux enseignements d’une migration à grande échelle
- Réussir exige d’investir bien davantage que prévu dans la communication centrée sur les personnes, et pas seulement dans les aspects techniques
- Il faut mettre l’accent sur la construction d’un système parallèle, la démonstration d’une équivalence parfaite, la conception d’un rollback solide dès le départ et le rôle des personnes clés (champions)
- Mesurer aussi des indicateurs qualitatifs comme la satisfaction est indispensable, et la stabilité organisationnelle ainsi que le sentiment de sécurité psychologique sont cruciaux pendant le changement
- La véritable nature d’un changement à grande échelle réside dans une gestion du changement souple et structurée à l’échelle de toute l’organisation
Conclusion et applications futures
- La migration d’Office vers Git a été un projet historique, préparé pendant des années puis exécuté sur plusieurs mois
- Elle reste au final un cas exemplaire de transformation organisationnelle menée avec succès tout en garantissant l’interconnexion du travail de milliers de personnes
- Dans d’autres transformations majeures — migration vers le cloud, décomposition d’une architecture monolithique, mise à niveau d’un framework — les mêmes principes peuvent s’appliquer : validation en parallèle, communication répétée, conception d’un rollback rapide
- Les détails techniques (infrastructure de build, enjeux offline/contractuels, etc.) n’ont pas été abordés ici, mais la leçon essentielle reste l’importance de l’approche stratégique et organisationnelle dans les grands changements techniques
3 commentaires
Si vous manipulez beaucoup de fichiers binaires, Git n’est peut-être pas adapté, mais pour un dépôt centré sur le code, Git semble largement suffisant.
Cela a sans doute aussi été un grand changement en interne chez MS, mais grâce à cela, le fait que des fonctionnalités comme
partial clone,sparse checkoutou des outils comme Scalar aient aussi été publiés et rendus utilisables à l’extérieur me semble être un effet positif, haha.Commentaire Hacker News
stash, lestagepar hunk, lerebaseinteractif, etc.