GPLv3 Discussion Draft FAQ — GPLv3 (original) (raw)

bybrett — last modified 2007-06-26 12:54

Answers to common questions about the latest GPLv3 draft

Throughout the drafting process for GPLv3, we've noticed that certain questions have been common in various different discussion forums. This page will provide more information to help clear up some of the common points of confusion. We'll keep adding questions to this list as they keep coming up. If you think we're missing something, please let us know.

General questions about the text

How is GPLv3 compatible with other GNU licenses?

The various GNU licenses enjoy broad compatibility between each other. The only time you may not be able to combine code under two of these licenses is when you want to use code that's only under an older version of a license with code that's under a newer version.

Below is a detailed compatibility matrix for various combinations of the GNU licenses, to provide an easy-to-use reference for specific cases. It assumes that someone else has written some software under one of these licenses, and you want to somehow incorporate code from that into a project that you're releasing (either your own original work, or a modified version of someone else's GPLed software). Find the license for your own work in a column at the top of the table, and the license for the other code in a row on the left. The cell where they meet will tell you whether or not this combination is permitted.

When we say "copy code," we mean just that: you're taking a section of code from one source, with or without modification, and inserting it into your own program, thus forming a work based on the first section of code. "Use a library" means that you're not copying any source directly, but instead interacting with it through linking, importing, or other typical mechanisms that bind the sources together when you compile or run the code.

Skip compatibility matrix

| | I want to release a project under: | | | | | | | | | ------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -- | | GPLv2 only | GPLv2 or later | GPLv3 or later | LGPLv2.1 only | LGPLv2.1 or later | LGPLv3 or later | | | | I want to copy code under: | GPLv2 only | OK | OK [2] | NO | OK if you convert to GPLv2 [7] | OK if you convert to GPLv2 [7][2] | NO | | GPLv2 or later | OK [1] | OK | OK | OK if you convert to GPL [7] | OK if you convert to GPL [7] | OK if you convert to GPLv3 [7] | | | GPLv3 | NO | OK if you upgrade to GPLv3 [3] | OK | OK if you convert to GPLv3 [8] | OK if you convert to GPLv3 [8][3] | OK if you convert to GPLv3 [7] | | | LGPLv2.1 only | OK if you convert to GPLv2 [7] | OK if you convert to GPL [7][2] | OK if you convert to GPLv3 [8] | OK | OK [6] | OK if you convert to GPLv3 [8] | | | LGPLv2.1 or later | OK if you convert to GPLv2 [7][1] | OK if you convert to GPL [7] | OK if you convert to GPLv3 [7] | OK [5] | OK | OK | | | LGPLv3 | NO | OK if you upgrade and convert to GPLv3 [7][3] | OK if you convert to GPLv3 [7] | OK if you convert to GPLv3 [8] | OK if you upgrade to LGPLv3 [4] | OK | | | I want to use a library under: | GPLv2 only | OK | OK [2] | NO | OK if you convert to GPLv2 [7] | OK if you convert to GPLv2 [7][2] | NO | | GPLv2 or later | OK [1] | OK | OK | OK if you convert to GPL [7][1] | OK if you convert to GPL [7] | OK if you convert to GPLv3 [7] | | | GPLv3 | NO | OK if you upgrade to GPLv3 [3] | OK | OK if you convert to GPLv3 [8] | OK if you convert to GPLv3 [7][3] | OK if you convert to GPLv3 [7] | | | LGPLv2.1 only | OK | OK | OK | OK | OK | OK | | | LGPLv2.1 or later | OK | OK | OK | OK | OK | OK | | | LGPLv3 | NO | OK | OK | OK | OK | OK | |

Skip footnotes

1: You must follow the terms of GPLv2 when incorporating the code in this case. You cannot take advantage of terms in later versions of the GPL.

2: If you do this, as long as the project contains the code released under GPLv2 only, you will not be able to upgrade the project's license to GPLv3 or later.

3: If you have the ability to release the project under GPLv2 or any later version, you can choose to release it under GPLv3 or any later version—and once you do that, you'll be able to incorporate the code released under GPLv3.

4: If you have the ability to release the project under LGPLv2.1 or any later version, you can choose to release it under LGPLv3 or any later version—and once you do that, you'll be able to incorporate the code released under LGPLv3.

5: You must follow the terms of LGPLv2.1 when incorporating the code in this case. You cannot take advantage of terms in later versions of the LGPL.

6: If you do this, as long as the project contains the code released under LGPLv2.1 only, you will not be able to upgrade the project's license to LGPLv3 or later.

7: Every version of the LGPL gives you permission to relicense the code under the corresponding version (or any later version) of the GPL. If you can switch the LGPLed code in this case to using the GPL instead, you can make this combination.

8: Every version of the LGPL gives you permission to relicense the code under the corresponding version, or any later version, of the GPL. In these cases, you can combine the code if you migrate its license to GPLv3, and use GPLv3 for your own work as well.

Section 6

Why do distributors only have to provide Installation Information for User Products?

Some companies effectively outsource their entire IT department to another company. Computers and applications are installed in the company's offices, but managed remotely by some service provider. In some of these situations, the hardware is locked down; only the service provider has the key, and the customers consider that to be a desirable security feature.

We think it's unfortunate that people would be willing to give up their freedom like this. But they should be able to fend for themselves, and the market provides plenty of alternatives to these services that would not lock them down. As a result, we have introduced this compromise to the draft: distributors are only required to provide Installation Information when they're distributing the software on a User Product, where the customers' buying power is likely to be less organized.

This is a compromise of strategy, and not our ideals. Given the environment we live in today—where Digital Restrictions Management is focused largely in consumer devices, and everyone, including large companies, is becoming increasingly worried about the effects of DRM thanks to recent developments like the release of Microsoft's Windows Vista—we think that the proposed language will still provide us with enough leverage to effectively thwart DRM. We still believe you have a fundamental right to modify the software on all the hardware you own; the preamble explains, "If such problems [as locked-down hardware] arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users."

Section 11

How do the new terms of section 11 affect the Microsoft-Novell deal?

We attack the Microsoft-Novell deal from two angles. First, in the sixth paragraph of section 11, the draft says that if you arrange to provide patent protection to some of the people who get the software from you, that protection is automatically extended to everyone who receives the software, no matter how they get it. This means that the patent protection Microsoft has extended to Novell's customers would be extended to everyone who uses any software Novell distributes under GPLv3.

Second, in the seventh paragraph, the draft says that you are prohibited from distributing software under GPLv3 if you make an agreement like the Microsoft-Novell deal in the future. This will prevent other distributors from trying to make other deals like it.