Intuitively Obvious to the Most Casual Observer

Leaving Github

I’ve done it, I’ve ditched github, for good. All updates to current and old projects, and all new projects (save precisely one - long story) are being self-hosted on this server. The switch was initiated by github’s latest update (accompanied, as usual, by a noticeable performance hit), but I had made the decision to leave long ago. Here’s why.

I should prefix this explanation by saying that I think github is a great tool and a pretty impressive piece of software. But some things about it are fundamentally wrong, and incompatible with the way I (and I think many other people) use software.

Github re-implements too much. The most obvious instance of this is pull requests, which supplant git’s perfectly serviceable send-email and am functionality, replacing it with something rather less flexible, and incompatible with anything but github. They’ve done this in other places as well, but in the interest of keeping this explanation concise, I’ll use PRs as my sole example. Pull requests (along with “github for mac”) were also my main motivating factor in pushing away from github.

The usual complaints about re-implementations are fun, but don’t really apply here. To github’s credit, pull requests work incredibly well, and are really easy to create and use. I have performance gripes, of course, but it’s only rarely bad enough to impact the usability of the service. Ultimately, my big concern is compatibility, which pull requests flat-out lack.

I suppose that everyone who knows anything about marketing (I certainly don’t) knows that if at all possible, one should turn one’s product from being a service within a sector to being the sector itself. You don’t usually “search” for something on the web - you “google” it. Most people have never heard of micro-blogging - it’s just “twitter”. And so on. It’s the holy grail of marketing campaigns, when your trademark defines the industry. Github, in its own small niche, has accomplished just this. When asked what VCS they’re using, people reply more often with “github” than simply “git”. And when the reply is “git”, it’s usually assumed that github is the host. As far as marketing goes, git has effectively become github, just as search became google.

The problem is that github is most emphatically not git. If a person using git (and therefore send-email) wants to collaborate with someone using github, one of the two of them has to give in and use an interface they deliberately decided not to use. There’s no way around it: github does not supplement git, github replaces git. Deciding whether to use github versus just git is an either/or proposition.

Two products with nearly identical functionality: one is open-source, and the other is closed-source and depends on the other. Not a hard choice.

At first blush, google (in particular, gmail) would seem to be in a similar situation as github. Why then, am I still content to keep my address and account there? Because gmail does not replace email. People who use $old_webmail are not missing out on any information - they’re not seeing a different world. Only the chrome, the speed, and the auto-completion really changes. Google stuck to old, well-used protocols with good faith. I use fetchmail and alpine to read my mail; some of my friends prefer to use mutt, or thunderbird. GMail is compatible with everything else. The gmail engineers apparently recognize that gmail is a product that exists within the broader email ecosystem. Their objective is to improve the experience of people who use their service (contact suggestions, calendar integration), and when possible, to improve the broader email ecosystem.

Github is not like that. The github engineers quite clearly see github as a product built on git (the technology) rather than a product operating within git (the protocol). They do not improve or contribute to git itself (edit: as pointed out on HN, many individual employees at github are git contributors - but none seem to do so under the auspices of github, and the most prolific were contributors well before github came into being), but focus instead on improving github in ways that make it harder and harder to use continue using stock git while collaborating with people using github, despite the functionality being fundamentally the same. “We think you should use github for all your git needs, and if you don’t, fuck you.” I suppose that’s good from a marketing/expanding perspective, but it’s bad for users.

Tools that operate as simple front-ends to protocols (or more generally, any technology defined for collaboration, such as git) tend to not become obsolete. I use alpine to just as great a gain as people who use gmail, thunderbird, or any other mail client. Much of the web can still be used on decade-old web browsers. However, services that attempt to be protocols in and of themselves, with no or limited compatibility with third-party tools, die out as soon as someone comes along with something marginally shinier. Xanga, MySpace, Digg… the lists extends to infinity, and only fools could think that Twitter and Facebook, giants now, won’t be added to that list within the next five years. And github will, of course, follow sourceforge down the drain.

Protocols last a long time; ultimately, services like github and sourceforge are just fads, with very little (I think no) added value. The roller-coaster of hip fad after hip fad just isn’t for me. I suppose it can be fun to follow those fads and see where they lead, but history seems to show that innovations rarely come from them. Sourceforge didn’t make version control fundamentally better, and neither will github. Self-hosting is easy and cheap, I easily collaborate with people who prefer other solutions, and pushes take a quarter of a second. Goodbye, github.