• Facebook does not use Git due to scale issues with their large monorepo, instead opting for Mercurial.
  • Mercurial may be a better option for large monorepos, but Git has made improvements to support them better.
  • Despite some drawbacks, Git usage remains dominant with 93.87% share, due to familiarity, additional tools, and industry trends.
90 points
*

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 version of chromium, and they sync code using their own in-house equivalent of GitHub, and all of it connects super nicely into their own customized version of VS Codium.

permalink
report
reply
25 points

Damn that sounds sick

permalink
report
parent
reply
47 points

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 pretty janky, poorly documented, and you had no stack overflow to fall back on. 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).

permalink
report
parent
reply
14 points

And kinda horrifying. If something goes wrong, no Google, it’s straight to IT

permalink
report
parent
reply
3 points

There’s probably specific ticket queues and wiki/doc spaces for each support team.

Problem with an app? Send it to the internal dev/support team. Then if needed it gets routed.

permalink
report
parent
reply
41 points

What you can do with 84000 employees

permalink
report
parent
reply
19 points

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.

permalink
report
parent
reply
23 points

The inhouse tooling from the massive tech companies is very cool but I always wonder how that impacts transferrable skills. I work in a much smaller shop but intentionally make tech decisions that will give our engineers a highly transferrable skill set. If someone wants to leave it should be easy to bring their knowledge to bear elsewhere.

permalink
report
parent
reply
11 points

Speaking from my own experience and a few other seniors I work with, you try to recreate solutions you like at those smaller shops. It may not be identical, but you know what’s possible.

I came into a company that didn’t have a system to manage errors. At my old job, errors would get grouped automatically and work can be prioritized through the groupings. The new company only handled errors when they saw it, by word of mouth.

Immediately went to work setting up a similar system.

permalink
report
parent
reply
7 points

There’s also a whole industry of ex-Googlers reimplementing Google tooling as SaaS services to sell to other ex-Googlers at other companies.

There’s even a lookup table: https://github.com/jhuangtw/xg2xg

(some of those are open source projects, some are SaaS services)

permalink
report
parent
reply
3 points

The inhouse tooling from the massive tech companies is very cool

I agree. I personally know nothing about tooling like this but I went through the tooling used at rockstar for example GTA V and it was very cool to how much they have automated and made tools easier to use.

permalink
report
parent
reply
1 point

Made easier to use like in when their codebase was leaked and no one had successfully built a game from it?

in-house tools often encourage making a mess heavily reliant on those tools or working around their limitations, in my experience

permalink
report
parent
reply
2 points

Oh, it impacts indeed. And I would expect that to be partially to keep the devs from hopping away, as they will have a hard time transferring

On the other hand, onboarding is longer and wastes more time and money of the company ¯\_(ツ)_/¯

permalink
report
parent
reply
6 points

Absolutely does. Source: worked for Amazon.

permalink
report
parent
reply
1 point
Deleted by creator
permalink
report
parent
reply
1 point

They should call it VS Copium.

permalink
report
parent
reply
37 points

I’m pleased to report that git has made significant strides, and git submodule can now be easily used to achieve a mono-repo-like level of painful jankiness.

permalink
report
reply
10 points

Mercurial does have a few things going for it, though for most use-cases it’s behind Git in almost all metrics.

I really do like the fact that it keeps a commit number counter, it’s a lot easier to know if “commit 405572” is newer than “commit 405488” after all, instead of Git’s “commit ea43f56” vs “commit ab446f1”. (Though Git does have the describe format, which helps somewhat in this regard. E.g. “0.95b-4204-g1e97859fb” being the 4204th commit after tag 0.95b)

permalink
report
reply
13 points

I suspect rebasing makes sequential commit IDs not really work in practice.

permalink
report
parent
reply
8 points

Rebasing updates the commit ids. It’s fine. Commit IDs are only local anyway.

One thing that makes mercurial better for rebase based flows is obsolescence markers. The old version of the commits still exist after a rebases and are marked as being made obsolete by the new commits. This means somebody you’ve shared those old commits with isn’t left in hyperspace when they fetch your new commits. There’s history about what happened being shared.

permalink
report
parent
reply
4 points

Commit IDs are only local anyway.

Whay do you mean by that?

permalink
report
parent
reply
2 points

That’s exactly the same in git. The old commits are still there, they just don’t show up in git log because nothing points to them.

permalink
report
parent
reply
3 points

And google uses Piper to do the same thing

https://dl.acm.org/doi/10.1145/2854146

permalink
report
reply
14 points

And they’re delivering a terrible product.

permalink
report
reply
25 points

That’s hardly the VCS’s fault.

permalink
report
parent
reply
19 points

That depends on who you believe their customer to be.

permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.5K

    Monthly active users

  • 1.6K

    Posts

  • 26K

    Comments