Whether code distributed together with GPL software (especially independently developed software) has to be subject to the GPL depends on how the LGPL software and independent code interact. sec. 2 GPLv2 describes the necessary criteria. The basic rule is found under sec. 2b) GPLv2:
"You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of that license."
Anything that can be considered a work that is derived from the GPL software (derivative work) also has to fall under the GPL when it is distributed. The GPL only outlines when a "derivative work" exists, and this cannot always be precisely determined. Part of the reason why are the innumerable ways in which program components can interact with each other. The provisions of the GPL therefore necessarily remain abstract. Ultimately, it is a judgment call which code components are independent, and when code components can be defined as "derived" from a program. In case of doubt, legal counsel should be procured to clarify specific instances. However, a few general rules apply to frequently occurring situations:
a) Adding to an existing file
If software licensed under the GPL is changed so that existing files are expanded with independent code or existing code is replaced, this code may only be marketed under the GPL.
b) Joint distribution on a data carrier
If an independent program is distributed together with GPL software on a CD or another data carrier, the independent program can be subject to any type of license when the two programs are independent from each other.
c) Application programs for Linux
If an application program written for Linux only runs under normal system calls using the Linux kernel and remains in "UserLand," it does not have to fall under the GPL.
d) Use of software tools, editors and compilers
If GPL software tools are used to create a program and no code from these tools is incorporated in the generated software, the tools do not have to be subject to the GPL.
e) Kernel modules
The situation concerning kernel modules remains unsettled. So-called "binary-only modules” have been tolerated in Linux up to now, but this does not resolve their license requirements. Unfortunately, there are no uniform rules – one has to determine on a case-by-case basis if distribution is separate in terms of form and content.
f) Program libraries
The regulation governing program libraries that fall under the GPL is similar to that governing kernel modules: Whether or not the program accessing the library needs to be subject to the GPL depends on the type of library and the type of distribution. The same holds true in the reverse situation when the accessing program is subject to the GPL. There are those who feel that linking always generates a derivative work. This at least applies to dynamically linked libraries; however, the courts have not provided any precedents that could serve as a reference point.
g) Communication via interfaces
Independent programs as well as "dependent" components can be linked via interfaces. The mere fact that an interface is being used does not determine whether the involved code has to be licensed under the GPL. If there is only an exchange of information via communication means that are normally used for the interaction of independent programs, the outside code does not have to be subject to the GPL. This is generally the case when pipes, sockets and command line arguments are used. If there is a closer connection beyond just communication, especially when the combination affects the structure of the software components, a “derivative work” can exist in individual cases.
See also section on Derivative Work
This FAQ is based on the FAQs of the commentary “Die GPL kommentiert und erklaert” [Discussions and explanations of the GPL] published by ifrOSS at O’Reilly.
Next section The GNU General Public License (GPL), Version 3, next FAQ: What is the difference between GPLv2 AND GPLv3?
Back to the overview of all FAQs