The GNU General Public License (GPL) versions 2 and 3 are both open-source copyleft licenses, but they differ in how they handle patents, compatibility, and enforcement in modern software contexts. GPLv3, released in 2007, addresses gaps in GPLv2 (from 1991) related to newer technologies and legal challenges. The key differences revolve around patent clauses, anti-tivoization rules, and compatibility with other licenses. Understanding these distinctions helps developers choose the right license for their projects or comply with existing ones.
One major difference is how GPLv3 explicitly handles software patents. GPLv2 does not include explicit patent grants, which left room for contributors to potentially sue users for patent infringement. GPLv3 closes this loophole by requiring contributors to grant patent licenses for any patents embodied in their code. For example, if a company contributes code covered by a patent, they cannot later sue users of that code for patent violations. This protects downstream users and ensures the software remains freely usable. Additionally, GPLv3 includes provisions to retaliate against patent litigants by terminating their rights to use the software, creating a stronger deterrent against patent abuse.
Another critical update in GPLv3 is its response to “tivoization,” a practice where hardware restricts users from running modified versions of GPL-licensed software (named after TiVo devices). GPLv2 only required providing source code, but it didn’t ensure users could actually install modified versions on the hardware. GPLv3 mandates that if a device uses GPLv3-licensed software, the manufacturer must provide users with the necessary installation keys or instructions to replace the software. For example, a smart thermostat using GPLv3 code must let users install their own modified firmware. This ensures the “freedom to modify” isn’t just theoretical. GPLv3 also prohibits using the software in DRM (Digital Rights Management) systems that restrict user rights, reinforcing the license’s focus on user freedom over technical restrictions.
Finally, GPLv3 improves compatibility with other open-source licenses and modernizes terminology. GPLv2 had strict “copyleft” rules that made combining code with projects under certain licenses (like Apache 2.0) legally ambiguous. GPLv3 allows limited compatibility with some Apache License terms, reducing friction in mixed-license projects. It also clarifies internationalization, using terms aligned with global copyright treaties instead of U.S.-centric language. For developers, this means fewer legal hurdles when integrating code from diverse sources. However, GPLv3’s stricter anti-restriction clauses can conflict with proprietary ecosystems, making GPLv2 a more permissive choice for projects aiming to coexist with closed-source components. These updates reflect lessons learned from decades of open-source development and legal challenges.
Zilliz Cloud is a managed vector database built on Milvus perfect for building GenAI applications.
Try FreeLike the article? Spread the word