Thursday, April 22, 2010

To open source or not to open source?

At some point you might have wondered if open-sourcing your project would be a good idea. There are many benefits in doing so, but you must also understand it's implications. This article will not answer that question for you, but rather lay out some important factors to keep in mind.

Most people, especially companies, are very reluctant to adapt to an open source model themselves. Why would someone put so much money, time and resources into a project and then give it all away for free? What will stop one's competitors from taking advantage of all their hard work, for nothing in return? Well, you can make both of these things work for you.

January 1998, Netscape Navigator has already lost it's dominance of the browser market to Internet Explorer. The decision was taken to open source the project. In the coming years, the Mozilla Foundation releases Firefox, the single biggest threat to the now omnipotent browser from Microsoft. And this is not the only consequence. The SSL protocol, first introduced by Netscape, is made into a standard and chosen as the de-facto way of establishing secure connections. This is a good example of how open source made this product a bigger success than it ever was while being closed-source.

Open sourcing your product should be the consequence of carefully examining the pros and cons of doing so, and not trying to fool yourself on the way. If you think of "open-source" as the solution to getting your work done for free, you are in for a rude awakening. Going open source should be an effort to build a community around your idea and making it an integral part of it. This also means that you will have to invest a lot of resources in making this happen. Your code is probably not clear enough for new developers to understand. Documentation is probably lacking or completely missing. You will now have to coordinate not only your own developers but also a whole community. And keep in mind that if they don't like how you are managing things, they might as well just fork the project or abandon it altogether.

But what can you obtain from all this effort? Open-source projects are favored over closed source projects by many people who find it it easier to trust them, because it shows that the companies that are behind are making an effort to be transparent. Giving anyone the opportunity to take a look into the code will give you a lot of additional auditing over it, allowing you to find bugs sooner and react faster against them. Going back to 1996, when the infamous Ping of Death exploit exposed almost all operating systems to a Denial of Service attack, we find this revealing quote from a security advisory: "[T]he award did go to the Linux community for getting a patch out within three hours (well, 2 hours 35 minutes 10 seconds if you must know)".

But even more importantly, the community will allow you to grow in new directions you might have never thought of.

Occasionally, your community members will not only be individuals, but also companies interested in integrating your techonlogies into their own products and developing them further. In many cases this will lead them to contributing work back, as it happened with WebKit.Apple forked KHTML and KJS into WebCore and JavaScriptCore, which became WebKit and was eventually open sourced around 2005. Since then many companies have not only adopted it as the core of their browsers, but most of them are main contributors who are continuously contributing back - improving stability and efficiency and adding new features. Its main contributors are companies like KDE project, Apple Inc., Nokia, Google, and a large et cetera.

"To open source or not to open source?" is a question where the answer is neither right or wrong. Only you can decide what is best for your project.


  1. Application Development was boomed after the launch of Android smart phones from Google. It's capability of being and open Source keep it apart from other OS.

    Android Development

  2. It's a really very helpful information for Android development many thanks for sharing post.

    The source code for the software must be distributed with the package or easily obtainable and must be in a format that any competent programmer could be expected to be able to work with.