Generation Gap

I've been chewing on Tom Dale's post for a few days. He thinks people should not open source their software libraries as vigorously as most people seem to be doing these days.

I started writing open source software long before GitHub. I involved myself in various projects and even worked at the Open Source Applications Foundation (OSAF) and Mozilla. I was part of the "big project" generation of open source. Back then, there wasn't really much to talk about in open source except the big projects. There were umbrellas like GNU and Apache, and various Linux distributions had their own pull as well, and while people were distributed all the real work was funneled into some larger project, with adults, that had experience, and were some kind of expert, and knew how open source worked.

My first day at OSAF I got handed Producing Open Source Software and it became a sort of bible for how we organized all the effort flowing into the Chandler project. I remember in the early days of Django when git and bzr and mercurial were starting to come up more often, Jacob Kaplan Moss said that the reason they liked subversion was that "we could buy that book and it told us how to run an open source project."

Then GitHub happened. When I first signed up I thought it was just a better Google Code and at first, that's all it really was. But once pull requests and issues started to take off I realized it was something much bigger and more disruptive. It turned out to be so disruptive that it created a cultural divide between the previous generation of open source and the next.

Producing Open Source Software was a great book but it was a conversation that we no longer needed to have to contribute to software, be a part of the community, or create an ecosystem of libraries and value. GitHub did to open source what the Internet did to the publishing industry--it removed the organizational cost of organizing, consuming and publishing, but for code instead of information. The end result is that the field is more amateurized. You can debate all you want about whether or not more participation in open source from people who are less professional is a good thing or a bad thing, the fact is that its going to continue and there isn't much we can do to stop it.

Tom Dale is a real engineer, a professional programmer, and a creator and maintainer of what he hopes will be another big successful project for the web. He values quality above all else. The node.js ecosystem, which has always been able to take GitHub for granted, does not value big projects. Node.js defines enough simple patterns that people can write small libraries independently, publish them at will, and everyone invested in the ecosystem can use that value without any coordination. This is the polar opposite of the vertical stacks you see in ember, Dojo, and YUI, which are integrated plugin systems.

Big vertical stacks that come with lots of tools and features are a requirement for success in proprietary environments (think Cocoa and writing for iOS), but in open environments we see smaller API footprints that can easily leverage the rest of the value in the ecosystem without coordination (think simple callback APIs in jQuery or node's standard callback pattern) being successful far more often. In open ecosystems the less coordination between developers and libraries, the more we can create and leverage the value created.

While I clearly find myself at home in the camp of small modules and horizontal ecosystems I try not to make a value judgement here. I honestly don't know which one of these is "better" and any determination about which one is would have more to do with your own values and biases. But this is happening and it's clear which one has more momentum and is growing the fastest. You can be upset about amateurs polluting your profession but I haven't seen it make much of a dent in any other profession that's been disrupted by new technology, I can't image programming would be any different.