GNU General Public License


The GNU General Public Licenses are a series of widely used free software licenses, or copyleft licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first copyleft license available for general use. It was originally written by Richard Stallman, the founder of the Free Software Foundation, for the GNU Project. The license grants the recipients of a computer program the rights of the Free Software Definition. The licenses in the GPL series are all copyleft licenses, which means that any derivative work must be distributed under the same or equivalent license terms. The GPL states more obligations on redistribution than the GNU Lesser General Public License and differs significantly from widely used permissive software licenses such as BSD, MIT, and Apache.
Historically, the GPL license family has been one of the most popular software licenses in the free and open-source software domain. Prominent free software programs licensed under the GPL include the Linux operating system kernel and the GNU Compiler Collection. David A. Wheeler argues that the copyleft provided by the GPL was crucial to the success of Linux-based systems, giving the contributing programmers some assurance that their work would benefit the world and remain free, rather than being potentially exploited by software companies who would not be required to contribute to the community.
In 2007, the third version of the license was released to address perceived shortcomings in the second version that had become apparent through long-term use.
To keep the license current, the GPL includes an optional "any later version" clause, which allows users to choose between two options the original terms, or the terms in new versions as updated by the FSF. Software projects licensed with the optional "or later" clause include the GNU Project, while projects such as the Linux kernel are licensed under GPLv2 only. The "or any later version" clause is sometimes known as a lifeboat clause, since it allows combinations of different versions of GPL-licensed software to maintain compatibility.
Usage of the GPL has steadily declined since the 2010s, particularly because of the complexities mentioned above, as well as a perception that the license restrains the modern open source domain from growth and commercialization.

History

The original GPL was written by Richard Stallman in 1989 for use with programs released as part of the GNU Project. The license was based on unifying similar licenses used for early versions of the GNU Emacs text editor, the GNU Debugger, and the GNU C Compiler. These licenses contained provisions similar to the modern GPL, but they were specific to each program, which rendered them incompatible despite being the same license. Stallman's goal was to produce a single license that could be used for any project, thereby enabling many projects to share code.
The second version of the license, GPLv2, was released in 1991. During the subsequent 15 years, members of the free software community became concerned about specific problems in the GPLv2 license, which could allow a person to exploit GPL-licensed software in ways contrary to the license's intent. These problems included the following:
  • tivoization—the inclusion of GPL-licensed software in hardware that prevents users from running modified versions of the software
  • compatibility issues similar to those of the AGPL
  • patent deals between Microsoft and distributors of free and open-source software, which some people viewed as an attempt to use patents as a weapon against the free software community
Version 3 of the GPL was developed as an attempt to address the concerns mentioned above; it was officially released on 29 June 2007.

Version 1

Version 1 of the GNU GPL, released on 25 February 1989, was written to protect against the two main methods by which software distributors restricted the freedoms that define free software.
The first method is publishing binary files that are only executable, but not readable or modifiable by humans. To prevent this restriction, the GPLv1 states that copying and distributing copies of any portion of the program must also make the human-readable source code available under the same licensing terms.
The second method is adding restrictions, either directly to the license or by combining the software with other software having different restrictions on distribution. The union of two such sets of restrictions would apply to the combined work, thereby adding unacceptable constrictions. To prevent this situation, the GPLv1 states that modified versions, as a whole, must be distributed under the terms of GPLv1. As a result, software distributed under the terms of the GPLv1 could be combined with software distributed under more permissive terms, since this combination would not change the terms under which the whole could be distributed. However, software distributed under GPLv1 could not be combined with software distributed under a more restrictive license, since this combination would conflict with the requirement that the whole be distributable under the terms of GPLv1.

Version 2

According to Richard Stallman, the major change in version 2 of the GPL was the "Liberty or Death" clause—Section 7. The section states that licensees may distribute a GPL-covered work only if they can satisfy all of the license's obligations, despite any other legal obligations they might have. In other words, the obligations of the license may not be severed due to conflicting obligations. This provision is intended to discourage any party from using a patent infringement claim or other litigation to impair users' freedom under the license.
By 1990, it became apparent that a less restrictive license would be strategically useful for two kinds of libraries: the C standard library and software libraries that handled the same tasks as existing proprietary libraries. When the GPLv2 was released in June 1991, a second license was introduced at the same time; this was the GNU Library General Public License, numbered as version 2 to show that the two licenses were complementary. The version numbers diverged in 1999 when version 2.1 of the LGPL was released, renamed as the GNU Lesser General Public License to reflect its role in the philosophy. The GPLv2 was updated to refer to the new name of the LGPL, but the GPL's version number remained the same. As a result, the original GPLv2 was not recognized by the Software Package Data Exchange.
The GPL includes instructions to specify "version 2 of the License, or any later version", to allow the flexible use of either version 2 or 3, but some developers change these instructions to specify "version 2" only.

Version 3

In late 2005, the Free Software Foundation announced work on version 3 of the GPL. On 16 January 2006, the first "discussion draft" of GPLv3 was published, and public consultation began. The official GPLv3 was released by the FSF on 29 June 2007. GPLv3 was written by Richard Stallman, with legal counsel from Eben Moglen and Richard Fontana from the Software Freedom Law Center.
According to Stallman, the most important changes involved software patents, free software license compatibility, the definition of "source code", and hardware restrictions on software modifications. Other changes involved internationalization, the handling of license violations, and the granting of additional permissions by the copyright holder. The term software propagation was explicitly defined as the copying and duplicating of software.
The public consultation process was coordinated by the Free Software Foundation with assistance from Software Freedom Law Center, Free Software Foundation Europe, and other free software groups. Comments were collected from the public via the gplv3.fsf.org web portal, using purpose-written software called stet. By the end of the comment period, a total of 2,636 comments had been submitted.
The third draft of GPLv3 was released on 28 March 2007. This draft included language intended to prevent patent-related agreements such as the controversial Microsoft-Novell agreement; the draft also restricted the anti-tivoization clauses to legal definitions of "user" and "consumer product". The draft also explicitly removed the section on "Geographical Limitations", the likely removal of this section having been announced at the launch of the public consultation.
File:Stallman GPLv3 launch MIT 060116.jpg|thumb|left|Richard Stallman at the launch of the first draft of the GNU GPLv3 at MIT in Cambridge, Massachusetts, United States. To his right is Columbia University law professor Eben Moglen, chairman of the Software Freedom Law Centre.
The fourth and final discussion draft was released on 31 May 2007. It introduced compatibility with Apache License version 2.0 ; clarified the role of external contractors; and made an exception to avoid perceived problems with an agreement in the Microsoft–Novell style, stating in Section 11, paragraph 6, as follows:
This exception aimed to make such future deals ineffective. The license was also intended to cause Microsoft to take action—to extend the patent licenses it granted to Novell customers for the use of GPLv3 software to all users of that GPLv3 software; this extension was possible only if Microsoft was legally a "conveyor" of the GPLv3 software.
Early drafts of GPLv3 also let licensors add a requirement similar to the AGPL that would have resolved a loophole in the GPL pertaining to application service providers. The freedom to run, study, and share the source code, as well as guarantee copyleft protections, is somewhat ambiguous in the context of web services. However, concerns were raised about the administrative costs of checking code for the additional requirements proposed in early GPLv3 drafts; it was ultimately decided to keep the GPL and the AGPL separated.
Other respondents—notably high-profile Linux kernel developers such as Linus Torvalds, Greg Kroah-Hartman, and Andrew Morton—used media comments and public statements to object to portions of the GPLv3 drafts. The kernel developers disapproved of clauses about DRM, patents, and "additional restrictions"; in addition, they warned of a "Balkanisation" of the "Open Source Universe". Linus Torvalds, who chose not to adopt the GPLv3 for the Linux kernel, reiterated his criticism several years later.
GPLv3 improved compatibility with several free software licenses, such as the Apache License and the GNU Affero General Public License. However, GPLv3 software could be combined with and share code with GPLv2 software only if two conditions were met: the GPLv2 license that was used contained the optional "or later" clause, and the software was upgraded to GPLv3. While the "GPLv2 or any later version" clause is considered by FSF to be the most common form of licensing GPLv2 software, Toybox developer Rob Landley described it as a lifeboat clause. Software projects licensed with the optional "or later" clause include Joomla and the GNU Project, while a prominent example without this clause is the Linux kernel.
The final version of the license text for GPLv3 was published on 29 June 2007.