Selecting Open Source Software Libraries (Part 1)
There’s a plethora of open source out there, downloadable over the internet at the click of a button. As a professional software developer there are a number of issues you should be aware of when choosing open source software for inclusion in your own software product. The decision could make or break your project!
The first thing to be aware of is that free software (in the sense of no cost download) is not the same as open source software (OSS). Whereas OSS is usually without cost to download, “free” software does not necessarily include the source code. Without the source code, the “no cost” software needs to be in a form executable on your system. This is not a problem for java libraries assuming that the virtual machine is available (or other interpreted languages if you have the runtime system necessary), but would be a problem for C or C++ for example. Just to confuse matters the GPL found in open source software is authored by the free software foundation – they use the term “free” software as in the sense of open source.
Finding software: google™ or other search engines are always a good starting point. Sourceforge[1] is a website specialised in hosting open source projects. They have defined the licenses they accept as open source. If you’re looking for java libraries Apache is another source of usually good software quality. More popular standards or technologies often have a wiki with information on available implementations.
Some of the more obvious restrictions to check: operating system, HW requirements (RAM, code size), required functionality, cost, programming language.
A very important aspect is the licensing model: GPL, LGPL, Apache, BSD, MIT, MPL – there are a lot of different licenses, and you probably need to be a legal expert to understand the terms specified in these. Certainly GPL is restrictive in that often you are required to make your own software available to the public domain, which may be a problem if you are developing commercial software. LGPL is less restrictive in that respect. Apache, BSD, MIT, and MPL have no such requirement and are good candidates for use in commercial offerings. The OSI website has information about the various open source licenses[2]Another increasing popular model is dual licensing – an open source license (usually GPL) for the community version and a commercial license for business use. Commercial licenses obviously have the advantage of guaranteed support.
[1] http://sourceforge.net/
[2] http://www.opensource.org/licenses/