Open source is great. But really, raising a bug and submitting a patch for a few documentation issues is more trouble than it’s worth. I’m stupid and lazy, so don’t contribute too much code to open source, but I am very anal. I hate stumbling across spelling mistakes and grammatical errors that anyone could fix, but to get this sorted without coming across as neurotic is nigh-on impossible. That was until Github came along.
I could wax-lyrical about Git and Distributed Version Control all day long, but a billion and one people have already done that a whole lot better than me. So I’ll just give you a quick step-by-step in how Github solved my problem.
First: Gareth posted code for a couple of nice CSS testing ideas he’d been mulling over.
I looked over his README, and recognised that Gareth had clearly wrote it as an afterthough and left some annoying spelling and grammar mistakes in it (I was particularly riled by the flagrant abuse of they’re/there/their). So I forked his code. That’s right, I forked it mercilessly and without remorse. It didn’t matter that the only thing I wanted to change was some spelling in the minimal documentation: OCD is my problem, nobody elses. And forking is ridiculously cheap in Git.
Once forked, I didn’t even need to clone the repository locally. Github lets you modify files from the web interface, so I fixed the grammar issues I could find.
Great, I’ve got some nice grammatically correct documentation – what next? Should I just say “screw Gareth, my version of CSS-test is clearly better, for I know my ‘theirs’ from my ‘theres'”? Of course not, that didn’t wouldn’t work, and what’s more, it’s not very nice. Rather, I sent a “pull request” to him (again, available from the web UI), just saying – “look, you can’t spell, I can, and I’ve even done the boring work for you”. Mr Rushgrove merged in my changes to his copy, and the world was better for it.
Yes, this is a fairly weird use-case, but I wasn’t the only person to consider it. It’s just a simple alternative to the traditional centralised commit-bit / bug report->patch scenario found in “normal” open source projects.