- 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.
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.
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.
Absolutely does. Source: worked for Amazon.
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.
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
People have successfully compiled GTA V if that is what you are saying.
Of course no one would make another game using leaked tools, that would be incredibly stupid.
No, that was what I meant, I thought they didn’t, I was wrong, it turned out
Yeah, people successfully compiled and ran the game within a few days of the leak.
I tried myself but I didn’t get it to work. But I’m no developer and I tried doing it in a VM (no way those files touch my real computer) which was annoying so I gave up quite quickly.
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 ¯\_(ツ)_/¯
Damn that sounds sick
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).
What you can do with 84000 employees
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.
Problem with an app? Send it to the internal dev/support team. Then if needed it gets routed.
deleted by creator
I’m pleased to report that
git
has made significant strides, andgit submodule
can now be easily used to achieve a mono-repo-like level of painful jankiness.My best VCS experience so far was when working with Plastic SCM. I like how it can track merges, the code review workflow is also nice, and in general it was pretty nice to work with.
Fuck Unity, who paywalled it into unusability, though. Another amazing project that was bought and killed by absurd monetization by Unity, same as Parsec.
How was Parsec before the acquisition?
I only really have experience after, and it’s the only Unity product I’ve actually found that I like. My only major complaint is that it’s not compatible with the base configuration of Palo Alto, but that’s really more of a Palo Alto problem than a Parsec problem.
I still use Parsec for remote, and I don’t have any issue with it, it works great and I like it. However, they also did offer a free SDK (Unity plugin) to integrate remote play into your game natively (just like you can have “Invite to Steam Remote Play” button from Steam SDK), which was exactly what we needed - and Steam Remote was never working without issues for us, in comparison to Parsec which worked amazingly well every time we tried it.
I found numerous mentions of Parsec SDK and how easy it is to integrate, but after Unity bought it, I couldn’t find it anywhere. Only mention was that if you need it, you should contact them.
So I did that, mentioning that we are a small team of students working on a offline co-op only 2 player game in our free time, and that since Steam Remote wasn’t working for us and I have great experience with Parsec, I asked what we have to do to get access to the SDK/Unity plugin.
Unity’s answer? Sure, no problem, they will be happy to give us access, with first step being that we pay them 1 000 000$ for it.
Like, wtf? Did they even read the email? How out of touch you have to be, to casually ask a small student team to pay 1 000 000$?
Okay that’s fair. Their pricing is awful in general, and that’s especially egregious for something that used to be free
I use git daily and still wonder why I had fewer merge issues on a larger team in the 1990s with command line rcs on Solaris. Maybe we were just more disciplined then. I know we were less likely to work on the same file concurrently. I feel like I spend more time fighting the tools than I ever used to. Some of that is because of the dumb decisions that were made on our project a decade or more ago.
I know we were less likely to work on the same file concurrently.
I mean, isn’t that when merge conflicts happen? Isn’t that your answer?
I was trying to say that tools were better about letting us know that another developer was modifying the same file as us, so we would collaborate in advance of creating the conflict.
I gotcha, I misunderstood
As far as performance goes, Microsoft did manage to make git work for them later on (…with many contributions upstreamed and homegrown solutions developed—but then, Facebook is the same, isn’t it?).
jujutsu is a fresh take on git-- you describe the work you’re about to do with
jj new -m 'message'
. Do the work. Anything not previously ignored in.gitignore
is ready to commit withjj ci
. You don’t have togit add
anything. No futzing with stashes to switch or refocus work. Need that file back?jj restore FILENAME
.It’s very optimistic to think people will be able to describe what they’re going to do before they do it. I find things rarely go exactly as planned and my commit messages usually include some nuance about my changes that I didn’t anticipate.
This is true. But at
jj ci
you’re plonked into an editor and can change the description.
deleted by creator
That’s hardly the VCS’s fault.
That depends on who you believe their customer to be.
And google uses Piper to do the same thing
What kind of RCS is used always depends on the organisation. We are actually using GIT and SVN, and both make sense for the departments that are using them.
Serious question, why do they use SVN, as in what does SVN better than Git for the department using it?
The manager likes it.
While I’m not using it, since we started our small-team hobby project in git and moving away from it would be a bother, there is one use-case of SVN that would save us a lot of headaches.
SVN being centralized means you can lock files. Merging Unity scenes together is really pain, the tooling mostly doesn’t work properly and you have no way how to quickly check that nothing was lost. Usually, with several people working on a scene, it resulted in us having to decide whose work we will scratch and he will do it again, because merging it wouldn’t work properly and you end up in a situation where two people each did hundreds or thousands of changes to a scene, you know that the Unity mergetool is wonky at best, and checking that all of those changes merged properly would take longer and be more error prone than simply copying one persons work over the other.
We resorted to simply asking in chat if anyone has any uncommited work, but with SVN (or any other centralized VSC, I suppose) we wouldn’t have to bother with that - you simply lock the scene file and be safe.
Git LFS does actually support file locking. But in general I find LFS to be hackily pasted onto Git and not very good (as with submodules).
Right, completely forgot that locking exists in SVN, and I guess it definitely makes sense if you’re collaboratively editing unmergeable files.
Thanks!
SVN has the big advantage of serialized revision numbers. Which is essential for out build- and release-system.
Because Facebook is a terrible company that can’t even build a functional website. They think they know better than the entire industry, yet can’t get basic features like browser history, link sharing, back buttons, or even comments and zooming working. Fuckin idiots.