A Restrictive License
Among the open source licenses, the GPL is certainly one of the most
restrictive. The extra restriction states that when two modules are combined
into a program, if one of them is covered by the GPL, than the combined work
must also be covered by the GPL license. The purpose of this clause is
laudable. It is to prevent people or companies to redistribute GPL software
under a proprietary license without having to contribute back the changes to
the free software community.
An Imprecise License
This reason for this restriction is certainly legitimate, but
unfortunately the wording of the license is not clear. The restriction is
based on the concept of "combined work" and this has led to a great deal of
discussion to determine exactly when two modules are "combined" or just "a
mere aggregation", in respect to the GPL.
Consider the case of an interpreter released under GPL. The GPL does not
impose any restriction on the license of the interpreted program. However,
if the interpreter provides "bindings to libraries", that those libraries
are released under the GPL and that the interpreted program uses those
libraries, then the interpreted program must be released under the GPL.
Assume we have a GPL interpreter for arithmetic expressions. No
restriction can be made on the program "1 + 1". Now what about the program
"sqrt(2)"? Should we consider the sqrt function as a facility accessed
through the interpreter? If the interpreter is extensible and sqrt is
implemented in a library, then "sqrt(2)" must be covered by GPL as the sqrt
function is covered by GPL. We could also wonder if "1 + 1" would have to be
covered by GPL if it was written "add(1, 1)".
Perverse Use of the License
We have just considered one example, but there are numerous real-world
cases where the GPL license is just not clear enough. In those cases, it is
not possible to know for sure if two modules must considered "combined" or
"a mere aggregation". You are left to wonder "am I allowed to use this GPL
program/library from my proprietary program"? If you ask a lawyer, he will
tell you that to be on the safe side you must not use a GPL program/library
from your proprietary software.
Many vendors are well aware of this situation and they use it for their
own interest. In the last few years we have seen many libraries released
under the GPL license by commercial companies. At the same time, they offer
for a fee the same software under a proprietary license that has no
restriction on "combined works". These vendors know that other commercial
companies would rather pay a fee than release their own software under the
GPL license. This gives the library vendor both the benefits of open source
software (mostly free coverage) and those of proprietary software (being
able to charge a premium price for the software).
For Those Who Care about Free Software
Preventing companies to use GPL code in their proprietary software is not
an incentive for those companies to license their software under GPL.
Instead, it forces them to buy and use the GPL software under a proprietary
license. Since the software is paid and is used under a proprietary license,
the user has fewer incentives to contribute improvements to the community.
This further helps the original author to keep in control of his software
and to continue to charge for the proprietary version of his GPL program.
All this completely defeats the original purpose of the GPL license, which
is to promote the use of free software. My recommendation to people who
truly want to encourage the use of free software is to choose a less
restrictive license, like the Apache license or the MPL tri-license, instead
of the GPL.
References