How to choose a free software license.

Figure out what your goals are first.

Really. Your are releasing the code for a reason. The license you choose should be the license that best promote that goal. The reason we have different free software licenses is that they are written for different purposes. However, first make sure your understand the legal and practical concerns.

Legal: Obviously, you must be sure you actually own the code. Otherwise, you are not the one who can select the license. There is a good chance that your employer or sponsor own the code. Check it first. If in doubt, ask a lawyer.

Practical: Mixing licenses can be impractical, even if done right it means the concerned user will have more licenses to read and try to understand. So, unless your goals (see below) interfere, I suggest for practical reasons to use the same license as "related" software. I.e., a program for the KDE desktop should use the same license as KDE, a Perl library should use the same license as Perl, an X11 utility should use the X11 license, und so weider. Think about what software "community" your program will be part of, and choose the dominating license in that community. These practical concerns often override the "political/personal" concerns listed below.

"Political/personal" goals:

1. Get rich: Maybe you hope to make money of the product, and want to use the free version for marketing and perhaps debugging. This is perfectly all right, lots of useful free software is developed like this, examples include Qt, Ghostscript, Cygwin, MySQL and ReiserFS. The developers of all five have both free and non-free versions available. Here, you want a "copyleft" license that prevents others from undercutting you in the non-free market. GPL is used by Cygwin, MySQL and ReiserFS, Qt uses a QPL/GPL dual license, and Ghostscript uses the "Aladdin GPL" which is just short of being OSI certified, but old versions are available under the GPL.

QPL can be combined with most free software licenses but GPL, and GPL can only be combined with GPL, LGPL, and licenses close to PD.

Suggestion: Use a GPL / QPL dual license.

2. Get help: A good reason to release the source code, is that you hope to get bug fixes and other contributions, i.e. free developers. Here, you want a license that encourage people to share back, but also allows so many people as possible to use it. A copyleft like GPL or QPL will prevent developers of non-free software to use it, and PD-like license like BSDL or X11 will allow them to keep their improvements to themselves. The compromise here is one of the "library" licenses, LGPL and MPL. Both are designed to allow or even encourage use in non-free products, but keep your part of the code free in form of a library (LGPL) or file (MPL). Theoretically, developers can write improvements and bug fixes in different libraries or files to "get around" the license, but since the complete product can remain non-free, there is little reason to do that. MPL can't be used in GPL'ed projects, and LGPL have some practical problems that might make developers of non-free products avoid it.

Suggestion: Use a MPL / LGPL dual license.

3. Improve the state of the art. You love technology, and want us to progress as fast as possible. You don't really care about politics, and think free vs. non-free isn't as important as quality. You want a license that encourage others to use it, no matter who they are. Better products, free or non-free, will create a better world. Choose a well known and trusted license with a minimum of restrictions.

Suggestion: Use the new BSDL.

4. You want to help promote free software. You like the idea of free software much better than non-free software, and want your contribution to help make free software software beat non-free software on quality as well as price. Here, you want a copyleft license to delay having you improvements copied to non-free solutions.

Suggestion: Use a GPL / QPL dual license.

5. You want your software to be used. You have written this software, and simply like to know that as many people as possible use it. Here, you want to encourage everybody to use it as part of their products, and don't want any restrictions in their way. Public Domain would be perfect, but the concept is not recognized everywhere, and some claim it will leave you vulnerable for a lawsuit. I suggest using a well-known license, written by top-grade lawyers, and trusted by everyone.

Suggestion: Use the new BSDL.

Links and Definitions

OSI in this context is the Open Source Initiative. They have a certification mark for open source licenses. They also have a list of approved licenses. You can find almost all the mentioned licenses there.

FSF here is the Free Software Foundation. They have their own list of free software licenses, and also explains some of the glossary used in the article.

The "new BSDL license" refers to the latest version of the BSD license, which doesn't require product advertising to credit University of California like the original did.

A dual license here means that the user will get a choice of following either or both of two different licenses. This means that if he likes one license and dislike the other, he can ignore the conditions of the license he doesn't like, as long as he follows the conditions of the other license.

<abraham@dina.kvl.dk>