kids encyclopedia robot

GNU General Public License facts for kids

Kids Encyclopedia Facts
Quick facts for kids
GNU General Public License
GPLv3 Logo.svg
Author Richard Stallman
Version 3
Copyright Free Software Foundation
Published 25 February 1989; 36 years ago (1989-02-25)
DFSG compatible Yes
OSI approved Yes
Copyleft Yes
Linking from code with a different license Software licensed under GPL compatible licenses only, depending on the version used.

The GNU General Public License (often called GNU GPL or just GPL) is a very common set of rules for computer programs. It makes sure that people who use software have four important freedoms. These are the freedom to run the program, study how it works, share it with others, and change it.

This license was the first "copyleft" license made for general use. It was first written by Richard Stallman, who started the Free Software Foundation (FSF). He created it for the GNU Project. The GPL gives users the rights described in the the Free Software Definition.

All licenses in the GPL family are "copyleft" licenses. This means that if someone creates a new program based on a GPL-licensed one, they must share their new program under the same rules. The GPL is stricter than some other licenses, like the Lesser General Public License or more open ones like BSD and MIT.

The GPL has been one of the most popular software licenses for free and open-source software. Big programs like the Linux kernel (the core of many operating systems) and the GNU Compiler Collection use the GPL. Experts like David A. Wheeler believe that the GPL's copyleft rule was key to Linux's success. It gave programmers confidence that their work would stay free and benefit everyone.

In 2007, the third version of the license (GPLv3) came out. It was made to fix some issues found in the second version (GPLv2) after many years of use.

To keep the license up-to-date, the GPL often includes an "any later version" option. This lets users choose between the original rules or newer ones from the FSF. The GNU Project uses this "or later" clause. However, the Linux kernel, for example, is licensed only under GPLv2. This "or any later version" rule helps different GPL-licensed software versions work together.

How the GPL Started

The first GPL was written by Richard Stallman in 1989. He made it for programs in the GNU project. It was based on similar rules used for early versions of GNU Emacs (from 1985), the GNU Debugger, and the GNU C Compiler. These early rules were similar to the modern GPL but were only for specific programs. This made them hard to use together. Stallman wanted one license that could be used for any project. This would make it easier for many projects to share their code.

The second version, GPLv2, was released in 1991. Over the next 15 years, people in the free software community worried about problems in GPLv2. These problems could allow people to use GPL software in ways that went against its main idea. For example, "tivoization" meant putting GPL software into devices that stopped users from changing the software. There were also issues with patents, like deals between Microsoft and free software distributors. Some saw these deals as a way to use patents against free software.

GPLv3 was created to solve these worries. It was officially released on June 29, 2007.

GPL Version 1

GNU General Public License, version 1
Published 25 February 1989

Version 1 of the GNU GPL came out on February 25, 1989. It was made to stop two main ways that software sellers limited user freedoms.

The first problem was that sellers might only give out "binary files." These are programs that computers can run but humans can't easily read or change. To stop this, GPLv1 said that if you copy and share a program, you must also make its human-readable "source code" available. And it had to be under the same license rules.

The second problem was that sellers might add new rules to the license. Or they might combine the software with other software that had different rules. This could add unwanted limits. To prevent this, GPLv1 said that any changed versions of the software had to be shared under GPLv1 rules. This meant GPLv1 software could be mixed with more open software. But it could not be mixed with software that had stricter rules, as that would conflict with GPLv1's requirements.

GPL Version 2

GNU General Public License, version 2
Published June 1991

Richard Stallman said the biggest change in GPLv2 was Section 7, which he called the "Liberty or Death" clause. This part says that you can only share a GPL-covered program if you follow all the license's rules. This is true even if you have other legal duties that might conflict. This rule was meant to stop anyone from using patent claims or lawsuits to limit users' freedom under the license.

By 1990, it became clear that a less strict license would be useful for certain software parts, like the C library. So, when GPLv2 came out in June 1991, another license was also introduced. This was the GNU Library General Public License. It was also version 2, showing they worked together. Later, in 1999, this second license became the GNU Lesser General Public License (LGPL). This new name showed its place in the free software idea.

The GPLv2 license often includes instructions to say "version 2 of the License, or (at your option) any later version." This lets users choose between version 2 or 3. But some developers choose to use "version 2" only.

GPL Version 3

GNU General Public License, version 3
Published 29 June 2007

In late 2005, the Free Software Foundation (FSF) announced they were working on GPLv3. The first draft was shared on January 16, 2006, and people could give their ideas. This public discussion lasted 18 months, and four drafts were published. The official GPLv3 was released by the FSF on June 29, 2007. Richard Stallman wrote GPLv3, with legal help from Eben Moglen and Richard Fontana.

Stallman said the most important changes were about software patents, how well licenses work together, what "source code" means, and rules against hardware stopping software changes (like "tivoization"). Other changes dealt with international rules, how license violations are handled, and how copyright holders could give extra permissions. The idea of "software propagation" (copying and sharing software) was clearly defined.

The FSF led the public discussion, with help from other free software groups. People sent their comments through a special website.

The third draft, released on March 28, 2007, included language to stop patent deals like the Microsoft-Novell patent agreement. It also limited the anti-tivoization rules to apply to "users" and "consumer products." It removed the section about "Geographical Limitations."

Stallman GPLv3 launch MIT 060116
Richard Stallman at the launch of the first draft of the GNU GPLv3 at MIT, Cambridge, Massachusetts, United States. To his right is Columbia Law Professor Eben Moglen, chairman of the Software Freedom Law Center.

The fourth and final draft came out on May 31, 2007. It made the GPL compatible with the Apache License version 2.0. It also clarified the role of outside helpers. It added a rule in Section 11 to avoid problems like the Microsoft–Novell deal. This rule said you cannot share a GPL-covered work if you pay a third party based on how much you share it, and that third party gives special patent licenses to those who receive the work.

This rule aimed to make such future deals useless. It also meant Microsoft would have to give its patent licenses for GPLv3 software to all users, not just Novell customers.

Early drafts of GPLv3 also let creators add a rule like the AGPL. This would have closed a "loophole" for web services. But because people worried about checking code for this extra rule, it was decided to keep the GPL and AGPL separate.

Some important Linux kernel developers, like Linus Torvalds, did not like parts of the early GPLv3 drafts. They worried about rules on DRM (digital locks), patents, and "extra restrictions." They warned this could split the "Open Source Universe." Linus Torvalds decided not to use GPLv3 for the Linux kernel.

GPLv3 made it easier to combine with other free software licenses, like Apache License 2.0 and the GNU Affero General Public License. GPLv2 could not be combined with these. However, GPLv3 software could only share code with GPLv2 software if the GPLv2 license had the "or later" clause and was updated to GPLv3. The FSF sees "GPLv2 or any later version" as the most common way to license GPLv2 software. But some, like Toybox developer Rob Landley, call it a lifeboat clause. The GNU Project uses the "or later" clause, while the Linux kernel does not.

The final version of the license was published on June 29, 2007.

Rules and Conditions

The rules of the GPL must be given to anyone who gets a copy of a program that uses the GPL. Anyone who follows these rules is allowed to change the program. They can also copy and share the program or any changed version. Users can charge money for this service or give it away for free. This is different from licenses that stop people from selling free software. The FSF believes free software should not limit commercial use. The GPL clearly states that GPL works can be sold at any price.

The GPL also says that a distributor cannot add "further restrictions" to the rights the GPL gives. This stops things like sharing the software under a secret agreement.

For programs shared as ready-to-use "binaries," GPLv2 (Section 4) and GPLv3 (Section 7) say you must also provide the "source code." You can do this by giving a copy of the source code, offering to send it, or telling people where to get it. GPLv2 (Section 2) and GPLv3 (Section 5) also say you must give "all recipients a copy of this License along with the Program." GPLv3 allows more ways to share the source code, like downloading it from a website or using peer-to-peer sharing.

The FSF does not own the copyright for a work released under the GPL unless the author specifically gives it to the FSF. This usually only happens for programs that are part of the GNU project. Only the original copyright holders can sue if they think someone has broken the license rules.

GPLstatements consumerentertainmentdevices
Printed GPL statements for consumer entertainment devices which incorporate GPL components

Using GPL Software

You can use software under the GPL for any purpose. This includes using it for business or even to create "proprietary software" (software you can't freely share or change). For example, you can use GPL-licensed tools like compilers. People or companies who share GPL-licensed programs can charge money for copies or give them away for free. This is different from "shareware" licenses, which allow copying for personal use but not for selling. The FSF believes that free software should not limit commercial use or sharing.

If you use the software only for yourself or inside your company, and you don't sell or share it, you can change the code without having to release your changes. But if you sell or share the software, you must make the entire source code available to users. This includes any changes you made. This is how "copyleft" works, making sure users keep their freedoms.

However, if a program runs on a GPL-licensed operating system like Linux, it doesn't mean the program itself has to be GPL. The program's license only depends on the libraries and parts it uses, not the operating system it runs on. For example, if a program is made only of new code, it doesn't need to be GPL. But if it uses parts of a GPL program and is shared, then all its source code must be made available under the same GPL rules. The GNU Lesser General Public License (LGPL) was made to have a weaker copyleft. It doesn't require new code (that's separate from the LGPL parts) to be shared under the same license.

GPLv3 (Section 5) says that GPL-licensed code cannot be seen as a "technical protection measure" (like digital locks). It also says that those who share the work give up any legal power to stop people from getting around these locks. This means users cannot be sued for breaking digital locks if they do so by using their rights under the GPLv3. This helps protect users under laws like the U.S. Digital Millennium Copyright Act (DMCA).

Copyleft Explained

The GPL gives you rights to share changed versions of a program, but there's a condition. If you share a GPL program with your own changes, the rules for sharing the whole program cannot be stricter than what the GPL allows.

This rule is called "copyleft." It gets its power from copyright law. Because a GPL program is copyrighted, you don't have the right to share it (unless it's for fair use) except under the GPL's rules. You only need to follow the GPL if you want to do things that copyright law normally limits, like sharing the program. If you share copies without following the GPL (for example, by keeping the source code secret), the original author can sue you under copyright law.

Copyright law has usually been used to stop people from sharing work without the creator's permission. Copyleft uses the same copyright laws to do something very different. It gives everyone the right to share, as long as they give the same rights to others, and so on. This way, the GPL and other copyleft licenses try to make sure everyone has free access to the work and any changes made to it.

Many people who share GPL programs include the source code with the ready-to-use programs. Another way to follow copyleft is to offer to provide the source code on a physical disc if someone asks. Many GPL programs are shared online, and the source code is available for download. This also follows the license rules.

Copyleft only applies when you share the program with someone else. Developers can make private changes without having to share them, as long as they don't give the changed software to anyone else. Copyleft applies only to the software itself, not to what the software creates (unless that output is also a changed version of the program). For example, a website running a changed version of a GPL content management system doesn't have to share its changes. This is because the website is being hosted, not shared, and the website's output is not a changed version of the GPL software.

There was a discussion about whether it was against GPLv1 to release source code that was hard to read. Most people agreed that while it wasn't good, it wasn't a violation. This was made clearer in GPLv2, which said that the "preferred" version of the source code must be made available.

License vs. Contract

The GPL was designed as a license, not a contract. In some legal systems, there's a difference: contracts are enforced by contract law, while licenses are enforced by copyright law. However, in many countries, there isn't much difference between contracts and licenses.

If you don't agree to the GPL's rules, you don't have permission under copyright law to copy or share GPL-licensed software or changed versions. But if you don't share the GPL program, you can still use the software inside your own organization however you like. And anything you create using the program doesn't have to be covered by the GPL.

Some people, like software developer Allison Randal, have said that GPLv3 is too confusing for regular people to read. They believe it could be simpler while keeping the same rules.

In 2017, a US court ruled that an open-source license is a contract that can be enforced. In 2021, a federal judge ruled that the GPL is an enforceable contract by end users, not just copyright holders.

Other Licenses from GPL

The text of the GPL itself is copyrighted, and the Free Software Foundation owns the copyright.

The FSF allows people to create new licenses based on the GPL. But these new licenses should not use the GPL's introduction without permission. The FSF doesn't encourage this, because such new licenses might not work well with the GPL.

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 GPL's text is not under the GPL itself. The license's copyright does not allow changes to the license text. But copying and sharing the license is allowed, because the GPL requires people to get "a copy of this License along with the Program." According to the GPL FAQ, anyone can make a new license using a changed version of the GPL. They just need to use a different name, not mention "GNU," and remove the introduction. However, the introduction can be used if permission is given by the Free Software Foundation (FSF).

Compatibility with Other Licenses

Quick-guide-gplv3-compatibility
Quick guide of license compatibility with GPLv3 according to the FSF. Dashed line indicates that the GPLv2 is only compatible with the GPLv3 with the clause "or any later version".

Code under some other licenses can be combined with a GPL program without problems. This works as long as the combined rules don't add any extra limits beyond what the GPL allows. Besides the regular GPL rules, there are extra permissions and restrictions:

  • If you want to combine code licensed under different GPL versions, it's only allowed if the older GPL version includes an "or any later version" statement. For example, the GPLv3-licensed GNU LibreDWG library cannot be used by LibreCAD and FreeCAD because they have GPLv2-only parts.
  • Code under the LGPL can be linked with any other code, no matter its license. But the LGPL adds extra rules for the combined work. LGPLv3 and GPLv2-only usually can't be linked, as the combined work would add LGPLv3 rules on top of the GPLv2-only software. Code under LGPLv2.x without the "any later version" statement can be re-licensed if the whole combined work is licensed to GPLv2 or GPLv3.

The FSF keeps a list of GPL-compatible free software licenses. This list includes many common free software licenses, like the original MIT/X license, the BSD license, and the Artistic License 2.0.

Since GPLv3, it's possible for materials (like text) under the Creative Commons Attribution-ShareAlike 4.0 International License to be mixed into GPL-licensed materials (like software). But it doesn't work the other way around. This is useful for things like game engines (GPL) with game scripts (CC BY-SA).

David A. Wheeler suggests that free/open source software developers should only use GPL-compatible licenses. If they don't, it makes it hard for others to help and add code. For example, Sun Microsystems' ZFS cannot be included in the GPL-licensed Linux kernel. This is because it uses the Common Development and Distribution License, which is not compatible with the GPL. Also, ZFS is protected by patents, so even a new GPL version would need Oracle's permission.

Many businesses use "multi-licensing." They offer a GPL version and also sell a "proprietary software" license to companies. This is for companies that want to combine the software with their own private code. Examples include MySQL AB, Digia PLC (Qt framework), Red Hat (Cygwin), and Riverbank Computing (PyQt). Other companies, like the Mozilla Foundation, use multi-licensing to offer versions under the GPL and other open-source licenses.

GPL for Other Media

It's possible to use the GPL for text documents instead of just computer programs. Or, more generally, for all kinds of media. But it must be clear what counts as the "source code" (meaning the best form of the work for making changes). For manuals and textbooks, though, the FSF suggests the GNU Free Documentation License (GFDL) instead.

However, Debian developers recommended in 2006 that documentation for their project should use the GPL. This is because the GFDL and GPL don't work well together. Text under GFDL cannot be put into GPL software. Also, the FLOSS Manuals foundation, which makes manuals for free software, decided in 2007 to use the GPL for its texts instead of the GFDL.

If the GPL is used for computer fonts, any documents or images made with those fonts might also have to be shared under the GPL. This is not the case in countries that see typefaces (the look of fonts) as useful items that cannot be copyrighted. But font files themselves are copyrighted computer software. This can make "font embedding" tricky. Embedding a font in a document could force the document to be GPL. But a simple image of the font would not be under the GPL. The FSF provides an exception for cases where this is not wanted.

How Popular is the GPL?

Historically, the GPL license has been one of the most popular software licenses for free and open-source software.

A 1997 study of MetaLab, a large free software archive, showed that about half of the software there used the GPL. In 2000, a study of Red Hat Linux 7.1 found that 53% of its source code was GPL. As of 2003, about 68% of all projects on SourceForge.net used the GPL. By August 2008, the GPL family accounted for 70.9% of the projects on Freecode.

After GPLv3 came out in June 2007, many projects discussed whether to switch to it. Some decided not to, like the Linux kernel, MySQL, BusyBox, Blender, VLC media player, and MediaWiki.

However, in 2009, two years after GPLv3 was released, Google reported that 50% of open-source projects on Google Code had moved from GPLv2 to GPLv3.

In 2011, four years after GPLv3, 6.5% of all open-source projects used GPLv3, while 42.5% used GPLv2, according to Black Duck Software. In 2015, Black Duck reported that GPLv2 lost its top spot to the MIT license. GPLv3 dropped to fourth place, and the Apache license stayed in third.

Usage of GPL family licenses in the FOSS domain in % according to Black Duck Software
License 2008-05-08 2009-03-11 2011-11-22 2013-08-12 2015-11-19 2016-06-06 2017-01-02 2018-06-04
GPLv2 58.69% 52.2% 42.5% 33% 23% 21% 19% 14%
GPLv3 1.64% 4.15% 6.5% 12% 9% 9% 8% 6%
LGPLv2.1 11.39% 9.84%  ? 6% 5% 4% 4% 3%
LGPLv3  ? (<0.64%) 0.37%  ? 3% 2% 2% 2% 1%
GPL family together 71.72% (+ <0.64%) 66.56%  ? 54% 39% 36% 33% 24%

In March 2015, a study of GitHub projects showed that the GPL license family was used by about 25% of licensed projects. In June 2016, a study of Fedora Project's packages found that GNU GPLv2 or later was the most popular license. The GNU GPL family was the most popular license family overall.

An analysis in April 2018 by whitesourcesoftware.com showed GPLv3 in third place (18%) and GPLv2 in fourth place (11%). The MIT license was first (26%) and Apache 2.0 was second (21%).

|

See also

Kids robot.svg In Spanish: GNU General Public License para niños

  • Criticism of copyright
  • Multi-licensing
  • European Union Public Licence (EUPL)
  • GPL font exception
  • GPL linking exception
  • Comparison of free and open-source software licenses
  • Free-software license
  • Category:Software using the GPL license
  • Public information licence
kids search engine
GNU General Public License Facts for Kids. Kiddle Encyclopedia.