- Microsoft Office usó durante mucho tiempo Source Depot, su sistema interno de control de código fuente, pero luego llevó a cabo una migración masiva a Git para mejorar la experiencia de los desarrolladores e impulsar la innovación tecnológica
- Source Depot tenía límites de productividad por ser centralizado, tener branching lento y flujos de trabajo incómodos, y la migración a Git requirió varios años de trabajo y a cientos de ingenieros
- Durante la migración se superaron grandes retos técnicos y organizacionales, como el desarrollo de nuevas tecnologías como VFS for Git, la migración de la infraestructura existente de build y pruebas, y la operación paralela de ambos sistemas
- Para lograr una transición exitosa, se puso énfasis en un enfoque colaborativo y centrado en las personas, con un sistema de comunicación basado en "champions", transparencia decidida, capacitación práctica y una estrategia de rollback inmediato
- Después de la migración hubo resultados positivos como menor tiempo de onboarding, mayor preferencia por Git (89%), mejor productividad y aprendizajes clave sobre cambios tecnológicos a gran escala
De Source Depot a Git: la experiencia de la migración a gran escala de Microsoft Office
Un nuevo reto: maximizar la productividad de los desarrolladores
- Mejorar la productividad de los desarrolladores es un "Multiplier work", y su valor crece cuanto más grande es la organización
- El proyecto de migración de Microsoft Office de Source Depot a Git fue un caso representativo de esa clase de experiencia
- Este trabajo no fue solo un cambio de herramienta, sino un proyecto enorme que involucró a cientos de ingenieros, sistemas complejos y un largo periodo de tiempo
Source Depot: cómo era la gestión de código en esa época
- A inicios de los 2000, Microsoft operaba Source Depot, su propio sistema de control de versiones basado en tecnología de Perforce
- Source Depot tenía límites de eficiencia por su branching lento, centralización, largos tiempos de checkout de código y una forma incómoda de hacer merges (Reverse/Forward Integrate)
- Estaba fuertemente acoplado a toda la infraestructura de desarrollo (build, release, workflow), por lo que no podía sustituirse de manera simple
- La migración de Office a Git requirió años de trabajo y el esfuerzo de cientos de ingenieros
Empezando con OneNote: el inicio de la migración
- Dentro de la organización de ingeniería de Office, se decidió una migración grande a Git por el costo de mantener y aplicar parches a Source Depot y por la necesidad de una “tecnología competitiva”
- La suite de Office tenía calendarios de desarrollo distintos según sus ciclos de lanzamiento (cada pocos meses, semestral, mensual, Insider), así que fue necesario operar Source Depot y Git en paralelo durante un largo tiempo
- Surgieron como tareas esenciales la consistencia del control de versiones en Office, la validación de builds y la migración de la infraestructura legacy de pruebas
La escala de Office y la estrategia de comunicación
- En ese momento, Office era una organización gigantesca en la que colaboraban 4,000 ingenieros
- Se designó un 'Developer Satisfaction Champion' por equipo, y mediante un modelo hub-and-spoke se estableció una estructura de comunicación y retroalimentación fluida entre los equipos
- El autor fue el champion de OneNote y desempeñó un papel clave en el terreno durante la migración a gran escala
VFS for Git: rompiendo los límites de una base de código gigantesca
- Como un solo git clone requería más de 200 GB por el tamaño del código, el problema se resolvió con Virtual File System for Git (VFS for Git), desarrollado junto con GitHub
- VFS for Git superó las limitaciones de Git tradicional al descargar solo los archivos que realmente se usaban
- En colaboración con Microsoft Windows, fue una experiencia de superar los límites de uno de los sistemas de control de versiones más grandes de la industria
Enfoque por etapas de la migración
Etapa 1: universo paralelo (Parallel Universe)
- Se construyó un servicio puente para sincronizar Source Depot y Git en tiempo real, y se mejoraron de forma iterativa los problemas de inconsistencias y diferencias de modelo entre ambos sistemas (estructura de ramas, changelist, etc.)
- El proceso de sincronización y build entre la rama principal/privada de Office se operó con un sistema automatizado 24/7
- Tras tres reintentos, se logró implementar un sistema paralelo que funcionaba de forma estable
Etapa 2: verificación de equivalencia
- Se ejecutaron repetidamente todos los test suites en ambos sistemas para demostrar que los resultados de build eran exactamente iguales
- Durante meses se depuraron y resolvieron diferencias sutiles, como el formato de saltos de línea, mayúsculas/minúsculas y el formato de los resultados de pruebas
- Con el logro de "Green across the board" (pruebas aprobadas en ambos sistemas), todo quedó listo para pasar a la etapa de cambio real
Un enfoque centrado en las personas
Comunicación repetida y por múltiples canales
- Para coordinar los calendarios de más de 4,000 ingenieros y decenas de equipos, se construyó un sistema intensivo de comunicación con champions por equipo
- Los avisos importantes se comunicaban al menos 3 veces (correo, Teams, wiki, reuniones, etc.) para reducir al mínimo la confusión
- Cuando surgían problemas, se ganaba confianza con una divulgación inmediata y transparente de la información
Capacitación y adaptación a Git
- Para los ingenieros acostumbrados durante 10 años a Source Depot, se preparó un sistema de aprendizaje gradual con entornos de capacitación prácticos y guías de comandos de transición
- A través de bibliotecas de video centradas en la práctica, se ofreció aprendizaje basado en escenarios reales
- Más allá de reducir la ansiedad y fortalecer capacidades, también se apoyó la adaptación al workflow existente
Estrategia de rollback y mecanismos de seguridad
- Durante el cambio real, se le dio al Director un "botón rojo", de modo que pudiera hacer rollback inmediato en cualquier momento si surgía un problema grave
- Parte del historial anterior de Source Depot se conservó durante mucho tiempo, manteniendo segura la historia de desarrollo existente
Resultados y principales logros
- Después de la migración se observó un recorte del 50% en el tiempo de onboarding, una preferencia por Git del 89%, mejoras en el rendimiento de build y ganancias de productividad como mayor eficiencia en code review y colaboración
- Los ingenieros valoraron positivamente la adquisición de habilidades transferibles dentro de la industria
- También aumentó la posibilidad de que el personal nuevo pudiera integrarse y aportar de inmediato
Lecciones clave de una migración a gran escala
- Para tener éxito, hay que invertir más de lo esperado no solo en los aspectos técnicos, sino también en una comunicación centrada en las personas
- Son fundamentales la construcción de sistemas paralelos, la demostración de equivalencia perfecta, el diseño sólido de rollback desde el inicio y el papel del personal clave (champions)
- También es indispensable medir indicadores cualitativos como la satisfacción, y en procesos de cambio importan mucho la estabilidad organizacional y la sensación de seguridad psicológica
- La esencia de los cambios a gran escala es una gestión del cambio flexible y sistemática en toda la organización
Conclusión y aplicación futura
- La migración de Office a Git fue un proyecto histórico realizado tras años de preparación y varios meses de ejecución
- En última instancia, quedó como un caso exitoso de impulsar un cambio organizacional garantizando la continuidad del trabajo de miles de personas
- En otros cambios a gran escala, como migraciones a la nube, descomposición de arquitecturas monolíticas o upgrades de frameworks, también pueden aplicarse del mismo modo la validación en paralelo, la comunicación repetitiva y el diseño de rollback rápido
- No se abordaron en detalle los aspectos técnicos específicos (infraestructura de build, temas offline/contractuales, etc.), pero la lección más importante es el enfoque estratégico y organizacional ante cambios tecnológicos a gran escala
3 comentarios
Si manejas muchos archivos binarios, quizá
gitno sea lo más adecuado, pero si es un repositorio centrado en código, parece quegites más que suficiente.Seguramente fue un cambio grande incluso dentro de MS, pero también parece positivo que gracias a eso funciones como
partial cloneysparse checkout, así como herramientas como Scalar, se hayan hecho públicas y ahora puedan usarse afuera también jajaComentarios en Hacker News
stash, hacerstagepor hunks einteractive rebase.