March 15, 2011

Open source


Open source in software


A quick definition so we are all on the same page. Generally "open source" refers to making software source code available to the public under relaxed copyright restriction, aka copyleft. It also requires any change/modification be made available under similar conditions. In practice, selection of one or a set of compatible licensing models, e.g. BSD license vs GPL (GNU General Public License) vs LGPL (GNU Lesser General Public License), is an important consideration.

The obvious attraction of open source is the ability to tap into a much wider spectrum of talents that may be too expensive or impractical to assemble into a development team. As a collaborative endeavor, it also allows for divergent perspectives, i.e. developer vs users and personal vs corporate, to push the product forward instead of relying on the same set of product managers in a company. With multiple constituents involved from the development cycle, open source can make the marketing costs lower and go-to-market faster. Finally, many have argued that open source can result in higher quality products.

Open source as a commercial endeavor

To succeed as commercial operation, open source companies have adopted different business models. An early model is to offer value-added services such as technical support around the source code. Several companies have done well by having a multi-licensing strategy where the public can access the open source version while enterprise users often opt for the proprietary version with feature extensions. While others would offer the latest version with a fee but becomes open source when a new version becomes available.

One common myth about open source is that it does not require dedicated engineering resources. Nothing is further from the truth. In order to start an open source project, there has to be enough ground work done to ensure that people take it seriously and can use it productively. As the project ecosystem grows, development and management resources are important to keep the work on even keel.

On the other hand, open source approach brings two distinctive advantages in the development process. One is that it allows dedicated people to be involved in a way that is not possible otherwise, e.g. language localization. The other is that it allows for the "survival of the fittest" in features where anyone can propose and add a new feature but only the truly useful ones survive the new release.

No comments:

Post a Comment