DEV Community

Do software engineers at the largest tech companies (i.e. Google, Facebook, Apple, etc.) use Github for version control?

Sawyer Billings on December 05, 2017

Collapse
 
kmcginn profile image
Kevin McGinn • Edited

At Microsoft, there's a movement to get onto Git from our ancient proprietary centralized version control system, and my impression is we're slowly but surely getting there. Open Source projects are hosted on Github, and proprietary projects are hosted in Git repos in Visual Studio Team Services.

Part of the reason that the migration is taking a while is that some code bases are way too big for Git to handle without slowing to a crawl. To deal with that, the VSTS team made the Git Virtual File System. Awesomely, they made it open source!

(note: I do work for Microsoft but not for the VSTS team; I'm also not trying to speak for the whole company in any official way :) )

Collapse
 
shaunakpp profile image
Shaunak Pagnis • Edited

According to this article, at Google, they store all of their code in a single repository!

Collapse
 
sbilling profile image
Sawyer Billings

thats pretty nuts

Collapse
 
jess profile image
Jess Lee

Got any insight on this @ginader ?!

Collapse
 
ginader profile image
Dirk Ginader • Edited

At Google we have out own version control (git but not github). When I was at Yahoo we used Enterprise Github (in addition to Yahoo's own SVN). Our Open Source stuff is on github, of course.

Collapse
 
sbilling profile image
Sawyer Billings

Thank you for the insight. Very interesting stuff

Collapse
 
tbodt profile image
tbodt

Google doesn't use GitHub, or Git. Instead they have their own, pretty insane system called Piper. There is only one Piper repository. Different projects are different subdirectories within the same massive repository.

As a result, there's no way to clone the entire repository to your computer. The standard way to handle this is something called Clients in the Cloud, or CitC. Basically the entire repository is mounted as a virtual filesystem, and you can do whatever you want with it.

It's not sane to try to fix merge conflicts in such a big repo. That problem is solved by (almost) eliminating branching or merging. Piper's branching support is very limited, and the only time it's used is for releases. Generally, there's only one branch.

There's also only one version of everything: the latest version. There's no old versions kept around for things that haven't updated to the new versions. If you make a backwards incompatible change to an API, you have to then go and update everything that uses your API. Which you can do, since everything's in the same repository. There are even automated tools you can use for this.

You can read more about it here: cacm.acm.org/magazines/2016/7/2040...

Collapse
 
elmuerte profile image
Michiel Hendriks

There simply has to be some tool called "pied" at google which interfaces with this piper repository using some fancy compression algorithm.

Collapse
 
deankevorkian profile image
deankevorkian

Hmm. Interesting stuff about Piper indeed :)
Though, I saw some Google projects being mirrored to GitHub. Also, fuchsia.googlesource.com/ shows they keep some projects on their own "Google Git" kind of thing.
Maybe that's only true for their open source projects and the internals are kept in Piper as you mentioned

Collapse
 
tbodt profile image
tbodt • Edited

The Chromium and Android people do use Git, but only because their projects are open source and nobody outside Google can use Piper. They do a lot of things with it that are inspired by Piper though, such as copying all their dependencies into the repository in a directory called third_party.

Collapse
 
ben profile image
Ben Halpern

I've read about Facebook's use of Mercurial, so as of the last I've read they don't even use git. But I'd guess all of these companies use GitHub on some level. FB, for example does all of that open source stuff with GitHub, so I'd be curious about where they draw lines and choose where to do what.

Collapse
 
sbilling profile image
Sawyer Billings

Thanks so much for the Facebook intel. Interesting read for sure.

Collapse
 
tpoliaw profile image
Peter Holloway

Didn't Facebook write the phabricator platform? It'd make sense for them to be using that.

Collapse
 
samvbeckmann profile image
Sam Beckmann

At Amazon, most teams use git, but not GitHub.

Collapse
 
databasesponge profile image
MetaDave 🇪🇺

I'd be amazed if they're not eating their own CodeCommit dogfood.

aws.amazon.com/codecommit/

Collapse
 
aeiche profile image
Aaron Eiche

Amazon as an organization is pretty modular - they have teams working on lots of different projects and technologies. While I would expect the CodeCommit team to be using CodeCommit, it wouldn't surprise me if other teams used other CVS systems. You can further splice that by teams on projects under AWS, teams that work on devices, teams that work on their shopping, teams that work on physical distribution, etc.

Thread Thread
 
databasesponge profile image
MetaDave 🇪🇺

Sounds awful. I'm a victim of their business modularity, as I need to get structured metadata into their various national systems, and their vendor-facing systems, support, and documentation are a shambles.

Collapse
 
peter_kuehne profile image
Peter Kühne

At Bloomberg we use Enterprise GitHub to foster internal collaboration and transparency. All but the most sensitive repositories are (internally) public so anyone can send a Pull Request for fixes and enhancements.

Collapse
 
msoedov profile image
Alex Miasoiedov

Did you mean git?

Collapse
 
sbilling profile image
Sawyer Billings

I actually meant GitHub specifically but thats another good question

Collapse
 
msoedov profile image
Alex Miasoiedov

Don't confuse the terminology then

Git - version control system
Github - web hosting for git

Collapse
 
bgannin01 profile image
Brian Ganninger

Most major code management services offer a "behind the firewall" solution, typically branded Enterprise, that allow companies to host their content (and security, auditing, etc.) entirely themselves. Contributions to OSS are entirely separate affairs and have a process. You rarely see a project incubated as OSS, instead internal projects are converted at some point for any number of reasons.

Collapse
 
pshchelo profile image
Pavlo Shchelokovskyy

Here's an article about how MS is migrating to Git and what've they had to change in it to work for their use case (scaling issues mostly)

arstechnica.com/information-techno...

It also mentions that Google has some internal use for Git too, and faced/fixed similar scaling problems, and both (Google and MS) are considering proposing their stuff to upstream Git too.