Permissions, conditions and limitations at a glance
Conditions
- License and copyright noticeA copy of the license and the copyright notice must be included when distributing.
- State changesChanges made to the original must be indicated.
- Disclose sourceSource code must be made available when distributing.
- Same licenseModifications and derivatives must be distributed under the same (or a compatible) license.
Limitations
- LiabilityExpressly states that there is no liability for damages.
- WarrantyExpressly states that no warranty is provided.
Permissions, conditions and limitations are classified using data from choosealicense.com (GitHub, MIT License).
What kind of license is it?
The GPL (GNU General Public License) 3.0 was published by the Free Software Foundation (FSF) on June 29, 2007. Its core is the copyleft principle: anyone may freely use, study, modify and distribute the software, but when distributing, they must guarantee the same freedoms to recipients. If you distribute a program that includes or is combined with this code, you must provide the entire program under the GPL together with the corresponding source code. GNU Bash, GIMP and GNU Emacs, among others, use GPL-3.0-or-later.
Changes from GPL-2.0
- Express patent grant (Section 11): Contributors grant the patent rights needed for their contributions.
- Installation Information: If you distribute GPL-3.0 software in a "User Product" such as a household device, you must also provide the information (such as signing keys) needed to install modified software on that device (Section 6). This is commonly called "anti-tivoization".
- Cure period for violations (Section 8): For a first violation, your rights are reinstated if you cure it within 30 days of receiving notice from the copyright holder. Under GPL-2.0, rights terminated immediately upon violation.
- Broader compatibility: It can accept Apache-2.0 code and can be combined with AGPL-3.0 (Section 13).
What you must do when distributing
- Provide the entire corresponding source (including build scripts), or provide it by one of the methods in Section 6, such as a written offer.
- Retain copyright and license notices, and mark the fact and date of modifications (Section 5).
- You may not impose additional conditions that restrict the rights the GPL grants recipients (e.g. contracts prohibiting redistribution).
Common misconceptions
- "Using GPL code always means you must publish" — The disclosure obligation arises when you convey the program. If you only use it inside your company or only run it on a server, GPL-3.0's obligation to provide source does not arise. To cover network use as well, you need AGPL-3.0.
- "GPL software cannot be sold" — You may sell it. However, you cannot stop recipients from redistributing it.
- "My program running on top of a GPL program also becomes GPL" — Programs that run separately or communicate by standard means are usually treated as an "aggregate". Whether something counts as combined depends on how it links and exchanges data, and interpretations differ.
- "GPL-3.0 and GPL-2.0 are compatible" — Not if GPL-2.0 is "only" rather than "or later" (only vs or-later guide).
How to apply it
Put the text unchanged in LICENSE (or COPYING, following GNU convention) and attach the official GNU notice to the top of each source file. The notice determines whether "or later" applies. Use the SPDX identifier GPL-3.0-only or GPL-3.0-or-later (plain GPL-3.0 is a deprecated SPDX identifier).
When it fits
It suits applications, tools and community projects where you want improvements based on your code to come back to everyone rather than escape into closed products. For a library, also consider LGPL-3.0 so that closed-source apps can use it.
Can GPL-3.0 code go into another project?
General verdicts for taking code released under this license and distributing it combined into a project under each license below. See other combinations in the compatibility checker →
| Target project | Verdict | Notes |
|---|---|---|
| Proprietary (closed-source) software | Not allowed | The entire combined program would have to be released with source under the same GNU license, so it cannot be included while keeping the project's license. |
| MIT | Not allowed | The entire combined program would have to be released with source under the same GNU license, so it cannot be included while keeping the project's license. |
| Apache-2.0 | Not allowed | The entire combined program would have to be released with source under the same GNU license, so it cannot be included while keeping the project's license. |
| MPL-2.0 | Not allowed | The entire combined program would have to be released with source under the same GNU license, so it cannot be included while keeping the project's license. |
| LGPL-2.1 | Allowed with conditions | The combined work must be distributed under GPL-3.0 terms. |
| LGPL-3.0 | Allowed with conditions | The combined work must be distributed under GPL-3.0 terms. |
| GPL-2.0 | Not allowed | Version 3.0 code is incompatible with the terms of GPL-2.0 (only) and cannot be included. |
| AGPL-3.0 | Allowed | GPL-3.0 and AGPL-3.0 each permit combination in their Section 13. In the combined work, the AGPL part's obligation to provide source over a network remains. |
The content on this site is general information, not legal advice. For actual distribution, contracts or disputes, consult a lawyer or other qualified professional.