I’ve been publishing free software since I was 15, back in the days of ‘public domain’ floppy disks and magazine listings. I still get lovely emails from people using my open-source visual effects plugins, and I’m still so amazed by the magic of what computers can do that I can’t help but keep sharing code around the areas that fascinate me.
What’s been strange though is how solitary my open-source coding work has been. In my commercial work I usually end up being the guy who talks to everyone on the team and knows how all the pieces fit together. Partly that’s because all the juiciest bugs are in the gaps between the modules, but I’m also the sort of person who loves to learn other people’s code. By contrast, even my popular free projects have never been shared endeavors. I haven’t even found anyone willing to take on the task of porting my plugins to new versions of After Effects, now that I no longer work in that world.
I don’t think I’m alone in this, looking around there’s a massive long tail of open-source modules that are being ignored by potential users and contributors either because they don’t know about them, or because the barriers to getting involved are too high. Today something happened that gives me hope that things are changing.
I recently began publishing all of my new code on github. I tried it out because somebody nagged me to in the blog comments, and I stayed with it because the website interface was so straightforward and friendly. It’s what Sourceforge would have been if they had any UI skills. I’m still at the stage with git where I’m typing in commands from tutorials without really knowing what I’m doing, and occasionally cursing the new mental model it forces on me, but I’m able to get simple tasks done.
What I realized this afternoon is that its familiar interface hides a deeper hidden infrastructure, something that has the potential to change the way open-source works. I received a pull request for ParallelCurl!
So what? Well, first it was great to know people are using the project enough to want to make changes, but more importantly it made me realize how much github has lowered the barriers to contributing to an open-source project. In the old days I remember biting my nails to the quick as I reviewed, patched, tested and documented small fixes to large codebases. Writing to the mailing list to get your patch accepted was an art all to itself, and on both ends it was a painful amount of work to get changes from new contributors. It was fraught with social problems too, the process had the potential to be confrontational and unpleasant if the patch was rejected.
Github changes all that. SoftwareElves was able to create his own branch of the code, make some changes and then just drop me a notification that he had a new version I should consider rolling in. Reviewing and accepting his changes was simple, but if I’d been unresponsive or hadn’t liked them, his branch of the code would still have been a first-class citizen and there would have been no awkwardness involved. Both git and github have collaboration baked in, which sounds obvious for a version control system but I realize now has been lacking from every other service I’ve used. Github is a social network for code.
There’s still going to be some tumbleweed blowing through the long tail of open-source projects, but Github is a massive step forward. I’m eagerly anticipating lots more people pointing out my mistakes, the world of open-source will be a lot more productive with that sort of collaboration.