The previous post in our series on popular open source software (OSS) licenses went through the ins and outs of the GNU GPL v2 license, a copyleft license originally published by the GNU Project. However, version 2.0 is not the most recent — or necessarily the most popular — version of the GNU GPL (General Public License). That would be the GNU General Public License Version 3.0, or GPL v3 for short.
Despite being released in 2007, 16 years after GPL v2, GPL v3 has quite a bit in common with its predecessor. Both require users to include a copy of the full license text and make available original source code when you distribute any binaries based on the licensed work, among other similarities. The key differences are the result of attempts to address and/or remedy what some considered weaknesses or loopholes in version 2.0.
So, how do these two versions of the GNU GPL compare? And why might a developer or software company choose to work with code licensed under GPL v3? We’ll go through these questions and more in this guide.
GPL v3 License: The Basics
Like the GPL v2, GPL 3 is a strong copyleft license, meaning that any copy or modification of the original code must also be released under the GPL v3. In other words, you can take the GPL 3’d code, add to it or make major changes, then distribute your version. However, your version is subject to the same license requirements, meaning that it must be under GPL v3 as well — anyone can see your modified code and install it for their own purposes.
GPL v3 Requirements
The license terms of GPL v2 and GPL v3 are similar. They require users of the code to:
- Include a copy of the full license text
- State all significant changes made to the original software
- Make available the original source code when you distribute any binaries based on the licensed work
- Include a copy of the original copyright notice
In addition, GPL v3 states that anyone who includes the code as part of a consumer device has to include any installation information necessary to update and reinstall the software. (For a deeper dive on GPL v3's "User Products" clause, consider checking out our on-demand webinar on the subject.)
Using the Licensed Code
The GPL v3 license permits users of the code to:
- Use the code for commercial purposes: Like GPL v2, GPL v3 allows for use of the licensed code in commercial software.
- Change the code: Users can change or rework the code, but if they distribute these changes/modifications in binary form, they’re also required to release these updates in source code form under the GPL v3 license.
- Distribute copies or modifications of the code: As long as these modifications are also released under the GPL v3 license, they can be distributed to others.
- Place warranty: Distributors of the original code can offer their own warranty on the licensed software.
Like its predecessor, GPL v3 does not allow users to sublicense the code. In other words, you cannot rework, alter, or add to the code, then close those changes off to the public. The “open source-ness” of the original code follows any update or addition.
GPL v3 vs. GPL v2
GPL v3's addition of the "User Products" clause isn't the only difference between it and GPL v2. Here, we'll explore in detail the similarities and differences between the two licenses, including important provisions related to the grant of patent rights and compatibility with the Apache License 2.0.
| Feature | GPL v2 | GPL v3 |
|---|---|---|
| Release Date | 1991 | 2007 |
| License Text Required | Yes | Yes |
| Copyright Notice Required | Yes | Yes |
| Source Code Disclosure | Required when distributing binaries | Required when distributing binaries |
| Modification Disclosure | Required (significant changes) | Required (significant changes) |
| Patent Grant | General discussion, not explicit | Explicit grant from contributors |
| Apache 2.0 Compatibility | Not compatible | Compatible (one-way) |
| Installation Information | Not required | Required for consumer devices |
| Commercial Use | Allowed | Allowed |
| Modification | Allowed (must release under GPL v2) | Allowed (must release under GPL v3) |
| Distribution | Allowed (must include source) | Allowed (must include source) |
| Sublicensing | Not allowed | Not allowed |
Grant of Patent Rights
Like the popular permissive license Apache License 2.0, GPL v3 includes an explicit grant of patent rights. What does that mean, exactly? It means that the creator or contributor to the original licensed code essentially “gives away” their patent rights with regard to any subsequent reuse of the software. Normally, if you have a patent on something you created and someone manufactures, uses, sells, or imports it, you could challenge them in court. That’s not the case if you have explicitly granted patent rights to other users, as all contributors do when licensing their code under GPL v3.
While the GPL v2 license does discuss patent rights, it does so more generally and without an explicit grant by code contributors. GPL v3 addresses this by clearly stating the patent grant in the full text of the license.
Compatibility With Apache 2.0
Let’s say a developer uses components from two different OSS libraries under two different licenses to build a piece of software. If the licenses are compatible — in other words, software components with different licenses can legally be distributed together — all is well and good, and the developer can distribute the aggregate work under the conditions of the stronger license. If they’re not, that can pose problems.
Unlike GPL v2, GPL v3 is compatible with the frequently used Apache License 2.0. This compatibility only works one way, however. Code licensed under Apache 2.0 may be combined with GPL 3-licensed code with the resulting work being licensed under GPL 3. The opposite — incorporating GPL 3 code into a larger work that is then licensed under Apache 2.0 — is not permitted.
GPL v3 Use Cases
Both GPL v3 and GPL v2 are still in use today, with some OSS projects staying with the earlier version and others adopting the most recent one. Below, we’ll go through a few reasons why developers and software companies might select the GPL v3 license for their open source work.
For Developers
Research indicates that open source software contributors are motivated more by a desire to learn and be part of the OSS community than by financial rewards. And many OSS developers believe in the philosophy that software should be free and accessible to everyone, which makes copyleft licenses like GPL v2 and GPL v3 particularly attractive.
GPL v3 might be the better option for developers who are either based abroad or gearing their project for a global audience, as it includes improvements with regard to internationalization. And, if a developer is planning to incorporate Apache 2.0’d components into their work, they must select GPL v3 instead of GPL v2.
If you can’t decide which to choose, you can also use GPL v2 or any later version, which at this time includes GPL v2 or GPL v3.
For Companies
For software organizations, a major differentiator between the two GPLs is the express grant of patent rights. Lawsuits are something no company wants, and the explicit patent grant included in GPL v3 provides legal protection and a sense of security.
The compatibility aspect of GPL v3 is a sticking point for companies as well as developers. Since Apache 2.0 is such a commonly used license, a software organization might want to keep the option of using Apache-licensed code open.
However, many companies shy away from using GPL v3 code in IoT or embedded systems because of its “installation information” requirements.
Well-Known Uses of GPL v3
Ansible, the IT automation company acquired by enterprise OSS giant Red Hat in 2015, licensed its open source software under GPL v3 (or any later version of the GPL). Other well-known examples of projects under GPL v3 or later include image editor GIMP and Unix shell Bash, both of which were built as part of the GNU Project.
Frequently Asked Questions About the GPL v3 License
What is the GPL v3 License?
The GNU General Public License Version 3.0 (GPL v3) is a strong copyleft open source software license released in 2007 by the GNU Project. It requires that any modifications or derivatives of GPL v3-licensed code must also be released under the GPL v3 license, ensuring that the code remains open source.
What are the main requirements of the GPL v3 License?
The GPL v3 requires you to include the full text of the license and the original copyright notice when distributing the code. It also requires you to state any significant changes, release modifications under the same GPL v3 license, make the source code available when distributing binaries, and provide installation information for consumer devices.
What's the difference between GPL v3 and GPL v2?
Key differences include: GPL v3 has an explicit grant of patent rights from contributors, is compatible with Apache License 2.0, protects against tivoization (devices that prevent users from running modified software), requires installation information for consumer devices, and has improved internationalization. GPL v2 does not address these issues.
Can I use GPL v3-licensed code in commercial software?
Yes, you can use GPL v3-licensed code in commercial software and charge money for it. However, you must make the source code available to anyone who receives the software, and any modifications must be released under the GPL v3 license.
Do I need to share my modifications to GPL v3-licensed code?
Yes, if you distribute your modifications or software that includes GPL v3-licensed code, you must share your modifications under the GPL v3 license. However, if you only use the code internally and don't distribute it, you're not required to share your modifications.
Is the GPL v3 License compatible with Apache 2.0?
Yes, GPL v3 is compatible with Apache License 2.0, but only in one direction. You can combine Apache 2.0-licensed code with GPL v3-licensed code, and the resulting work must be licensed under GPL v3. However, you cannot combine GPL v3 code into a work licensed under Apache 2.0.
Does the GPL v3 License grant patent rights?
Yes, GPL v3 contains an explicit grant of patent rights from contributors to users. This means contributors grant patent rights to anyone who uses, modifies, or distributes the code, providing protection against patent lawsuits from contributors.
