4 ms·
Very little development in Google3 happens locally. You aren't even allowed to keep the source code on your local disk, and this is true no matter what OS it ru
by compiler-guy 5mo ago
Very little development in Google3 happens locally. You aren't even allowed to keep the source code on your local disk, and this is true no matter what OS it runs. (Android and Chromium are different though.)
You have access to an extremely powerful remote workstation that from a UI perspective functions almost identically to a local workstation, via Chrome Remote Desktop. Plus, no one builds things locally, even on that machine. There is a huge, absolutely amazing distributed build system that everyone uses for everything. (Again, Android and Chromium are different.)
So you don't really need a powerful local machine. I held out for a long time--there were a lot of growing pains in the early days. But eventually it got really, really good.
- AJRF 5mo agoWhat is Google3?
- ncruces 5mo agoThe mono repo that holds most source code (pronounced google-tree?) It's referenced in the OP.
- StilesCrisis 5mo agoI've never heard that pronunciation.
- bsimpson 5mo agoIt's a monorepo, which is a bunch of libraries (in this case, the code for most Google products) in a single repository. Those libraries can have dependencies on each other. One is a framework called Wiz, which renders the frontend for a bunch of Google web apps. You can imagine that the Wiz team might want to refactor an API, but not have to worry about different apps using different versions. In a monorepo, they can just find all the callsites and update them in the same commit that makes the API change. There's no package.json in google3 - everything builds from HEAD. Therefore, the commit that makes a breaking change is also the commit that fixes the would-be breakage. This architecture evolved. Google used to use Perforce, which was a common commercial version control system before Git. Google had to figure out how to express the dependencies between packages in the monorepo (which can be in different languages with different build tools). They eventually created Bazel, which expresses those dependencies and orchestrates their build tools. Build orchestration took a few attempts. Google3 is the third version of the monorepo, that is, the one that uses Bazel for dependency management.
- AJRF 5mo agoCool - thank you for answering
- malkia 5mo agoyup - when I started in 2014, coming from long gamedev experience it was nice that "g4" was just "p4" rewritten for piper. (alzo "blaze menu" was cool, but did not show (AFAIR) places in LAX)....
- neerajsi 5mo agoHow does release management work? Are there stable branches for deployed properties with a cheery pick approach for bug fixes? Are all products in google3 on a coordinated set of release trains?
- StilesCrisis 5mo agoCould you even put all of google3 on local disk if it were allowed?!? You'd need quite a RAID array. I suspect it'd be almost impossible in practice.
- lupire 5mo agoThere's no reason to pull the entire repo just to build one project. Do you pull all of GitHub to your disk?
- wmedrano 5mo agoFrom the user interface perspective though, it does essentially look like you've pulled all of google3 into your disk.
- mcculley 5mo agoBut is it a local disk? The post above says that one uses Chrome Remote Desktop.
- compiler-guy 5mo agoIt’s not local storage, but a file system that makes it look like local storage. Even on machines with chrome Remote Desktop it is still stored remotely. So remote to the remote.
- summerlight 5mo agoBecause of high coupling dependencies between google3 projects, compiling just a single project usually pulls hundreds of thousands of different build targets.
- lozenge 5mo agoI can understand Android (including the Linux kernel) being "too big" and "too separate" to go into Google3, but why Chromium? When it was forked from KHTML/WebKit it was probably not that big compared to the rest of Google's codebase.
- Arainach 5mo agoChromium is open source. As such it needs to be hosted via a publicly accessible stack (Git/Gerrit) so that external contributors can use it. Size has nothing to do with it.
- eddd-ddde 5mo agoThis is not a complete answer. There are many open source projects that are developed in google3.
- randomCloud 5mo agoGood old capybara
- kayson 5mo ago> You aren't even allowed to keep the source code on your local disk How is this enforced?
- compiler-guy 5mo agoI have no knowledge of actual enforcement mechanisms, but it is way, way, way easier to do all development on the distributed file system that feels like a local disk than it is to copy things over locally. If you need to do development locally, you are either doing something very wrong or extremely specialized. So there is effectively no motivation to copy the sources over. And because everything is on this distributed file system and built from it in a very bespoke environment, I would imagine (with no inside knowledge at all), that it is easy for auditors to detect when someone starts copying things out.
- summerlight 5mo agoAll the developments are done in a virtual remote file system. From editing to compiling, everything is done remotely. Of course this does not fully stop people from doing manual c&p, but it still makes it hard enough to discourage it.
- setheron 5mo agoI miss my Dragonfly I am a big Linux proponent but that Chromebook had me convinced about the platform. Amazing integration.