A while ago I stumbled upon GitHub, which calls itself a “social coding” website. Initially, it seemed to me a code repository like all others (Google code, Launchpad, Sourceforge, etc), but using it more and more I came to realize there’s a pretty interesting twist to it.

You see, with the advent of distributed VCSes, people don’t need to work on a central server any more. They can just commit their changes to basically wherever they have write access. This means that I can clone someone else’s code and work on it for myself, storing it on my local machine.

The brilliant twist in this is that, when I’m done working, I can send my changes back to the person to review and perhaps merge into his own tree. What GitHub does differently from all other repositories I’ve seen is that it makes this process dead easy. You can press a button to fork someone’s repository and work on it, and nudge them to pull from you when you’re done.

This is the closest anyone has ever gotten to reducing the barrier of entry for contribution to projects. It’s the first time since I can remember that filing a bug will take longer than actually fixing it. I have never contributed to open source projects until now, even though I wanted to, because of the large barriers. Nowadays, though, I can just fix a bug or add a feature in less time than it would take to explain it to the developers.

It seems to me that open source projects will see a big rise in quality and speed of development with this model, and I am glad we have gotten to this point. Seeing all the branches of a codebase with their relationships is no small matter and it makes me very glad that such a tool finally exists.

Next step: Get git (or another scm that supports the format) running under Windows…