Grand Decentral Station


Github apparently had an outage over the weekend.

The Twittersphere was all… well… atwitter1 about it, so much so that you would’ve thought the Internet’s Subversion repository had gone down.

All I could keep coming back to every time I read a tweet complaining about the outage was: I thought the argument the big distributed version control proponents always made such a huge deal out of was the complete lack of a “central server” or “authority”.

“With git and mercurial2, developers are free of such antiquated shackles” is what I’ve been told over and over again.

But when the “hub” of “git” went down, a central code repository turns out to be a necessary link in the chain to getting one’s work done with distributed version control?

Color me confused.

Or maybe not.

In all of the distributed version control deployments I’ve seen, developers still rely on a centralized repository: whether it’s github, mozilla-central3, or Linus’ laptop4, if you don’t intend on making sure that flight has wifi, so people can keep pulling from you, someone other-than-you has to be the authoritative source of your source.

What is especially interesting is these deployments usually take it a step further, with online (centralized) personal repositories for actual sharing and a separate repository that is the “official” (central!) repository-of-record5.

So anyone claiming that decentralized version control totally negates the need for a central hub is trying to sell you something.

And anyone who really believes that illusion should learn the words the Simon and Garfunkle classic “I Am a Rock” because without anywhere to push, that fancy distributed version control system repository sitting on your machine is just another nameless, impossible-to-find island.

1 Atweeted?
2 And monotone and bazaar and…
3 They’re not even trying to hide the non-distributness of the repository!
4 Or wherever you’re supposed to pull from these days to figure out what the heck the authoritative kernel source is…
5 For the people who, y’know, don’t care about every feature, bug, and blue-sky branch of every developer involved in the project