GNU General Public License
The GNU General Public Licenses (GNU GPL or simply GPL) 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.[7] 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 (FSF), for the GNU Project. The license grants the recipients of a computer program the rights of the Free Software Definition.[8] 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 (FOSS) domain.[7][9][10][11][12] Prominent free software programs licensed under the GPL include the Linux operating system kernel and the GNU Compiler Collection (GCC). 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.[13] In 2007, the third version of the license (GPLv3) was released to address perceived shortcomings in the second version (GPLv2) 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.[14][15] HistoryThe 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.[16][17] 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.[18] 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.[19] These problems included the following:
Version 3 of the GPL was developed as an attempt to address the concerns mentioned above; it was officially released on 29 June 2007.[20] 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.[21][22] 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.[a] 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.[b] 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.[citation needed] Version 2
According to Richard Stallman, the major change in version 2 of the GPL was the "Liberty or Death" clause—Section 7.[18] 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.[18] 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.[23] 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 (LGPL), numbered as version 2 to show that the two licenses were complementary.[24] 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 (SPDX).[25][failed verification] The GPL includes instructions to specify "version 2 of the License, or (at your option) 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 (FSF) 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.[26][27] 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 (such as tivoization).[26][28] 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.[citation needed] 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.[29] Comments were collected from the public via the gplv3.fsf.org web portal,[30] using purpose-written software called stet. By the end of the comment period, a total of 2,636 comments had been submitted.[31] The third draft of GPLv3 was released on 28 March 2007.[32] 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. ![]() The fourth and final discussion draft was released on 31 May 2007.[33] It introduced compatibility with Apache License version 2.0 (since prior versions are incompatible); 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.[34] 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.[35][36] 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.[37] 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.[38] The kernel developers disapproved of clauses about DRM (and tivoization), patents, and "additional restrictions"; in addition, they warned of a "Balkanisation" of the "Open Source Universe".[38][39] Linus Torvalds, who chose not to adopt the GPLv3 for the Linux kernel,[40] reiterated his criticism several years later.[41][42] GPLv3 improved compatibility with several free software licenses, such as the Apache License (version 2.0) and the GNU Affero General Public License (which GPLv2 could not be combined with).[43] 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,[44] Toybox developer Rob Landley described it as a lifeboat clause.[c] Software projects licensed with the optional "or later" clause include Joomla[47] and the GNU Project,[48] while a prominent example without this clause is the Linux kernel.[40][49] The final version of the license text for GPLv3 was published on 29 June 2007.[50] Terms and conditionsThe terms and conditions of the GPL must be made available to any person receiving a copy of a work that has a GPL license applied to it ("the licensee"). Any licensee who adheres to the terms and conditions is given permission to modify the work, as well as to copy and redistribute the work or any derivative version. The licensee is allowed to charge a fee for this service or perform this service free of charge. This latter point distinguishes the GPL from software licenses that prohibit commercial redistribution. The FSF asserts that free software should not place restrictions on commercial use, and the GPL explicitly states that GPL works may be sold at any price.[51] The GPL additionally states that a distributor may not impose "further restrictions on the rights granted by the GPL". This statement forbids activities such as distributing the software under a non-disclosure agreement or contract.[citation needed] The fourth section of the GPLv2 and the seventh section of the GPLv3 require that programs distributed as pre-compiled binaries be accompanied by one of several things: a copy of the source code; a written offer to distribute the source code via the same mechanism as the pre-compiled binary file; or a written offer to obtain the source code that the user got when they received the pre-compiled binary file under the GPL. The second section of the GPLv2 and the fifth section of the GPLv3 also require distributing the license along with the program. The GPLv3 allows making the source code available in additional ways to satisfy its seventh section. These ways include downloading source code from an adjacent network server and peer-to-peer transmission, provided that the compiled code was available the same way and there are "clear directions" on where to find the source code.[citation needed] The FSF does not hold the copyright for a work released under the GPL unless an author explicitly assigns copyrights to the FSF; this seldom happens, except for programs that are part of the GNU Project. Only the individual copyright holders have the authority to sue when a license violation is suspected.[citation needed] ![]() Use of licensed softwareSoftware under the GPL may be used for any purposes, including commercial ones, and even as a tool for creating proprietary software, such as when using GPL-licensed compilers.[52] Users or companies who distribute GPL-licensed works (e.g., software), may charge a fee for copies or provide them free of charge. This distinguishes the GPL from two other kinds of license: shareware software licenses that allow copying for personal use but prohibit commercial distribution, and proprietary licenses where copying is prohibited by copyright law. The FSF asserts that freedom-respecting free software should not restrict commercial use and distribution (including redistribution):[51][53]
However, software running as an application program under a GPL-licensed operating system (such as Linux) is not required to be licensed under GPL or to be distributed with source-code availability; the licensing depends only on the used libraries and software components, but not on the underlying platform.[54] For example, if a program consists only of original source code, or it is combined with source code from other software components,[d] then the custom software components need not be licensed under GPL and need not make their source code available; even if the underlying operating system used is licensed under the GPL, applications running on the system are not considered derivative works.[54] Only if GPL-licensed parts are used in a program (and the program is distributed) must all other source code of the program be made available under the same license terms. The GNU Lesser General Public License (LGPL) was designed to have a weaker copyleft than the GPL, in that the LGPL does not require custom-developed source code (as distinct from the LGPL-licensed parts) to be made available under the same license terms.[citation needed] The fifth section of the GPLv3 states that no GPL-licensed code shall be considered an effective "technical protection measure" as defined by Article 11 of the WIPO Copyright Treaty, and that those who convey the work waive all legal power to prohibit circumvention of the technical protection measure "to the extent such circumvention is effected by exercising rights under this License with respect to the covered work". This statement means that users cannot be held liable for circumventing DRM implemented using GPLv3-licensed code under laws such as the US Digital Millennium Copyright Act (DMCA).[55] CopyleftThe distribution rights granted by the GPL for modified versions of a work are not unconditional. When a person distributes a GPL-licensed work plus their own modifications, the requirements for distributing the whole work cannot be any greater than the requirements in the GPL. This requirement is known as copyleft. It gains its legal power from the use of copyright on software programs.[citation needed] Because a GPL work is copyrighted, a licensee has no right to redistribute it, not even in modified form (barring fair use), except under the terms of the license. A person is only required to adhere to the terms of the GPL if they wish to exercise rights normally restricted by copyright law, such as redistribution. Conversely, if a person distributes copies of the work without abiding by the terms of the GPL (for instance, by keeping the source code secret), they can be sued by the original author under copyright law.[citation needed] Copyright law has historically been used to prevent distribution of work by parties not authorized by the creator. Copyleft uses the same copyright laws to accomplish a very different goal. Copyleft grants distribution rights to all parties insofar as they provide the same rights to subsequent parties, and these parties to the next parties, and so on. In this way, the GPL and other copyleft licenses attempt to enforce libre access to the work and all derivatives.[56] Many distributors of GPL-licensed programs bundle the source code with the executables. An alternative way to satisfy the copyleft is giving a written offer to provide the source code on a physical medium (such as a CD) upon request. In practice, many GPL-licensed programs are distributed over the Internet, and the source code is made available via the FTP or HTTP protocol. For Internet distribution, this approach complies with the license.[citation needed] Copyleft applies only when a person seeks to redistribute the program. Developers may create private modified versions with no obligation to divulge the modifications, as long as they do not distribute the modified software to any other person. Copyleft applies only to the software, but not to its output (unless that output is itself a derivative work of the program).[e] For example, a public web portal running a modified derivative of a GPL-licensed content management system is not required to distribute its changes to the underlying software; this follows because the modified web portal is not being redistributed but rather hosted, and also because the web portal output is not a derivative work of the GPL-licensed content management system. Some people have debated whether it is a violation of the GPLv1 to release source code in obfuscated form, for example, in cases where the author is less willing to make the source code available. The debate's consensus found such release unethical, but not a violation of the license. The issue was clarified when the GPL was altered in version 2 to require that the "preferred" version of the source code be made available.[58] License versus contractThe GPL was designed as a license, rather than a contract.[59] In some common law jurisdictions, the legal distinction between a license and a contract is important: contracts are enforceable by contract law, whereas licenses are enforced under copyright law. However, this distinction is not useful in the many jurisdictions without differences between contracts and licenses, such as civil law systems.[60] People who decline the GPL's terms and conditions do not have permission, under copyright law, to copy or distribute GPL-licensed software or derivative works. However, if these people do not redistribute the GPL-licensed program, they may still use the software within their organization as they wish, and works (including programs) constructed by using the program need not be covered by this license.[citation needed] In 2007, software developer Allison Randal argued that the GPLv3 (as a license) is unnecessarily confusing for non-specialist readers, and it could be simplified while retaining the same conditions and legal force.[61] In April 2017, a US federal court ruled that an open-source license is an enforceable contract.[62] In October 2021, the Software Freedom Conservancy (as an end user) sued the company Vizio (as a copyright holder) over breach of contract; the goal of the suit was to obtain the source code for Vizio's televisions. A federal judge has ruled in the interim that the GPL is a contract enforceable by end users, as well as a license for copyright holders.[63] DerivationsThe text of the GPL is copyrighted, and the copyright is held by the Free Software Foundation. The FSF permits people to create new licenses based on the GPL, as long as the derived licenses do not use the GPL preamble without permission. This use is discouraged, however, since such a license might be incompatible with the GPL[64] and causes a perceived license proliferation. Other licenses created by the GNU Project include the GNU Lesser General Public License, GNU Free Documentation License, and GNU Affero General Public License. The text of the GPL is not covered by the GPL. The license's copyright disallows modification of the license itself. Copying and distributing the license are allowed, since the GPL requires recipients to receive "a copy of this License along with the Program."[65] According to the GPL FAQ, any person can create a new license using a modified version of the GPL, as long as they meet three conditions: they use a different name for the license; they do not mention "GNU"; and they remove the preamble. However, the preamble can be used in a modified license if permission is obtained from the Free Software Foundation (FSF).[66] Linking and derived works
LibrariesAccording to the FSF, "The GPL does not require you to release your modified version or any part of it. You are free to make modifications and use them privately, without ever releasing them."[67] However, if a person releases a GPL-licensed entity to the public, there is a question about linking—namely, whether a proprietary program that uses a GPL library is in violation of the GPL.[citation needed] This key issue is whether non-GPL software can statically link or dynamically link to GPL libraries in a legal way. There are different opinions on this issue. The GPL is clear in requiring that all derivative works of code under the GPL must themselves be under the GPL. Ambiguity arises with regard to using GPL libraries and bundling GPL software into a larger package (perhaps mixed into a binary file via static linking). [citation needed] Point of view: dynamic and static linking violate GPLThe Free Software Foundation holds the copyright of several notable GPL-licensed software products and of the license text itself. The foundation asserts that an executable that uses a dynamically linked library is indeed a derivative work. This assertion does not, however, apply to separate programs communicating with one another.[68] The Free Software Foundation also created the LGPL, which is nearly identical to the GPL, but with additional permissions to allow linking for the purposes of "using the library". Richard Stallman and the FSF specifically encourage library writers to license under the GPL, so that proprietary programs cannot use the libraries, in an effort to protect the free software world by giving it more tools than the proprietary world.[69] Point of view: static linking violates GPL, but unclear about dynamic linkingSome people believe that while static linking produces derivative works, it is unclear whether an executable that dynamically links to GPL code should be considered a derivative work (see weak copyleft). Linux author Linus Torvalds agrees that dynamic linking can create derived works, but he disagrees about the circumstances.[70] A Novell lawyer has written that dynamic linking not being derivative "makes sense" but is not "clear-cut", and that evidence for well-intentioned dynamic linking can be seen in the existence of proprietary Linux kernel drivers.[71] In the case Galoob v. Nintendo, the United States Ninth Circuit Court of Appeals defined a derivative work as having "'form' or permanence" and noted that "the infringing work must incorporate a portion of the copyrighted work in some form". Nevertheless, no clear court decisions have resolved this particular issue to date.[72] Point of view: linking is irrelevant
According to an article in the Linux Journal, Lawrence Rosen (a one-time general counsel for the Open Source Initiative) argues that the method of linking is mostly irrelevant to the question of whether a piece of software is a derivative work; more important is the question of whether the software was intended to interface with client software or libraries.[73] Rosen states, "The primary indication of whether a new program is a derivative work is whether the source code of the original program was used [in a copy-paste sense], modified, translated or otherwise changed in any way to create the new program. If not, then I would argue that it is not a derivative work;"he lists numerous other points about intent, bundling, and linkage mechanism.[73] He further argues on his firm's website that such "market-based" factors are more important than the linking technique.[74] There is also the specific issue of whether a plugin or module (such as the kernel modules for the NVidia or ATI graphics card ) must also be GPL if it could reasonably be considered to be its own work. This point of view suggests that reasonably separate plugins, or plugins for software designed to use plugins, could be licensed under an arbitrary license if the work is GPLv2. Of particular interest is the GPLv2 paragraph:
The GPLv3 has a different clause:
As a case study, some supposedly proprietary plugins and themes (or skins) for a GPLv2 content management system (CMS) have come under fire, with both sides of the debate represented. Examples of these systems include Drupal and WordPress.[75] The FSF makes a distinction as to how a plugin is invoked. If the plugin is invoked through dynamic linkage, and it makes function calls to a GPL program, then the plugin is most likely a derivative work.[76] Communicating and bundling with non-GPL programs
The mere act of communicating with other programs does not, by itself, require all software to be GPL; nor does distributing GPL software with non-GPL software. However, minor conditions must be followed that ensure the rights of GPL software are not restricted. The following is a quotation from the GPL FAQ (at gnu.org), which describes the extent to which software is allowed to communicate with and be bundled with GPL programs:[77]
The FSF thus draws a line between "library" and "other program" via two aspects of the situation: the "complexity" and "intimacy" of information exchange, and the mechanism (rather than the semantics). But the foundation concedes that the question is not clear-cut, and case law will determine the outcome in complex situations. Legal statusThe first known violation of the GPL occurred in 1989, when the company NeXT extended the GCC compiler to support Objective-C, but did not publicly release the changes.[78] After an inquiry, the company created a public patch utility. No lawsuit was filed over this violation.[79] In 2002, MySQL AB sued the company Progress NuSphere for copyright and trademark infringement in US federal court. NuSphere had allegedly violated MySQL's copyright by linking MySQL's GPL-licensed code with the NuSphere Gemini table without complying with the license. After a preliminary hearing on 27 February 2002, the parties entered settlement talks and eventually settled.[f] After the hearing, FSF commented that the judge "made clear that she sees the GNU GPL to be an enforceable and binding license."[80] In August 2003, the SCO Group stated that they believed the GPL to have no legal validity, and that they intended to pursue lawsuits over sections of code supposedly copied from SCO Unix into the Linux kernel. This was a problematic stand for SCO, as they had distributed Linux and other GPL-licensed code in their Caldera OpenLinux distribution, and there is little evidence that they had any legal right to do so except under the terms of the GPL.[citation needed] In February 2018, after a federal circuit court judgment, appeal, and partial remanding to the circuit court, the parties restated their remaining claims and provided a plan to move toward final judgement. |