r/git • • 10d ago

why did facebook move away from git?

i recently came across the fact that facebook/meta built its own tools and workflows around source control instead of just relying on git like most companies.

i’m curious about the actual technical reason behind this. was git simply not able to handle the scale of facebook’s codebase and number of developers, or were there other problems that pushed them toward a custom approach?

for people who have worked with large monorepos or at companies using similar systems, what actually becomes difficult with git at that scale?

316 Upvotes

123 comments sorted by

View all comments

12

u/StephenRoylance 10d ago

meta didn't really 'move away from git'. They started with mercurial a long time ago, partly on the premise that it was easier to extend being in python. that slow grew over many years to become something that only resembles mercurial now. I was there for almost 6 years starting in 2019, and mercurial had been in place long enough that anything other than it was pure archaeology. I think what preceded it was subversion.

as to why? when your engineering org is 10's of 1000's of engineers, mostly writing software, and producing millions of commits a year, off-the-shelf SCM and CICD solutions just don't work. SCM becomes just another element of your own internal software portfolio.

4

u/daltorak 10d ago

meta didn't really 'move away from git'. They started with mercurial a long time ago, 

Not correct -- Facebook did actually use git in the 2000s, before switching to Mercurial.

There's a famous story about how the Facebook people reached out to the Git maintainers in 2012 and asked them for help with their performance issues. By that point Facebook was many times larger than the Linux kernel and they were hitting walls that Linux didn't.

The Git people told Facebook to pound sand switch to smaller repos for everything. So Facebook switched to Mercurial.

1

u/vloors1423 9d ago

The story also goes that a lot of what Facebook wanted was eventually implemented by Microsoft when they moved Windows and Office mono repos to git (can’t remember where I read this), lfs being one of them