- The GPL Bargain
- Copyleft and Reciprocity
- Policy Objectives
- The Preamble to the GPL
- GPL as Template
- The GPL Applies to Programs
- Linking to GPL Software
- Copyright Law and Linking
- The LGPL Alternative
- GPL Grant of License
- Access to Source Code
- "At No Charge"
- Other Obligations in the GPL
- The GPL and Patents
- Accepting the GPL
Linking to GPL Software
It is appropriate to look within the four corners of the GPL itself for guidance on this question about program linking.
The word link actually occurs only once in the official GPL, way at the end in the last paragraph of a nonbinding section called "How to Apply These Terms to Your New Programs." This paragraph deals with a different license, the LGPL, which I will describe in due course.
There are other provisions of the GPL that refer to work based on the Program. Here is the first possibly helpful reference:
...Output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. (GPL section 0.)
This provision deals with the special case of a Program that generates other programs that contain either verbatim or modified/translated versions of itself. Such an esoteric example of program interdependence is best ignored in a general book like this about open source licensing. It is not likely to be encountered in typical open source applications.
The GPL, in section 2, then requires us to analyze the software based not upon how it is linked but upon how it is distributed. Because it will be helpful to parse this provision carefully, I quote each sentence separately.
These requirements apply to the modified work as a whole.
If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.
But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. (GPL section 2.)
According to the first sentence, the entire GPL applies to a "modified work as a whole." Under the copyright law, such a "modified work" is a derivative work. (17 U.S.C. § 101.) So far, there is no hint that linking makes a difference.
The second sentence refers to portions of the work that "are not derived from the Program"that is, are not derivative works. This necessarily means works that have their own copyrights, their own copyright owners, and potentially their own licenses. So the second sentence is true regardless of whether the independent and separate works are linked in some way to the GPL software. Such works remain "independent and separate works," at least "when you distribute them as separate works," and the GPL cannot possibly apply to them without their copyright owner's consent.
The third sentence refers to those "independent and separate works" when they are distributed "as part of a whole." Once again, we are reminded that the GPL applies to the whole work. But how are we to understand its reference to "the same sections as part of a whole which is a work based on the Program" and later "to each and every part regardless of who wrote it"? Is this a reference to the Copyright Act?
The copyright in a compilation or derivative work extends only to the material contributed by the author of such work, as distinguished from the preexisting material employed in the work, and does not imply any exclusive right in the preexisting material. (17 U.S.C. § 103.)
All that the third sentence of GPL section 2 could possibly mean under the copyright law is that, for a work to be made available under the GPL, its preexisting component parts must be available to all subsequent licensees. The licenses to those components must permit that combination. That much is necessarily true for any software containing components licensed by others. The law makes it clear that the GPL can't affect the licenses to those preexisting component parts. Again, linking doesn't matter.
The GPL then expresses its intent this way:
The intent is to exercise the right to control the distribution of derivative or collective works based on the Program. (GPL section 2.)
That may be the intent, but is that what the GPL actually does? This is a critical example of imprecise phrasing. Who gets "to exercise the right to control" distribution? Certainly the owner of a collective or derivative work gets "to exercise the right to control" those works, and the owner of each contribution gets "to exercise the right to control" his or her contribution. (17 U.S.C. § 103[b].)
Does the phrase based on the program refer to both derivative and collective works? That isn't technically correct, at least under the U.S. Copyright Act, because a derivative work is a work based on one or more preexisting works, but a collective work is not. (17 U.S.C. § 101.) There is still no meaningful clue about linkage.
This entire GPL provision in section 2 relating to distribution of the whole work is technically trivial to avoid. Some open source projects, trying to stay on the "safe" side of this GPL provision, advise their customers to separately download and install required non-GPL software merely to avoid "distribution as part of a whole." Thus the distinction drawn by this part of GPL section 2 has become an inconvenience rather than a meaningful requirement.
Finally the GPL directly addresses the distribution of collective works, noting that the GPL does not apply to them:
...In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. (GPL section 2.)
This sentence seems to mean that only derivative works are covered by the GPL reciprocity provision, and that "mere aggregation" of separate works onto common media (or common computer memory?) does not require reciprocity, even if those mere aggregations are distributed in one unit (i.e., "as part of the whole").
We are left with uncertaintyand instructions to contact the author of the Program for guidance:
If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. (GPL section 10.)
Some authors have indeed provided that guidance. Linus Torvalds, for example, has set a policy that software that is merely combined with Linux is not subject to the GPL regardless of how that software is linked and distributed.