The primary difference between GPLv2 (GNU General Public License version 2) and GPLv3 (version 3) lies in how they address issues related to software freedom, distribution, and compatibility with other licenses. GPLv2 emphasizes users’ rights to modify and distribute software, but it lacks explicit provisions for more modern concerns, such as software patents and the growing problem of “tivoization” (restricting how the software can be used on certain hardware). GPLv3 expands on these issues, incorporating clearer language around patents and ensuring that users can run modified versions of the software on devices.
One major change in GPLv3 is the inclusion of stronger protections against software patents. Under GPLv3, if a contributor provides code under this license, they automatically grant a license for any associated patent rights. This means that if a company wants to sue users for a patent claim related to the GPLv3 code, they lose the rights to use that code. This was added to encourage collaboration and reduce fears of patent litigation, which can stifle development. In contrast, GPLv2 does not have explicit language to address these patent concerns, which may leave developers and users vulnerable.
Another important aspect of GPLv3 is its anti-tivoization clause. This clause prevents companies from distributing software that restricts users' ability to modify it on certain hardware. For instance, if a company includes GPLv3 software on a device but locks down the hardware, they would be violating the license. This is a response to practice seen in devices like TiVo, where the software was open, but users couldn’t run modified versions due to hardware restrictions. GPLv2 lacks this provision, which means that while the software remains free, users may not have true freedom if their ability to control the software is limited by hardware locks. These differences ultimately reflect a response to evolving technological landscapes and the importance of user freedoms in software today.