4 ms·
Centralized systems scale up. Decentralized systems scale out. There is a very big difference that must be understood. I've used Perforce and Team Foundation
by snprbob86 17y ago
Centralized systems scale up.
Decentralized systems scale out.
There is a very big difference that must be understood.
I've used Perforce and Team Foundation Server (which is a re-write of Source Depot which is based on Perforce). Each of these systems handle gigantic source trees with ease, but at what cost? No, it's not the local history or branching (as the author points out). The problem has much more to do with the cultural implications.
Most open source projects can be downloaded, configured, built, and installed with a series of commands resembling `wget`, `configure`, `make`, and `make install`. Giant proprietary trees usually grow crazy custom processes with makeshift tools and lots of domain specific hacks. Giant open source trees instead develop package managers and powerful overlord processes.
Google provides some excellent tree-wide tools in this vein (`gcheckout`, `blaze build`, etc). However, acquisitions and constant growth are assaulting the integrity of their beautiful master tree. Oh, and Google's entire company-wide tree is only a fraction of the size of Windows, or Office, or DevDiv (Visual Studio, .NET Platform, Etc). My understanding is that many individual developers and teams at Google are using Git on their directories until they need to feed back in to the rest of the company.
What we need is MORE decentralized tools that work better together. We need to develop tools which, by virtue of their nature, encourage componentization and separation of concerns. Bug trackers, code review tools, build servers, test servers, deployment processes, etc. need to support decentralization. GitHub is a PERFECT example of how to do this: it's a centralized tool but that tool really is just a giant powerful overlord for a decentralized tool. It gets the best of both worlds while encouraging a culture of scaling out. Decentralized tools typically cater to the open source folks, but you need to cater to enterprise needs (which implies a minimal level of central control) to earn mass appeal.
Git forces you to have a small tree, so you are forced to build things in pieces. I think that's a good thing, but people who have big trees now can never ever get out. It's pretty much impossible because they, by definition, have too much code.
- stcredzero 17y agoin this vein Up vs. out -- once again, software is not only a technological artiface, but a cultural one as well.
- snprbob86 17y agoOK, I fixed "vain". Now you fix "artiface" :-)
- stcredzero 17y agoDoh! Typo. Can't fix it now. Spent too much time editing another post!
- durin42 17y agoThe use of git at Google is (AFAIK, IANAG) limited to checking out the revisions of a limited portion of the tree. Kind of like using git-svn to track just part of a repository and managing most of the checkout using bare svn.
- snprbob86 17y agoThat sounds about like what I remember from the 20% project fair I attended. I think it was `git4` which called `g4` (Google's version of `p4`) in much the same manner as a `git-p4`. The goal was to help out distributed teams, who were often affected more directly by scheduled Perforce maintenance and network latency.