Why Facebook Does Not Use Git And Why Most Other Devs Do
Facebook internal development started out on Subversion with a Git mirror but switched to Mercurial for source code control, achieving what some who worked there called “far and way the best” developer tooling” –... Greg Foster, co-founder and CTO at code review tools company Graphite, wrote back in March about why Facebook does not use Git. The Graphite tools, he said, were “inspired by internal Facebook tooling,” though he has never worked there. He investigated why it is that Facebook does not use Git. Ostensibly the problem was one of scale. Facebook has a huge codebase, and is a monorepo, meaning that all the code is in one repository.
The engineers projected what would happen as the codebase continued to grow, discovering that “basic Git commands took over 45 minutes to complete.” Facebook approached the Git maintainers and was told to break down the codebase into multiple repositories. The company then approached the Mercurial team and found it open to cooperation. “Facebook contributed performance improvements to Mercurial, making it the best option for large monorepos,” Foster reported. A developer said on Reddit: “I’ve worked a lot of places and Meta’s developer tooling was far and away the best.” Another said that “I’m there, and I’ll be honest, it’s weird as fuck... Facebook uses Mercurial, but when people praise their developer tooling it’s not just that.
They’re using their CLI which is built on top of Mercurial but cleans up its errors and commands further, it’s all running on their own virtual filesystem (EdenFS), their dev testing in a customized... The source control was so smooth and pleasant that it convinced me that git isn’t the be all end all, and the general developer focus was super nice, but some of that tooling was... And some of it (like EdenFS), really felt like it was the duct tape holding that overloaded monorepo together (complete with all the jankiness of a duct tape solution). And some good management. Probably not a common opinion around here, but my company is not a tenth of that size, with a hundredth the number of devs, yet different teams still end up copy pasting libraries. Because it’s faster than convincing management DevOps is important.
And kinda horrifying. If something goes wrong, no Google, it’s straight to IT There’s probably specific ticket queues and wiki/doc spaces for each support team. Did you know that Facebook doesn’t use Git? But by 2012, Facebook’s codebase had become a massive monorepo. Basic Git operations were taking too long.
Future Git commands could take up to 45 minutes. So the Facebook team reached out to Git maintainers: I spent time last week chatting with ex-facebookers about the history of their source control. Wrote up what I learned in a new blog post that delves into a fascinating piece of tech history: Why Facebook doesn’t use Git. 🤔 In this post, I explore the reasons behind Facebook's migration off Git and their adoption of Mercurial for version control. It's a journey that not only highlights the importance of performance in choosing a development tool but also underscores the significance of collaboration and openness in the development community.
As we build on Graphite's modern code review and stacking features, understanding these choices helps us shape a future where developers can create, review, and merge code more efficiently and with greater flexibility. Our platform is inspired by the similar principles that guided Facebook's decision—keep engineering teams moving fast so they can ship amazing products. If you're curious about the history of Git vs Mercurial, the technical and human factors that drive major technological shifts, or if you're interested in how these insights influence today's developer tools, check out... This doesn't mention that Meta has since forked Mercurial and created "Sapling", purportedly for further mono-repo efficiency purposes. They've now released an open-source version of it too: https://sapling-scm.com/docs/introduction/#why-make-a-new-version-control I'm not sure, but I I have been told internally they still call it "mercurial".
I think Sapling is just a public name for it. I'm not super-optimistic about Facebook maintaining public stewardship of Sapling for very long, given their track record of eventually focussing on new things (are they still maintaining React?), but maybe I'll be proven wrong. They still call it mercurial internally because it’s a Ship of Theseus situation and there wasn’t an obvious day when every single aspect of mercurial was gone and it was time to call it... A lot of pieces (like the custom backend server) are called different things though. Sapling had a momentary pause and reshuffle but they resumed development and releases. I’m using it now and I hope they keep investing.
Also, this video makes it seem as if Facebook, and its wants and contributions are the center of everything. Open source developers don't need to start working whenever any user messages them on performance issues, especially if it's an outlier in the grand scheme of things. > What they [Facebook's investigating team on which source control to use] found was a system [i.e, Mercurial] that was easy to extend and a community of maintainers who were impressively welcoming to aggressive... So Mercurial, as a smaller and more nimble developer group, was just more open to substantial outside changes to its code base. - Why doesn't Facebook use git? In 5 lines
- Facebook doesn't use Git primarily because of the scale of their codebase and the number of developers working on it. Git, while powerful, can struggle with extremely large repositories and high volumes of concurrent updates. Instead, Facebook has developed its own version control system, called Mercurial, which is optimized for their specific needs, including handling large codebases and providing faster performance for their workflow.
People Also Search
- Why Facebook does not use Git - and why most other devs do
- Why Facebook doesn't use Git : r/programming - Reddit
- Why Facebook does not use Git - and why most other devs do • DEVCLASS
- FAUN Weekly #438: Why Facebook Doesn't Use Git, How to Run Llama 3.1,
- Why Meta moved out of Git. When Facebook was founded in 2004 ... - Medium
- Why facebook doesn't use git? - Yash Chudasama | Software Engineer
- Why Facebook doesn't use Git | Greg Foster - LinkedIn
- Why Facebook Doesn't Use Git | Coconote
- Why Facebook doesn't use Git | Lobsters
- Why doesn't Facebook use Git? [video] | Hacker News
Facebook Internal Development Started Out On Subversion With A Git
Facebook internal development started out on Subversion with a Git mirror but switched to Mercurial for source code control, achieving what some who worked there called “far and way the best” developer tooling” –... Greg Foster, co-founder and CTO at code review tools company Graphite, wrote back in March about why Facebook does not use Git. The Graphite tools, he said, were “inspired by internal ...
The Engineers Projected What Would Happen As The Codebase Continued
The engineers projected what would happen as the codebase continued to grow, discovering that “basic Git commands took over 45 minutes to complete.” Facebook approached the Git maintainers and was told to break down the codebase into multiple repositories. The company then approached the Mercurial team and found it open to cooperation. “Facebook contributed performance improvements to Mercurial, m...
They’re Using Their CLI Which Is Built On Top Of
They’re using their CLI which is built on top of Mercurial but cleans up its errors and commands further, it’s all running on their own virtual filesystem (EdenFS), their dev testing in a customized... The source control was so smooth and pleasant that it convinced me that git isn’t the be all end all, and the general developer focus was super nice, but some of that tooling was... And some of it (...
And Kinda Horrifying. If Something Goes Wrong, No Google, It’s
And kinda horrifying. If something goes wrong, no Google, it’s straight to IT There’s probably specific ticket queues and wiki/doc spaces for each support team. Did you know that Facebook doesn’t use Git? But by 2012, Facebook’s codebase had become a massive monorepo. Basic Git operations were taking too long.
Future Git Commands Could Take Up To 45 Minutes. So
Future Git commands could take up to 45 minutes. So the Facebook team reached out to Git maintainers: I spent time last week chatting with ex-facebookers about the history of their source control. Wrote up what I learned in a new blog post that delves into a fascinating piece of tech history: Why Facebook doesn’t use Git. 🤔 In this post, I explore the reasons behind Facebook's migration off Git a...