Skip to main content

GNU General Public License (GPL)

Introduction

The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the freedom to run, study, share, and modify the software.

The licenses were originally written by Richard Stallman, founder of the Free Software Foundation(FSF), for the GNU Project, and grant the recipients of a computer program the rights of the Free Software Definition. The GPL series are all copyleft licenses, which means that any derivative work must be distributed under the same or equivalent license terms.

This is in distinction to permissive software licenses, of which the BSD licenses and the MIT License are widely used, less restrictive examples. GPL was the first copyleft license for general use.

Approximately 70% of free software packages are released under this license, including most GNU programs and thousands of others. The GNU General Public License is also considered an open source license.

A popular example of software that uses GPL is WordPress, meaning anyone can use, modify, or extend the source code as desired. In the context of the WordPress project, GPL is equal to the software’s bill of rights.

It grants open-source permissions for users including:

  • The right to download and run the software freely
  • The right to make changes to the software as desired
  • The right to redistribute copies of the software
  • The right to modify and distribute copies of new versions of the software

The GNU General Public License is available in these formats:

  • HTML
  • plain text
  • ODF
  • Docbook v4 or v5
  • Texinfo
  • LaTeX
  • Markdown
  • RTF

These documents are not formatted for standalone publishing, and are intended to be included in another document.

History

The GPL was written by Richard Stallman in 1989, for use with programs released as part of the GNU project. The original GPL was based on a unification of similar licenses used for early versions of GNU Emacs (1985), the GNU Debugger, and the GNU C Compiler. These licenses contained similar provisions to the modern GPL, but were specific to each program, rendering them incompatible, despite being the same license. Stallman's goal was to produce one license that could be used for any project, thus making it possible for many projects to share code.

The second version of the license, version 2, was released in 1991. Over the following 15 years, members of the free software community became concerned over problems in the GPLv2 license that could let someone exploit GPL-licensed software in ways contrary to the license's intent. Hence, version 3 was developed to attempt to address these concerns and was officially released on 29 June 2007.

Version 1

Version 1 of the GNU GPL, released on 25 February 1989, prevented what were then the two main ways that software distributors restricted the freedoms that define free software.

  • The first problem was that distributors may publish binary files only—executable, but not readable or modifiable by humans.
  • The second problem was that distributors might add restrictions, either to the license or by combining the software with other software that had other restrictions on distribution. To prevent this, GPLv1 stated that modified versions, as a whole, had to be distributed under the terms in GPLv1.

Version 2

The major change in GPLv2 was that the section says 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.

Version 3

In late 2005, the Free Software Foundation (FSF) announced work on version 3 of the GPL (GPLv3). The official GPLv3 was released by the FSF on 29 June 2007. The most important changes in this version was in relation to software patents, free software license compatibility, the definition of "source code", and hardware restrictions on software modifications, such as tivoization.

Other changes related to internationalization, how license violations are handled, and how additional permissions could be granted by the copyright holder. The concept of "software propagation", as a term for the copying & duplication of software, was explicitly defined.

What is the difference between GPLv2 and GPLv3 ?

GPLv3 still maintains the same primary intent as GPLv2 but has stricter copyleft protections. Language in GPLv3 makes it much more comprehensive to address technical and legal changes, including international license exchange clauses.

The four main new clauses included in GPLv3 are:

  • Compatibility regulations – License compatibility refers to situations where two separate components licensed under different conditions combine to form a new work. GPLv3 makes it easier to manage compatible licenses, specifically addressing code under the Apache V2.0 License.
  • Digital rights management – New clauses attempt to restrict GPL software changes at will as users appealed to legal regulations (like DMCA) for technical protective measures.
  • Explicit patent licensing – A new patent clause protects users from only some licensees benefiting from patent rights, requiring them to ensure every user enjoys the same advantages or that no one can profit from the software.
  • Source code exemption for ASP – Clarifies the need to disclose source code in an ASP implementation of GPL if users do not distribute a copy to clients. If copyleft should apply to ASP use, the Affero General Public License (AGPLv3) should apply.

Terms and conditions

  • 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 do this free of charge. This latter point distinguishes the GPL from software licenses that prohibit commercial redistribution.
  • The GPL additionally states that a distributor may not impose "further restrictions on the rights granted by the GPL". This forbids activities such as distributing the software under a non-disclosure agreement or contract.
  • The fourth section for version 2 of the license and the seventh section of version 3 require that programs distributed as pre-compiled binaries be accompanied by a copy of the source code, a written offer to distribute the source code via the same mechanism as the pre-compiled binary, or the written offer to obtain the source code that the user got when they received the pre-compiled binary under the GPL.
  • The second section of version 2 and the fifth section of version 3 also require giving "all recipients a copy of this License along with the Program".
  • Version 3 of the license allows making the source code available in additional ways in fulfilment of the seventh section.
  • The FSF does not hold the copyright for a work released under the GPL unless an author explicitly assigns copyrights to the FSF. Only the individual copyright holders have the authority to sue when a license violation is suspected.

The license embodies the Free Software Foundation's "copyleft" rule, which means that anyone is allowed to make changes or extend the source code and redistribute it as long as the changes are clearly marked, and the modified work is also licensed under the GNU General Public License.

How to use GPLv3 ?

To release software under GPL licenses, users need to obtain a copyright disclaimer from any superseding entity like an employer or school. Once the disclaimer is in place, each file should receive the proper copyright notices while clearly defining what versions users can use.

Finally, add a COPYING file containing the complete text of the GNU GPL terms and conditions, while adding license notices and a statement of permission in each file. Adding the copyright notice display at startup is optional.

Can GPLv3 be used in commercial software ?

Developers should keep in mind that GPL intends to prevent any additional restrictions on the software. When using any portion of GPLed software, the modified version retains the same rights. As such, the user should release the updated source to subsequent users (only if the user releases the modified software to the public).

Although it’s possible to sell GPLed software to another user, it’s not permissible to limit that user’s rights to modify and distribute it.

License URLs :

When linking to our licenses, it's usually best to link to the latest version; hence the standard URLs such as http://www.gnu.org/licenses/gpl.html have no version number.

If you may want to link to a specific version of a given license. The following are the links to the specific versions.