Rewrites, forks and breaking changes: hard lessons from language and codec builders
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.
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.