Rewrites, forks and breaking changes: hard lessons from language and codec builders

October 5, 2026 · 16 min read

Guido van Rossum weighs what a possible Python 4 could break, Chris Lattner designs Mojo around compatibility after the lessons of Swift and Julia, and the FFmpeg maintainers recount the Libav fork and the push for Rust rewrites. Each has lived through the cost of breaking with what users already have, and their caution is useful to anyone tempted to start over.

12 questions on this insight. Answer in your head, then open the card.
What do these builders conclude about starting over? Show answer

The cost lands on the people who depend on you, and it is almost always larger than the plan assumed.

What does Guido van Rossum say went wrong in the Python 2 to 3 transition? Show answer

The core team underestimated the pain it caused users, even though they thought they had a good plan.

Who would feel a Python without the global interpreter lock most? Show answer

The machine learning and scientific world built on C extensions, some already short of maintainers.

How would van Rossum manage such a change? Show answer

With several years of warning, offering the new interpreter first as an option before any default switch.

Why did Python's type hints ship without breaking anything? Show answer

They reused the annotation syntax Python already had and are not enforced when code runs.

What lesson did Chris Lattner take from building an earlier compiler? Show answer

It is far easier for a few engineers to implement long-tail compatibility than to persuade all programmers to rewrite.

How does Mojo apply that lesson? Show answer

It is a superset of Python that imports existing packages and lets code migrate a piece at a time.

What did Lattner change about launching after his earlier language? Show answer

He released Mojo openly as an unfinished version with a roadmap, instead of developing in secret.

Why does Jean-Baptiste Kempf warn against rewrites? Show answer

Reading code is far harder than writing it, though he calls Rust excellent for new projects.

What bar does Kieran Kunhya set for a replacement? Show answer

It must be as good as or better than what exists and meet the same testing and stability standard.

Who pays for a breaking change, according to all three conversations? Show answer

Not the people who decide on it, but dependents such as volunteer or short-staffed maintainers.

Where does this caution apply least? Show answer

To new projects, where a new language or an unusual choice is fine and even encouraged.

This is the short form. The full insight has every expert's reasoning, their own words and the sources.