January 17, 2006

GPLv3 draft analysis

Author: NewsForge Staff

Our staff has been busy reviewing the draft of version 3 of the GNU General Public License (GPLv3). The license contains a number of changes from the second version of the GPL (GPLv2), though many of the changes are minor and seem to be intended to clarify terms or conditions in the GPLv2 rather than being drastic changes in the spirit of the license. The biggest and most important changes come in the areas of digital rights management, distribution, and patents. Let's take a look at the differences and see what the GPLv3 means to free software developers and users.

Clearing things up

A large part of the GPLv3 is aimed at clarifying parts of the GPLv2 that have caused confusion over the past 15 years. Like many of us, the GPL has put on weight with age -- the new license is more than 4,500 words, whereas the GPLv2 is a less than 3,000. Much of the heft comes not from additional provisions to the license, but from additional text meant to define terms used in the license. For example, the GPLv3 defines source code, object code, and even "complete corresponding source code" in relation to a licensed work.

The idea behind the definition for complete corresponding source code is, according to the FSF's rationale document, to be "as broad as necessary to protect users' exercise of their rights under the GPL."

We follow the definition with particular examples to remove any doubt that they are to be considered Complete Corresponding Source Code. We wish to make completely clear that a licensee cannot avoid complying with the requirements of the GPL by dynamically linking an add-on component to the original version of a program.

This has been a source of confusion, or obfuscation, in the past, and ties up a loophole that some have sought to use in order to utilize a GPLed program as part of a proprietary solution. It should be interesting to see who objects to this provision of the license.

The license has also been updated to reflect the FSF's renaming of the Lesser General Public License (LGPL), which was known as the Lesser General Public License when the GPLv2 was written.

The GPLv3 also clarifies how the GPL interacts in compilations. The GPLv3 draft explicitly notes that the "mere inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate." With any luck, this should dispel some of the confusion and fear of including or using GPLed software in conjunction with other works that do not derive from GPLed code.


Digital rights management (or digital restrictions management) (DRM) is not mentioned at all in the GPLv2. That's not surprising -- in 1991, when the GPLv2 was released, DRM was not a factor. The GPLv3, however, addresses DRM early on and adds this paragraph to the preamble:

Some countries have adopted laws prohibiting software that enables users to escape from Digital Restrictions Management. DRM is fundamentally incompatible with the purpose of the GPL, which is to protect users' freedom; therefore, the GPL ensures that the software it covers will neither be subject to, nor subject other works to, digital restrictions from which escape is forbidden.

Though it does not specifically mention the Digital Millennium Copyright Act (DMCA) by name, it's fairly clear that this clause is largely in response to the DMCA.

The license also addresses DRM in section 1, paragraph three:

Complete Corresponding Source Code also includes any encryption or authorization codes necessary to install and/or execute the source code of the work, perhaps modified by you, in the recommended or principal context of use, such that its functioning in all circumstances is identical to that of the work, except as altered by your modifications. It also includes any decryption codes necessary to access or unseal the work's output.

This means that any program that would need to be signed with a key or authorized in some way to run on a specific machine (think "Trusted Computing" here, or embedded devices), would need to include the additional bits to run the program in addition to the source code.

From distribution to propagation

One interesting change in the GPLv3 is that the license is now triggered by "propagation" rather than "distribution" of GPLed software. According to the rationale document, the FSF is trying to get away from the meaning of "distribution" that exists in copyright law in many countries, including the US.

Instead, propagation includes "doing anything with it that requires permission under applicable copyright law, other than executing it on a computer or making private modifications. This includes copying, distribution (with or without modification), sublicensing, and in some countries other activities as well." It appears that the FSF is subtly expanding the scope of the license and trying to cover some areas that were not explicitly covered by the GPLv2, and abused by some parties.

Patent retaliation

The FSF was aware of the potential for software patent problems as early as 1991, but the problem has snowballed in the intervening 15 years. The preamble in the GPLv2 states:

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

To that end, Section 7 of version 2 stipulates:

7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

And Section 8 continues the theme, saying:

8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

In summary, version 2 of the GPL was written to prevent patents from from reducing the freedoms guaranteed by the GPL, and where the law is such that it and the GPL are incompatible, the software in question cannot be licensed at all.

Now let's see how version 3 deals with the patent problem. First of all, the term patent appears in GPLv3 19 times, whereas it is only mentioned eight times in GPLv2. In fact, an entire new section of the GPLv3 deals exclusively with patents.

The new license repeats the same intent to ensure that patents obtained for GPLed software are free for everyone's use or the software is not licensed at all.

In Section 2 (Basic Permissions) of the GPLv3, the second paragraph reads:

This License gives unlimited permission to privately modify and run the Program, provided you do not bring suit for patent infringement against anyone for making, using or distributing their own works based on the Program.

In Section 6 (Non-Source Distribution), a paragraph in subsection D states:

Distribution of the Corresponding Source in accord with this section must be in a format that is publicly documented, unencumbered by patents, and must require no special password or key for unpacking, reading or copying.

Section 7 (License Compatibility) states that people who add new parts to a program covered by the GPL may add their own licensing terms to the new parts, "as long as those terms clearly permit all the activities that this License permits, or permit usage or relicensing under this License." Subsection E states those new terms:

e) They may impose software patent retaliation, which means permission for use of your added parts terminates or may be terminated, wholly or partially, under stated conditions, for users closely related to any party that has filed a software patent lawsuit (i.e., a lawsuit alleging that some software infringes a patent). The conditions must limit retaliation to a subset of these two cases: 1. Lawsuits that lack the justification of retaliating against other software patent lawsuits that lack such justification. 2. Lawsuits that target part of this work, or other code that was elsewhere released together with the parts you added, the whole being under the terms used here for those parts.

One license that many users may be interested in combining with GPLed works is Sun's Common Development and Distribution License (CDDL), which has this patent retaliation clause:

6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as “Participant”) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.

Right now, the FSF notes that the CDDL is incompatible with the GPL because of its patent retaliation clause and its attribution requirement. The GPLv3 draft also allows for additional requirements with regards to attributions, which may fit with the CDDL's attribution requirements. It seems to us that the GPLv3's language does give leeway for using GPLv3 and CDDL software together.

The CDDL is not the only license considered free by the FSF, while still GPL-incompatible due to patent requirements. Look for more clarification in this section to come over the next year.

The GPLv3 also explicitly notes that distribution of a work under the GPL grants patent rights, whereas the GPLv2 depended on an implicit licensing: Section 11 (Licensing of Patents) reads:

11. Licensing of Patents.

When you distribute a covered work, you grant a patent license to the recipient, and to anyone that receives any version of the work, permitting, for any and all versions of the covered work, all activities allowed or contemplated by this License, such as installing, running and distributing versions of the work, and using their output. This patent license is nonexclusive, royalty-free and worldwide, and covers all patent claims you control or have the right to sublicense, at the time you distribute the covered work or in the future, that would be infringed or violated by the covered work or any reasonably contemplated use of the covered work.

If you distribute a covered work knowingly relying on a patent license, you must act to shield downstream users against the possible patent infringement claims from which your license protects you.

New provisions and license compatibility

In addition to patent retaliation, the new license explicitly addresses several additional requirements that may be used in compatible licenses. This is a pretty smart move on the FSF's part, and it will probably go a long way in smoothing adoption of the new draft. While it might be better if everyone could choose just one license, the FSF have learned over the years that it isn't likely -- thus, explicitly addressing the mixing of GPL'ed software with other software under free licenses is the sensible thing to do.

In one section, the GPLv3 takes a tip from the Affero General Public License (AGPL), in allowing that compatible licenses may include a requirement "that the work contain functioning facilities that allow users to immediately obtain copies of its Complete Corresponding Source Code." In other words, some programs that are run over a network may be modified and used widely but not distributed in the sense of actually allowing users to download source or object code.

The Affero project added a clause to the GPL, creating the AGPL, that required users of AGPLed software to give users the chance to download the program's source code -- including modifications.

Some users and developers had hoped to push this requirement into the GPL itself, but it appears the FSF has compromised and simply allowed for the use of compatible licenses with this provision.


The first draft of version 3 polishes and strengthens the GPL to make it more effective at warding off legal entrapment based on business-friendly IP legislation in the United States and elsewhere. The two most obvious threats to free software today come from patents and DRM, and version 3 meets both threats head-on and doesn't give an inch.

It is important to remember that this is merely a first draft of the GPLv3. The Free Software Foundation has committed to an extensive public discussion of the license, and a final release of the license is not expected until 2007. If sections of the GPLv3 appear unclear or somewhat scary, relax -- it is quite likely that the public comment period will bring these sections to light, and help produce a license that most of us can live with.

Click Here!