logo

The GPL & Copyleft

Authors: Lloyd Hardy, Richard Stallman

Revision: 1.8 (2014/12/22)

5.0 – The GPL & Copyleft


Non-free (proprietary) software publishers have traditionally used software licenses to block the user from using their software freely. In most jurisdictions, this is implemented by acts of copyright law and the non-free software publisher uses a software license to limit the user's freedoms.

In the Free Software philosophy, the four freedoms must be protected. Under copyright laws, an author wishing to reuse code must first get the copyright holder's permission to do so. This requirement would limit the user's ability to enjoy freedoms 2 and 3, so the software would not be free software. A Free Software license gives the user these freedoms. One such free software license is the GPL.

The GNU Project created the GNU General Public License in order to give authors a licensing method that would protect the four freedoms.

 

5.1 – The GPL (GNU General Public License)

The GNU General Public License is a Free Software license which has been released in three versions to date.

 

5.1.1 - GPLv1

The first version of the GPL was released in February 1989. It was made to protect the freedoms of Free Software. One of the ways it did this was by requiring that source code be made available when binaries were distributed:


“You may copy and distribute the Program... ...accompany it with the complete corresponding machine-readable source code... ...or... ...accompany it with a written offer... ...to give any third party... ...a complete machine-readable copy of the corresponding source code...” [1]

 

This protected the freedom of the user to study and modify Free Software which could otherwise be made inaccessible to the user. GPL v1 also required that software which incorporated GPLv1 licensed work should also be released under the same license:


“Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions.” [1]


This protected the work of copyright holders who wanted to contribute to Free Software by ensuring that their work could not be incorporated into non-free works without their consent. Even more importantly, it blocked a contributor from adding code which made it non-free. This also perpetuated modified (edited, extended, derivative) versions to be available to allow further modified verisons.

 

5.1.2 - GPL v2

The second iteration of the GPL was released in June 1991. It was primarily made to address the threat to Free Software by software patents.


“...the biggest change in version 2 was to introduce a "Liberty or Death" clause - the clause that says if somebody uses a patent or something else to effectively make a program non-free then it cannot be distributed at all” [2]

 

It is beyond the scope of a software license to combat software patents directly, so v2 of the GPL stated that if the code released under the license were to be restricted by proprietary methods, then the software could not be distributed (as it would compromise both the GPLv2 license terms and the proprietary license to do so).“For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.” [3]

Another change in GPLv2 was to the “system library exception”. GPLv1 had already recognised that accompanying system libraries need not be distributed in source to comply with the GPL. In GPLv2 this was changed to handle the case where various major system components were distributed seperately, and each one came with system libraries.


“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.” [3]

 

In addition, the LGPL was released. The LGPL addressed software libraries that may be required to used by non-free programs. The LGPL (v2) was drafted in 1991 and later updated in 1999 to version 2.1 as the Lesser GNU Public License. This was then finally updated to version 3 [4]. The LGPL is designed for special circumstances where it would be beneficial to enable wider application of Free Software in a non-free environment.


5.1.3 - GPLv3

The most recent version of the GPL is version 3, released in June 2007. GPLv3 was written by Richard Stallman, with legal counsel from Eben Moglen and Software Freedom Law Center [5].


5.1.3.1 – Tivotisation

Tivotisation is the threat from a hardware platform that restricts the version of the software which runs on it. A checksum is tested against the installed version of the software and execution is disallowed if the value is not met. The software may be free, but it is trapped by this restriction.

This means that the platform is not free and the user is blocked from being able to run modified versions of the free software on the system. Tivotisation is addressed in GPLv3.


5.1.3.2 – Trusted Computing

Trusted Computing (aka 'Treacherous Computing') is a different risk to freedom than that of Tivotisation. A user is 'allowed' to run a modified version but a third party mandates that only authorised code is allowed to perform certain actions. This gives a hardware vendor the ability to control a user's computing, restricting the capability of a user's software, denying functionality and allowing only versions of software which the third party decides a user should be 'allowed' to run to access the same files and sites as the previously unmodified version.

The GPL v3 was designed with this in mind and provides protection for the user to be able to modify their own software without loss of functionality:

 

“The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made”. [6]

 

5.1.3.3 – Software Patents

Software patents are a threat to the freedom of the user. Software may be released as free software, yet still be at risk from patent litigation. In order to address this, the GPLv3 ensures that those who contribute work grant a patent license for the uses that GPLv3 permits. This makes it impossible for patent holders of contributed works to deny users and redistributors the rights thatthe GPL gives them.

 

“Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. ..” [6]

 

In addition, GPL v3 also states that redistributors must, as a condition of redistribution, agree not to use their patents against users and redistributors.

 

“...To 'grant' such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.” [6]

 

5.1.3.4 – Bittorrent Binary Download

Bittorrent distribution of binaries is permitted. The GPL says you must offer source code if you distribute binaries. With Bittorrent, if you download you also redistribute. So if you use Bittorrent to download a binary and you don't distribute the source, you violate GPLv2. GPLv3 has an exception to make this permitted.

 

“...e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d....” [6]

 

5.1.3.5 – Gentler Termination

Termination is gentler in GPLv3. If you make a mistake and violate the GPL and correct your mistake, it is much easier to get forgiveness as you only need forgivenesss from the copyright holders who have complained to you – not from all the thousands of them:

 

"...However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation...” [6]

 

5.1.3.6 – Other Improvements in GPL v3

In addition to the other improvements in GPLv3, this version of the GPL is compatible with the Apache 2.0 License. There is also a clear framework for giving added permissions on some of your code, with explanation of what that means for everyone involved witht that code.

 

5.1.4 – AGPL v3

Another challenge came from the evolution of the Internet and the availability of Software that was provided as a Service from a web server. This was addressed in the optional additional clause to the GPL that constituted the AGPL v3.

The GNU Affero General Public License (AGPL) v3 was published in November 2007. The AGPLv3 addresses licensing requirements where the software is used in the provision of a service to the user and not traditionally 'distributed':

 

“13. Remote Network Interaction; Use with the GNU General Public License. Not with standing any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge,through some standard or customary means of facilitating copying of software.” [7]

 

When a program is used on servers, some users might make important improvements to use on their own servers, and never release them. If this becomes common, it could impede the development of the program. The AGPL requires these server operators to make their source code available to the users of the server; thus, their improvements get back to the community.

As we utilised the Internet to innovate networked applications, the AGPL may be central in ensuring software freedom and in protecting the four freedoms of free software authors and users. For this reason, the AGPL is central to the philosophy of the Free Software University.

 

5.2 – Releasing Software under the AGPL

As you develop Free Software, you may choose to develop software using the GPL or AGPL. All source code produced at the Free software University will be licensed under the AGPL. For this reason it is important that we learn how to apply the terms of the AGPL to our programs.

Firstly, as the AGPL depends on copyright, we must ensure that a clear copyright notice is placed at the start of each source file.

 

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

[7]

 

This provides a brief description of the program and an exclusion of warranty. The copyright date and author's name should be included.

It may impact performance to provide a full version of the AGPL in the head of a web-page based application, for example. You can then include a copy of the license as a text file along with the source files. In addition, a notice can be used to link to a location of the full text of the license.

The use of your software might not provide access to the source (for example, when a server-side programming language is used). In this case you could display a "Source" link that leads users to an archive of the code. [7]

Regarding the attribution of copyright, an employer or school should sign a copyright disclaimer for the program, if necessary. [7]

 

5.3 – GPL-Compatible Licenses

License 'compatibility' refers to the ability to release derivative works under each licence’s terms. Other software licenses can be considered as GPL-compatible or not GPL-compatible. Some additional licenses were made GPL-compatible by the GPLv3.

 

Fig. 1 – GPL-Compatible Lisencing. Source: Free Software foundation [8]

 

The FSF maintains a list of licenses and classification about their compatibility with GPL and whether or not they are copyleft licenses [9]. As GNU licenses are released in newer versions, it becomes increasingly important to know how you can released software based on derivative works of an older license. The FAQ resource in the further reading section of this lecture provides a GNU license
compatibility matrix.

 

5.4 – What Copyleft Means

Copyleft means that derivative works of the software must also be released under the same license. This provides an assurance that the code will not be incorporated into non-free software:

 

“Copyleft is a general method for making a program (or other work) free, and requiring all modified and extended versions of the program to be free as well.” [10]

 

The success of many free software projects can be attributed not only to the freedom they provide, but the assurance that they create a free software legacy. Without copyleft, the efforts of thousands of developers could be incorporated into proprietary software and the user could again face non-free software restrictions. The strength of the copyleft requirements in free software licenses can vary. They can range from permissive licenses which allow the incorporation of code into proprietary software to those that provide strong copyleft.

The AGPLv3 is a strong copyleft license that protects all of the four freedoms of the the user.

Without applying copyleft to our work, we are potentially contributing to proprietary software development. It is for this reason that we should chose a strong copyleft license, such as the AGPLv3 under which to release our software as Free Software.

 

References

[1] http://www.gnu.org/licenses/gpl-1.0.html (Accessed: 2010/07/24)
[2] http://fsfe.org/projects/gplv3/fisl-rms-transcript.en.html#liberty-or-death (Accessed: 2010/07/24)
[3] http://www.gnu.org/licenses/gpl-2.0.html (Accessed: 2010/07/24)
[4] http://www.gnu.org/licenses/lgpl.html (Accessed: 2010/07/25)
[5] http://www.ifso.ie/documents/rms-gplv3-2006-02-25.html (Accessed: 2010/07/25)
[6] http://www.gnu.org/licenses/gpl-3.0.html (Accessed: 2010/07/25)
[7] http://www.gnu.org/licenses/agpl-3.0.html (Accessed: 2010/07/18)
[8] http://www.gnu.org/licenses/quick-guide-gplv3.html (Accessed: 2010/07/25)
[9] http://www.gnu.org/licenses/license-list.html (Accessed: 2010/07/25)
[10] http://www.gnu.org/copyleft/ (Accessed: 2010/07/25)

 

Further Reading

Transcript of a talk by Richard Stallman about GPLv3, February 25th 2006, Ciaran O'Riordan
Available from: http://www.ifso.ie/documents/rms-gplv3-2006-02-25.html

A Quick Guide to GPL v3, Brett Smith
Available from: http://www.gnu.org/licenses/quick-guide-gplv3.html

Frequently Asked Questions about the GNU Licenses, FSF
Available from: http://www.gnu.org/licenses/gpl-faq.html