Warning: Function registration failed - duplicate name - xslt_create in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_set_sax_handlers in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_set_scheme_handlers in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_set_error_handler in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_set_base in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_set_encoding in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_set_log in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_process in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_error in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_errno in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_free in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_set_object in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_setopt in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_getopt in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_backend_version in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_backend_name in /home/avernet/public_html/misc/controller.php on line 2

Warning: Function registration failed - duplicate name - xslt_backend_info in /home/avernet/public_html/misc/controller.php on line 2

Warning: xslt: Unable to register functions, unable to load in Unknown on line 0

Warning: Cannot modify header information - headers already sent by (output started at /home/avernet/public_html/misc/controller.php:2) in /home/avernet/public_html/misc/controller.php on line 26
GPL: A Pervert License

GPL: A Pervert License

Alessandro Vernet
February, 2003

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