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.
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 imposes no conditions on the internal use of the 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
We’ve gone through a few of the minor differences between GPL v2 and GPL v3. Now, let’s discuss the more significant ones: the grant of patent rights and compatibility with the Apache License 2.0.
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.
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 GPLv3.
RELATED: The Developer's Guide to Open Source Software Licenses
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. Other well-known examples include image editor GIMP and Unix shell Bash, both of which were built as part of the GNU Project.
The Future of GPL v3
Recent research shows that, while not as popular as their permissive counterparts, copyleft licenses are still used by a significant percentage of OSS projects. And of the GPL family of licenses, GPL v3 is the most popular.
If you still have questions about the GNU Project and/or the various GPL licenses, visit their comprehensive FAQs page.