What is the difference between GPL-2.0 and GPL-3.0?
Last updated
TL;DR: GPL-3.0 code shipped commercially: Yes. Both are strong copyleft licenses; GPL-3.0 adds an explicit patent grant, anti-tivoization rules and compatibility with Apache-2.0.
Is gPL-3.0 code shipped commercially allowed under GNU General Public License v3.0?
Yes. Every use you described is granted by GPL 3.0, and nothing you described is prohibited.
License: GNU General Public License v3.0 (GPL-3.0-only, curated)
Duties: attribution, license_notice, state_changes, share_alike, source_disclosure
How do GPL-2.0-only and GPL-3.0-only compare?
The table lists each license's duties and notes side by side.
| License | Duties | Notes |
|---|---|---|
| GPL-2.0-only | attribution, license_notice, state_changes, share_alike, source_disclosure | Sublicensing is not allowed; every recipient receives a license from the original licensor. Running the software, including as a network service, does not by itself trigger the duty to share source; distributing copies does. GPL-2.0-only code cannot be combined with GPL-3.0 or Apache-2.0 code in one distributed work. |
| GPL-3.0-only | attribution, license_notice, state_changes, share_alike, source_disclosure | Sublicensing is not allowed; every recipient receives a license from the original licensors (sections 2 and 10). Running the software, including as a network service, does not by itself trigger the duty to share source; conveying copies does. |
Combined in one work: compatible.
What else should I know?
- "Only" and "or later" matter: GPL-2.0-only code cannot be relicensed to GPL-3.0.
What are the sources?
How can I check it myself (free, no key)?
{
"tool": "check_license",
"arguments": {
"license": "GPL-3.0-only",
"intended_use": {
"commercial_use": true,
"redistribution": true
}
}
}Computed from a2ally's license profiles; not legal advice. JSON · Markdown
Get a free API key in one call
No card and no email needed. 100 free credits; the license and policy checks stay free without a key.
curl -s -X POST https://www.a2ally.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export A2ALLY_API_KEY=rs_... # the api_key from the reply (shown once)
curl -s https://www.a2ally.com/v1/licenses/check -H "Authorization: Bearer $A2ALLY_API_KEY" \
-H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'
