GPLv2 vs. GPLv3

A deep dive on the exact differences between the Free Software Foundation's two versions of the GPL license.

The information shared on this page does not constitute legal or financial advice.

This page provides an interpretation of the key differences between v2 and v3 of the GNU Public License, or G.P.L. The key differences are summarized in each section below.

1. Why update? Stallman’s objection to Tivoization 🔗

In the early 2000s, American corporation TiVo Inc. was criticized by the Free Software community for their popular digital video recorder (DVR) product. Free Software activist Richard M. Stallman criticized how TiVo violated the spirit of Free Software by placing software restrictions on their hardware products.

The TiVo projects relied on the popular Open Source Linux platform. Because Linux used the GNU General Public License version 2 (GPLv2), TiVo was required to distribute source code for anyone who receives the software. Stallman asserted TiVo circumventing this goal by blocking users from running modified software on its hardware by design. TiVo products would only run programs whose digital signature matched those authorized by TiVo.

This loophole was controversial. In 2006, the Free Software Foundation would respond with a new version of the GNU Public License, version 3. It included language to avoid this loophole, which commonly became known as Tivoization.

1.1. Other opinions 🔗

The GPLv3 was generally well-received. However, there are criticisms over the GPLv3 and its restrictions.

1.1.1. Linus Torvalds and Linux 🔗

Not everyone agreed to the added language to the GPLv3. One of the largest projects to adopt the GPLv2, Linux, chose not to upgrade the license. Linus Torvalds, the lead developer of Linux, asserts that the GPLv3 goes against what the GPLv2 means for him as a software developer:

1.1.2. Bradley Kuhn on implementation 🔗

Some Software Freedom activists believe the GPLv3 did not actually close the "Tivoization" loophole. Bradley M. Kuhn, Policy Fellow and Hacker-in-Residence of the Software Freedom Conservancy, notes challenges on this issue in spite of the GPLv3.

The narrative about addressing [Tivoization] in GPLv3 was centered around the first discussion draft, but no one ever made the case (rather they made the assumption) that "scripts used to install" wouldn’t include everything that GPLv3 Installation Information requires. If you look at Draft 1 of GPLv3, you see the Installation Information definition is substantially broader. So, a question to ask at the end of the GPLv3 process, when looking at the final draft, is "Is there anything in GPLv3’s definition of Installation Information that would not be required to produce as a 'script used to control installation'"? That’s an open question [and] people disagree.

Bradley Kuhn
— Bradley M. Kuhn

The rest of this document takes a focused look at precise differences between the two licenses. These came from a direct comparison between the two texts.

2.1. Anti-Circumvention Law 🔗

In section 3, the GPL offers protections for user rights from anti-circumvention law. This makes an interesting external reference to article 11 of the WIPO Copyright Treaty signed on 20 December 1996. It appears to make clear provisions that waive legal power to forbid circumvention of the GPLv3-covered work. It makes this requirement in the context of the WIPO Copyright Treaty to strengthen its appeal.

2.2. User Product rules 🔗

The GPL Frequently Asked Questions page explains this well:

Some devices utilize free software that can be upgraded, but are designed so that users are not allowed to modify that software. There are lots of different ways to do this; for example, sometimes the hardware checksums the software that is installed, and shuts down if it doesn’t match an expected signature. The manufacturers comply with GPLv2 by giving you the source code, but you still don’t have the freedom to modify the software you’re using. We call this practice tivoization.

When people distribute User Products that include software under GPLv3, section 6 requires that they provide you with information necessary to modify that software. User Products is a term specially defined in the license; examples of User Products include portable music players, digital video recorders, and home security systems.

— GPL Frequently Asked Questions

2.3. Cure period and the GPL Cooperation Commitment 🔗

The GPLv3 includes an explicit cure period. A cure period is like a grace period to fix a violation of the License. Violators have 30 days after notification of noncompliance to "reinstate" their License by fixing the violation. If the violation is cured in the cure period, there is no harm, no foul.

Technically, with the GPLv2, an actor may choose to immediately pursue legal action for noncompliance with the terms of the GPLv2. In September 2015, the Free Software Foundation and Software Freedom Conservancy jointly published the Principles of Community-Oriented Enforcement. This was the first call-to-action to propose the backport of the GPLv3 termination clause to GPLv2. These guidelines inspired the creation of the GPL Cooperation Commitment in 2017, driven by Red Hat. In order to address this imbalance in GPLv2 license enforcement, Red Hat, IBM, Google, and Facebook announced the GPL Cooperation Commitment in November 2017 to apply the GPLv3 cure provisions for their GPLv2 and LGPLv2.x licensed software.

2.4. "Legalese" 🔗

The GPLv3 is nearly double the length of the GPLv2 (5,644 words vs. 2,971 words). The GPLv3 reads more like a legal document than the GPLv2. That said, there is a lot more "legal speak" in version 3 than its predecessor. This works to the advantage of Software Freedom by using more concrete and defined language to spell out how the GPL was commonly applied and understood before 2007.

Most of these changes are minor or trivial, and so are not explained here. One example of this is in section 9, "Acceptance Not Required for Having Copies." Unlike the GPLv2, version 3 better defines that you indicate acceptance of the License by modifying or propagating a GPLv3-covered work.