Large-Scale Changes at Google: Lessons Learned From 5 Yrs of Mass Migrations
summary
Google runs migrations across a single monorepo of 2 billion lines of code with ~60k changes/day and hundreds of millions of C++ lines, and succeeds by using AST tools (not regex), automation and process: Clang MR, clang-format and clang-tidy for rewrites and regression prevention, Kythe for semantic dependency queries, robots that submit hundreds of CLs, incremental non-atomic refactors (example: converting ~500k scoped_ptr uses to unique_ptr in small batches, typically 25 files at a time), and centralized owners who can flip a single rollout bit.
AI-written summary · about
chapters (9)
- 0:00Introduction and motivation
- 13:06Non-atomic refactoring approach
- 14:54Lesson one: Testing
- 18:43Lesson two: Know your codebase
- 24:23Lesson three: Incrementality
- 37:14Lesson four: Hyrum's law
- 41:49Organizational changes
- 54:11Design systems for change
- 57:03Q&A
related talks
44mHow Google Uses LLMs to Migrate Code Across Its Monorepo
01h 31m“C++ as a "Live at Head" Language”
23mRefactoring Go in Large Codebases
01h 35mImpact on maintainability and refactoring for higher-level design features
29mOne for all, all for one: The Journey to Android Monorepo
28mAI Migration at SCALE: Make Complex Code Tasks 10X Faster (The Blueprint)
40mGrowing Pains: Scaling and Re-architecting Apps Under Fire
26mAutomating Language Migration at Scale: Tools, Tradeoffs, and the Role of AI
