Monolune

Anti-GPL open source licenses

Here are some open source licenses for GPL haters — people who dislike the GPL. Just because a single library used by a program is licensed under the GPL, the whole program would have to be licensed under the GPL as well. This is unacceptable for many people, especially those who want license their program under other licenses (e.g. more permissive licenses, or even closed source). Instead of capitulating to the demands of the GPL, people are often forced to reinvent the wheel to implement the same functionality under a more permissive license (e.g. GNU Readline vs. libedit). This duplication of work is bad for open source.

Of course, if one dislikes the GPL, one could license one's own software under a more permissive non-copyleft license such as the BSD or MIT license instead, but doing so would allow forks of your software to license their improvements under the terms of the GPL. This is unfair, since the GPL-licensed forks will be able to copy your code with minimal restrictions, while you will only be able to copy their code if you agree to be subject to the restrictions of GPL when you copy code from them. The forks will leach code from you while you will not be able to get anything in return from them if you want to keep your code free from the viral GPL. The GPL-licensed forks lock out users who need to use the software under a more permissive license, and this forces users to either reimplement the GPL-licensed functionality, or stick to an older version of the software that does not bind them to the restrictive terms of the GPL.

How should you stop people from incorporating your work into their GPL-licensed project? How should you stop others from locking up improvements to your work under the restrictions of the GPL? The solution is to use a GPL-incompatible open source license so that your code can never be used in any GPL-licensed project.

My preferred license for this purpose is the Eclipse Public License (EPL). The EPL is a weak copyleft license. Unlike the GPL, using a library licensed under the EPL does not force the whole program to be licensed under the EPL. Only the library has to be licensed under the EPL, and all improvements to the library will have to the licensed under the EPL. The rest of the program can be licensed under any other license (including proprietary licenses, and excluding the GPL, since the GPL shot itself in the foot by being such a viral expansionist license that it becomes incompatible with the EPL). This is great for freedom and open source, since the EPL-licensed parts will always have to remain licensed under the EPL and remain open source, while the non-EPL parts can be licensed under more permissive licenses or even be closed source.

Apart from the EPL, one could also use the Mozilla Public License (MPL), which is similar to the EPL in being a weak copyleft license. However, the MPL is compatible with the GPL by default. Thankfully, the Mozilla Foundation has included a way to make the MPL incompatible with the GPL. According to Appendix B of the MPL 2.0, one needs to attach this sentence to the license notice in each file: "This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.". This notice would make the MPL 2.0 incompatible with the GPL.

There are probably many other GPL-incompatible licenses out there, but I have chosen to show the EPL and the MPL since they are the more widely used licenses that are published by respected organizations. Do you know of any other anti-GPL licenses?