- 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
Access to Source Code
The GPL allows licensees to copy and distribute the source code:
You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided.... (GPL section 1.)
Source code is defined as follows:
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. (GPL section 3.)
This is a broad definition and its intent is obviously to ensure that usable source code is available for licensed software. Deliberate obfuscation of the source code (as has been rumored to have been done by some GPL licensors) is potentially actionable as bad faith.
The GPL then offers a curious special exception for software that is normally distributed with the operating system on which the Program runs:
However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. (GPL section 3.)
The licensor of the operating system, and not the licensor of the Program, is the only one who can elect to publish his or her own source code. The GPL cannot possibly grant that permission or provide an exception relating to it. As was discussed at length in the previous section, the fact that software is merely distributed with the Program doesn't bring it under the GPL. This "special exception" is irrelevant if one accepts that only derivative works, and not collective works, are brought under the GPL.
As one of the conditions for distributing a Program or a derivative work of the Program in object code form, the licensor must also commit to the following:
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) (GPL section 3.)
A licensor under the GPL is expected to distribute or make available the source code for software he or she writes. That is what items a) and b) of GPL section 3 require. But what is the licensor's obligation regarding the source code of GPL-licensed software that he or she merely distributes, perhaps as a component of a GPL-licensed collective or derivative work? Must the licensor undertake to distribute the source code to all the contributions of the entire collective work, including components he or she didn't write? Item c) would appear to solve this problem, but only for noncommercial distribution. I believe that, in practice, most distributors under the GPL provide source code for their entire collective works, not just the portions they themselves write, regardless of this limitation to noncommercial licensors.
The GPL also gives licensors the option to distribute source code through the Internet, although it acknowledges that licensees are not compelled (i.e., they cannot be compelled) to accept the source code if they don't want it:
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. (GPL section 3.)
This provision relates only to software that is downloaded, and is needed only because items a c) of GPL section 3 relate to distribution on a physical medium. Almost all open source software is now distributed electronically on the Internet. A more modern open source license would probably condense these complex source code rules in the GPL into a few brief sentences to require that the licensor make source code available online.
The GPL is thus consistent with the source code requirements of the Open Source Principles listed in Chapter 1.