Why open source?

While glancing over Dr. Dobb’s article Getting Started With jQuery I read this:

Whether the motivation behind making their labors freely available is a matter of seeking recognition, resume building, free advertising for other services, bragging rights, or just plain old-fashioned altruism, we can gratefully take advantage of these tools. jQuery is one such tool.

I think altruism is very far away from the true motivation in most cases. Most free and open source software I can think of is done because someone needed it anyway. And instead of just writing that little tool you needed that one day, why not release it to the great public under some appropiate license? If the tool is worth its code its quite likely that someone else has use for it, too. And because they don’t have to pay anything and can read and modify the source code, its very easy for them to contribute back whatever they can. And using that feedback is again helping the initial author.

You can find good hints at the eat-your-own-dogfoot principle and where it was applied and where not in a lot of open source products. Consider the update manager in Eclipse. To start with, its hidden under the Help menu. You have to manually copy&paste links from update sites into it. And you always have to choose “search for new features to install” even if you want to look for updates, because looking for updates most likely never finishes and yields no result after bugging you 20 times for a mirror to choose from a list. That is the stuff the developers (of Eclipse) mostlikely themselves don’t use, and therefore don’t care about.

On the other hand, Eclipse’ Java Development Tools is state-of-the-art: I’m using it now for almost three years and yet I find new helpful features everyday. Its refactoring support alone is worth some gold. Ever wanted to introduce a new parameter in an interface method and its four implementations? Its something very ugly when doing by hand, with Eclipse its simple as hell: Refactor -> “Change method signature”, and you’re nearly done. Learned how to use that just today.

Eclipse is backed by a big corporation (IBM) and a daily growing list of both small and big eclipse foundation members. This isn’t the case on projects like jQuery. When asking John Resig about his motivation for releasing jQuery he answered:

I’d have to say Altruism + Recognition – resume building was a nice side effect, but I didn’t think about that

And he added:

I mean, I guess if you’re wondering why open source vs. “closed source” (license-restricted). I guess, technically one could get recognition from either, but I don’t like restrictive software. I’ve grown up using open source, and benefited so much from it. It just doesn’t make sense to me to release closed software. I don’t see how it could possibly benefit me, or help others.

So for me, restricted software just doesn’t feel right – whereas open source feels very good. Helping people and feeding back into the community is really what does it for me. Seeing it do well is a nice side effect – I mean, on my web site alone I’ve released over 70 pieces of open source software. A couple have done really well – only one really took off.

So I definitely wasn’t expecting recognition, but it was nice that it happened.

As always he has some good points to argument with. I spent and keep spending a lot of time working on my jQuery plugins because I know (at least now) that I will be most likely developing web applications in the next years (though so far they are all 100% corporate intranet applications, but still running in browsers). And its great to use features of your own plugins in your own project that someone else contributed. Even questions for support help a lot, because you know where you have to improve APIs and examples.

Releasing JavaScript code as opensource is somehow natural anyway. Reading JavaScript code in the source of other’s website has been done for years now, and giving the code a property license to motivate “readers” to give feedback and contribute has helped a ton to improve the overall quality of written JavaScript by several magnitudes.

Currently I’m investigating ways to leverage those plugins on the server-side too, which is especially interesting when considering the validation plugin. John’s work on implementing a browser environment in Rhino is amazing. It already is able to run the full jQuery test suite, and the possibilities for building web application frameworks based on jQuery are daunting.

I hope I can also opensource some of the framework code I’m developing at work some time in the feature. There is already some really nice JSF and Spring related code in our repository…

-Jörn