Use of GPLed Python extension modules
k at k.com
Sun Nov 23 12:48:14 CET 2003
> Paul Rubin wrote:
>>Tim Churches <tchur at optushome.com.au> writes:
>>>If a compiled Python extension module B includes code from some
>>>other software A which is licensed only under the GPL, do other
>>>Python programmes, C, which import module B also need to be licensed
>>>under a GPL-compatible license (assuming C is/are to be distributed
>>>to third parties)?
>>It's not enough for B and C to be under "GPL-compatible licenses".
>>They have to be under the actual GPL.
>> You have a GPL'ed program that I'd like to link with my code to build
>> a proprietary program. Does the fact that I link with your program
>> mean I have to GPL my program?
> AFAIK, ur python program, which is interpreted, is considered data in
> view of the program interpreter. So the GPL license is not needed.
> Correct me if I am wrong.
If a programming language interpreter is released under the GPL, does
that mean programs written to be interpreted by it must be under
When the interpreter just interprets a language, the answer is no.
The interpreted program, to the interpreter, is just data; a free
software license like the GPL, based on copyright law, cannot limit what
data you use the interpreter on. You can run it on any data (interpreted
program), any way you like, and there are no requirements about
licensing that data to anyone.
However, when the interpreter is extended to provide "bindings" to
other facilities (often, but not necessarily, libraries), the
interpreted program is effectively linked to the facilities it uses
through these bindings. So if these facilities are released under the
GPL, the interpreted program that uses them must be released in a
GPL-compatible way. The JNI or Java Native Interface is an example of
such a facility; libraries that are accessed in this way are linked
dynamically with the Java programs that call them.
Another similar and very common case is to provide libraries with
the interpreter which are themselves interpreted. For instance, Perl
comes with many Perl modules, and a Java implementation comes with many
Java classes. These libraries and the programs that call them are always
dynamically linked together.
A consequence is that if you choose to use GPL'd Perl modules or
Java classes in your program, you must release the program in a
GPL-compatible way, regardless of the license used in the Perl or Java
interpreter that the combined Perl or Java program will run on.
More information about the Python-list