According to the official GPL2 FAQ, I have to use GPL for any project using a library under GPL (even if I don't directly use its sources), because my program links to the library. But what about non-compilable languages like Python? When I run my Python program, no linking happens and my code only contains the name of a library. Do I have to use GPL for my project then?

Is linking the keyword of the statement or what is?


I find the answer to the FAQ on determining if a plugin should be considered a derived work to be illuminating on how the FSF would likely look to the use of third-party libraries/modules in primarily interpreted languages:


If the main program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single combined program, which must be treated as an extension of both the main program and the plug-ins. If the main program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.

Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.

If you use a third-party Python library in your application, you are sharing memory and communicating complex data structures with that library. According to the quote above, that is considered to be equivalent to dynamic linking. This means that your application would be subject to the GPL if it uses a GPL-licensed library, even in a primarily interpreted language like Python.


The GPL FAQ and even the GPL itself have only a limited freedom to redefine copyright. It starts out with copyright law, and then adds precedents set by courts. Now copyright law generally doesn't talk about linking, but it often does talk about derived works and aggregations. Judicial precedents are more detailed, but also more varied.

Having said that, the courts do admit professional fields like software development to define their own interpretations by consensus. That's why you see expert witnesses in trials. The GPL FAQ is right; the consensus in the field is that the act of linking creates a derivative work. For Python, I'd argue that there's no such clear consensus yet, but I couldn't point out a derived work. The Python interpreter is running code from multiple independent sources, but each of those sources appears to be an independent work. If anything, this would be an aggregation in legal terms, but even that's a bit of a stretch. An aggregate work is typically not as volatile as a running Python program.

  • The point is also: a license gives you rights it doesn't take anything from you. Thus if the intention of the license is "you may use it, if you do X", then it holds - as otherwise you would not be allowed to use it at all. Aug 7 '20 at 8:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.