Explore the journey of Facebook's transition from Git to Mercurial, uncovering the technical and social dynamics that influenced one of the tech industry's pivotal decisions in source control management. This post delves into the reasons behind Facebook's shift, the challenges of scaling Git, and the pivotal role of community and collaboration in adopting Mercurial
Monorepos, performance problems, and a lot of asking
I’m not a programmer and don’t know how to use git, but at least have a basic understanding of what its use is. I think the Closing Thoughts has a pertinent lesson that’s much broader:
I’m reminded of the classic wisdom that so many of history’s key technical decisions are human-driven, not technology-driven.
Facebook didn’t adopt Mercurial because it was more performant than Git. They adopted it because the maintainers and codebase felt more open to collaboration. Facebook engineers met face-to-face with Mercurial maintainers and liked the idea of partnering. When it came to persuading the whole engineering org, the decision got buy-in due to thoughtful communication - not because one technology was strictly better than another.
They made a point of mentioning the clarity and extensibility of the Python codebase as well (not sure if it was the article of the original blog) as making it easier to modify. They could have forked the code if they thought git was clearly better.
I’m not a programmer and don’t know how to use git, but at least have a basic understanding of what its use is. I think the Closing Thoughts has a pertinent lesson that’s much broader:
They made a point of mentioning the clarity and extensibility of the Python codebase as well (not sure if it was the article of the original blog) as making it easier to modify. They could have forked the code if they thought git was clearly better.
I wouldn’t expect web devs to know C.