The GNU General Public License (GPL) is one of the most widely used free software licenses, ensuring that software remains free for all users to use, modify, and distribute. Over time, changes in technology and legal challenges led to the evolution of the GPL, resulting in GPLv2 (released in 1991) and GPLv3 (released in 2007). Therefore, this article provides an in-depth comparison of these two versions, highlighting their differences, strengths, and implications for developers and users.
Historical Background
GPLv2: The Foundation of Free Software
When Richard Stallman and the Free Software Foundation (FSF) introduced GPLv2 in 1991, it was a revolutionary step toward software freedom. It provided legal mechanisms to ensure that software remained open-source and prevented proprietary modifications. However, as technology advanced, GPLv2 began to show limitations, particularly in areas like digital rights management (DRM), hardware restrictions, and patent litigation.
GPLv3: Addressing Modern Challenges
By 2007, the GPLv3 was introduced to address shortcomings in GPLv2. As a result, it strengthened user freedoms, tackled issues related to hardware restrictions (Tivoization), improved international legal clarity, and introduced better protection against patent threats.
Detailed Comparison of GPLv2 and GPLv3
In order to fully understand the differences between these two versions, the table below outlines their key features side by side.
| Feature | GPLv2 | GPLv3 |
|---|---|---|
| Release Year | 1991 | 2007 |
| Philosophy | Ensures free software but lacks strong enforcement against proprietary restrictions | Strengthens software freedom, explicitly forbidding proprietary locks and restrictions |
| Patent Protection | No explicit patent protection | Includes strong patent protection, preventing exclusive deals |
| Compatibility with Other Licenses | Limited compatibility with free software licenses | Improved compatibility, including Apache License 2.0 |
| Tivoization (Hardware Restrictions) | Allows hardware manufacturers to lock down software | Prohibits hardware restrictions that prevent users from modifying GPL software |
| Digital Rights Management (DRM) | No specific provisions | Explicitly prohibits using GPL-covered software for enforcing DRM |
| Installation Information Requirement | No requirement | If software is in a device, users must receive necessary installation information |
| Termination Clause | Permanent termination of rights if violated | Introduces a « cure » period for rectifying license violations |
| Internationalization & Legal Clarity | Written mainly with US law in mind | More internationally applicable, considering global legal variations |
| Additional Permissions | Does not allow additional permissions | Allows additional permissions to be included for flexibility |
| License Compatibility | Incompatible with GPLv3 | GPLv3 can be used with GPLv2-only software but not vice versa |
Key Differences Explained
1. Tivoization: Protecting the Right to Modify Software
One of the most significant differences between GPLv2 and GPLv3 is how they handle hardware restrictions. Some companies used GPLv2 software in their hardware but implemented digital locks that prevented users from modifying the software (a practice called Tivoization, named after TiVo devices).
- GPLv2 allowed this practice, meaning that users could receive GPL-licensed code but were unable to modify and run it on their devices.
- GPLv3, on the other hand, explicitly forbids such restrictions, ensuring that users have the right to modify and execute their software.
2. Protection Against Patent Litigation
- GPLv2 lacked specific provisions addressing patent claims. Consequently, companies could enter into private patent deals that restricted some users’ rights to use GPL software.
- GPLv3 introduced strong protections, preventing software distributors from making exclusive patent agreements that limit the freedoms of other users.
3. DRM (Digital Rights Management) Restrictions
- GPLv2 did not include any explicit rules against DRM.
- GPLv3, however, actively prevents developers from using GPL-covered software to implement DRM mechanisms that restrict user freedoms.
4. Compatibility with Other Licenses
- GPLv2 had rigid rules that made it difficult to combine with other free software licenses.
- GPLv3 improved compatibility with other free licenses, including the Apache License 2.0, making it easier to use in broader projects.
5. License Violation and Termination Clauses
- GPLv2 had strict termination rules: if a developer violated the license, their rights were permanently revoked.
- GPLv3, in contrast, introduced a more forgiving « cure » period, allowing violators to fix their mistakes and regain rights under the license.
Choosing Between GPLv2 and GPLv3
When to Use GPLv2
- If your project depends on existing GPLv2-only software.
- If you prefer a simpler license without additional restrictions.
- If you are comfortable with the risks related to patents and hardware restrictions.
When to Use GPLv3
- If you want stronger protections against DRM and hardware lock-ins.
- If you seek better compatibility with modern free software licenses.
- If you want added legal clarity and international applicability.
- If you need protection against patent lawsuits.
Conclusion
Both GPLv2 and GPLv3 serve the core mission of keeping software free. However, GPLv3 offers stronger protections and modernized legal provisions. Developers and organizations should carefully consider the differences when choosing a license for their software. If maximum freedom and protection against modern proprietary threats are priorities, GPLv3 is the better choice. On the other hand, if maintaining compatibility with legacy GPLv2 projects is essential, sticking with GPLv2 may be necessary.
Understanding these licenses is crucial for open-source developers, as they dictate how software can be used, modified, and shared. By choosing the right license, developers can ensure their software remains open and accessible for future generations.
Do you need help choosing the best license for your project? Feel free to ask!