Articles
Discover insights, best practices, and real-world experiences from the migration engineering community. Learn from experts who have successfully transformed codebases of all sizes.

In the previous article, we evaluated using a large language model (LLM) to modify a single YAML file for updating Kubernetes configuration. In that case, the most advanced LLMs performed well with Java refactoring tasks.
In the previous article, we evaluated using a large language model (LLM) to modify a single YAML file for updating Kubernetes configuration. In that case, the most advanced LLMs performed well with Java refactoring tasks.

Large Language Models (LLMs) have proven to be powerful tools for boosting developer productivity. From rapid prototyping and code suggestions to lightweight code reviews and even implementing simple configuration updates.
Large Language Models (LLMs) have proven to be powerful tools for boosting developer productivity. From rapid prototyping and code suggestions to lightweight code reviews and even implementing simple configuration updates.
A comprehensive benchmark for assessing large language models' capabilities in code migration across 922 examples covering 19 Python and Java packages. The study found an average pass@1 rate of 26.50%, with GPT-4O achieving the highest score at 43.84%.
A comprehensive benchmark for assessing large language models' capabilities in code migration across 922 examples covering 19 Python and Java packages. The study found an average pass@1 rate of 26.50%, with GPT-4O achieving the highest score at 43.84%.

In software development, keeping your code up-to-date with the latest libraries and APIs is both crucial and frustrating — especially in large-scale organizations. How Lyft built their codemod platform to automate code upgrades and reduce developer friction.
In software development, keeping your code up-to-date with the latest libraries and APIs is both crucial and frustrating — especially in large-scale organizations. How Lyft built their codemod platform to automate code upgrades and reduce developer friction.
Migrating Code At Scale With LLMs At Google
April 13, 2025A comprehensive study of 39 code migrations over 12 months at Google using Large Language Models. The research found that 74.45% of code changes and 69.46% of edits were generated by LLMs, with developers reporting high satisfaction and a 50% reduction in migration time.
A comprehensive study of 39 code migrations over 12 months at Google using Large Language Models. The research found that 74.45% of code changes and 69.46% of edits were generated by LLMs, with developers reporting high satisfaction and a 50% reduction in migration time.

As organizations race to modernize legacy codebases, many are turning to Large Language Models as a potential silver bullet — only to discover that repository-level translation remains a challenge. This article explores why general-purpose LLMs fall short and what specialized approaches will succeed.
As organizations race to modernize legacy codebases, many are turning to Large Language Models as a potential silver bullet — only to discover that repository-level translation remains a challenge. This article explores why general-purpose LLMs fall short and what specialized approaches will succeed.

Accelerating Large-Scale Test Migration with LLMs
March 13, 2025How Airbnb migrated nearly 3.5K Enzyme test files to React Testing Library in just 6 weeks using automation and LLMs. Airbnb's first large-scale, LLM-driven code migration project.
How Airbnb migrated nearly 3.5K Enzyme test files to React Testing Library in just 6 weeks using automation and LLMs. Airbnb's first large-scale, LLM-driven code migration project.
Skeleton-Guided-Translation: A Benchmarking Framework for Code Repository Translation with Fine-Grained Quality Evaluation
January 27, 2025A research paper introducing a two-step translation process for migrating entire code repositories from Java to C#, addressing challenges in maintaining inter-module coherence and dependencies. The framework includes fine-grained evaluation metrics for assessing translation quality at the individual test case level.
A research paper introducing a two-step translation process for migrating entire code repositories from Java to C#, addressing challenges in maintaining inter-module coherence and dependencies. The framework includes fine-grained evaluation metrics for assessing translation quality at the individual test case level.

Leveraging Large Language Models for Automated Code Migration and Repository-Level Tasks — Part I
July 30, 2024A comprehensive guide on using LLMs for code translation and repository-level tasks, discussing state-of-the-art methods and practical tips. The article explores how LLMs are transforming software engineering and tackling complex repository-level challenges for businesses.
A comprehensive guide on using LLMs for code translation and repository-level tasks, discussing state-of-the-art methods and practical tips. The article explores how LLMs are transforming software engineering and tackling complex repository-level challenges for businesses.
Exploring large-scale refactoring techniques for making consistent changes across multiple software projects. Discusses tools, benefits, challenges, and strategies for refactoring code across different repositories to improve code quality and reduce technical debt.
Exploring large-scale refactoring techniques for making consistent changes across multiple software projects. Discusses tools, benefits, challenges, and strategies for refactoring code across different repositories to improve code quality and reduce technical debt.

Spotify's approach to fleet-wide refactoring using tools like Fleetshift for automated code transformations, centralized dependency management (Java BOM), and an automerger system to make changes across thousands of Git repositories at scale.
Spotify's approach to fleet-wide refactoring using tools like Fleetshift for automated code transformations, centralized dependency management (Java BOM), and an automerger system to make changes across thousands of Git repositories at scale.

Spotify's transition to a declarative infrastructure approach using Kubernetes custom resources and operators to manage hundreds of thousands of cloud resources across tens of thousands of services at scale during their migration from on-premise to Google Cloud Platform.
Spotify's transition to a declarative infrastructure approach using Kubernetes custom resources and operators to manage hundreds of thousands of cloud resources across tens of thousands of services at scale during their migration from on-premise to Google Cloud Platform.

How Spotify shifted from squad-first to fleet-first mindset, performing 10,000 small automated changes instead of 10 major upgrades annually, reducing developer toil and improving software maintenance at scale.
How Spotify shifted from squad-first to fleet-first mindset, performing 10,000 small automated changes instead of 10 major upgrades annually, reducing developer toil and improving software maintenance at scale.
Saving dozens of engineering hours by batch-changing hundreds of repositories at a time
October 19, 2022Have you ever needed to change many repositories at once? How about 271 of them? It usually takes hours, probably even days, to update all repositories to the new version of a library or add a new configuration - until you automate it.
Have you ever needed to change many repositories at once? How about 271 of them? It usually takes hours, probably even days, to update all repositories to the new version of a library or add a new configuration - until you automate it.

Uber's open source tool Piranha automatically deletes stale feature flag code by analyzing abstract syntax trees and generating refactoring diffs. The tool has helped Uber remove around 2,000 stale feature flags and supports Java, Swift, and Objective-C with ongoing work on a polyglot version.
Uber's open source tool Piranha automatically deletes stale feature flag code by analyzing abstract syntax trees and generating refactoring diffs. The tool has helped Uber remove around 2,000 stale feature flags and supports Java, Swift, and Objective-C with ongoing work on a polyglot version.