This is a draft, not a final version of the article.

Magic mirror on the net, what's the fairest license yet?
A GPLv3 fairness tale

Alexandre Oliva

Introduction

GPLv3 [Gv3] improves in a number of aspects on GPLv2, the queen among Free Software licenses and, erhm, stepmother of so many of them. The most important aspects of improvement have to do with fairness, i.e., the respect for the 4 freedoms [FSD] for all users of the software: the freedom to run the software for any purpose, the freedom to study and modify the software to suit one's needs, the freedom to distribute the software the way it was received, and the freedom to improve the software and distribute the improvements.

GPLv3 reduces the danger of software patents and other legal and technical measures that have been used to deny the four freedoms, rules out certain discriminatory agreements, it permits peer-to-peer distribution of binaries (the ultimate, almost-magic form of mirroring on the net), it clears up some doubts and concerns about web downloads, it establishes time-frames for regenerate accidental infringers to rectify their infringement without penalty, and it is international, rather than centered on US copyright law.

In this article, I'll discuss how GPL has had, since version 1, a spirit of fairness that goes far beyond the simpler, more limited notion of quid pro quo, and how version 3 will improve fairness, in response to new threats and vulnerabilities discovered in earlier versions.

Quid pro quo and fairness

Quid pro quo, from Latin origin, translates to "one thing in return for another" and thus brings favors to mind. Tit-for-tat, an expression often used as its English translation, suggests a more adversarial relationship, more "an eye for an eye", or "equivalent retaliation" [TTW].

Although both are fair, the cooperative stance is probably to be preferred in the context of Free Software licenses. Even when someone fails to comply with the license, we often fight for compliance, not compensation for damages.

Anyhow, let me show how GPL's approach to fairness is not quite based on the notion of quid pro quo.

I show you mine, you show me yours

This is probably the first notion that comes to mind in the context of quid pro quo and Free Software licenses. However, when applied to a piece of software, the GPL does not affect any other piece of software that is not derived from it. Based on the GPL, I can't expect you to show me some of your code just because I showed you some unrelated piece of code. There goes the obvious quid pro quo.

I publish my code, you publish your changes to it

Better, but still wrong. Per the GPL, you're not forced to publish anything, even if I chose to publish the code you based your changes on. The license permits you not to distribute your changes at all, effectively refusing to share your changes with anyone else, even myself. Only if you choose to distribute the code must you ensure the recipients are entitled to get the corresponding source code.

I grant you some permissions, you grant them to me

Close, but no cigar. When I license something under the GPL, I'm not demanding anything back to me. I'm demanding you to respect the 4 Free Software freedoms when (if) you modify the work or distribute it to third parties, modified or not.

I respect your freedoms, you respect others'

That's it, with regard to one particular piece of code. That does sound fair indeed, but does it qualify as quid pro quo? There's no payback, only payforward, unless you use a twisted notion of payback that considers the respect for others' freedoms as a payback.

But even this twisted notion doesn't make much sense. The GPL grants permissions without any reciprocation. The constraints it imposes on the exercise of the permissions it grants do not create new obligations, they only delimit the permissions. Copyleft, for example, establishes that the permission to distribute the program and modified versions thereof is limited to the case in which the same license is used, it does not force anyone to distribute the program. Because the GPL does not create obligations, it is not a contract. Its benefits flow in a one-way street.

So the license is fair in that everyone that gets the program has the same freedoms respected. The exception is the copyright holder, that, per copyright law, gets to choose the license. When the chosen license is the GPL, others' freedoms are respected without any payback, reverting at least part of the unfairness imposed by copyright law.

The spirit of the GPL

In order to ensure fairness, there are certain responsibilities that come along with the respect for the freedoms. Although the letter of such responsibilities varies from version to version of the GPL, the spirit, described in the preamble, has remained the same, except for trivial rewording, all the way from version 1:

[...] GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. [...]

[...] designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

Now, what if someone could get the program along with freedoms to study, modify, distribute and run it, with or without modifications, but could also stop others from exercising the same freedoms on the same program? Would the license still be fair? Would this situation be in accordance with the spirit of the license? I don't think so, and I hope you will agree.

How GPLv3 improves on GPLv2

So let's now look into how version 3 of the GPL will improve fairness where version 2 fails, shall we?

Patent licenses

Consider that the prince wrote a program and distributed it under the GPLv2. The witch, a patent holder, takes the program, adds a feature and then passes on a program that implements one of her patents, along with the same freedoms. Snow White comes up with a great idea and improves on that feature. The witch changes her mind and decides Snow White needs to be stopped, and files suit for patent infringement. The witch is failing the payforward.

Per GPLv2, under some legal systems (not the US, I'm told), the witch is indeed entitled to do just that. Is it fair to permit the witch to stop others from exercising the freedoms she received from the prince under the condition that she would respect them, even after she took advantage of them? Should the fact that such attempt to deny freedoms uses a patent lawsuit matter at all?

This is one of the loopholes in GPLv2 that GPLv3 attempts to fix. It doesn't necessarily affect the US, but it affects other legal systems. Programs distributed under the GPLv3 will carry explicit patent licenses from all contributors on any patents implemented by the program that each contributor distributed, and the licenses can only be terminated along with the copyright license, in case of copyright infringement.

Patents and paysideways

Consider that Sneezy wrote a program and distributed it under the GPLv2. The witch takes the program, adds a feature to it and starts using and modifying this program that implements another of her patents. Grumpy takes the same program written by Sneezy, without any help from the witch (this is the difference from the case above), and adds the same feature. The witch decides Grumpy needs to be stopped, and files suit for patent infringement.

The witch doesn't owe Grumpy anything, but she is required by Sneezy to respect others' freedoms, because the witch did modify the program, and this "translates to certain responsibilities." Enabling her to stop others from exercising the same freedoms she got is unfair, and provisions to avoid this are lacking in GPLv2. In GPLv3, if the witch fails her responsibilities, Sneezy will be able to counteract the failure and stop her from enjoying the freedoms granted by the license, through license termination.

Regenerate infringers

The huntsman almost killed Snow White, but ended up disobeying an order from the queen and lying to her to cover it up. Most people would agree that he did the right thing, but the evil queen might differ and punish him for the deception, even years after not having deceived her again.

As harmful as releasing GPLed software without respecting others' freedoms is, compliance is in general the best remedy a copyright holder can aim for. Although offering the source code and the freedoms to past recipients is the best possible outcome, it isn't always legally possible.

Stopping the unauthorized distribution is the second-best possible outcome. It does nothing to restore the freedoms of those who have already received the program. However, if they felt they needed the program so badly as to accept it under conditions that didn't respect their freedoms, seeking to reverse the effects of past distributions would be a worse remedy than the illness: prohibiting past recipients from even running the software they received would take away the few freedoms they got.

GPLv3 will help past infringers leave their mistakes behind. If sixty days elapsed without any further infringement, and copyright holders didn't put the infringer on notice, the infringer is forgiven for the past infringements.

Furthermore, infringers are forgiven if they rectify the infringement within thirty days after being put on notice for the first time by a copyright holder.

This is fair because it prevents abusive charges for damages, leaving the path clear to compliance, which is what really matters.

Compatibility

Consider that Happy wrote a program and distributed it under the GPLv2. Sleepy wrote another program and distributed it under a license that is incompatible with GPLv2. Happy won't let Sleepy reuse and distribute Happy's code, and Sleepy won't let Happy reuse and distribute Sleepy's code. That's fair, but it's not useful because they can't cooperate.

If Happy licensed the program under GPLv2+ (version 2 or any newer version published by the FSF), and Sleepy's program's license happened to be incompatible with GPLv2, but compatible with GPLv3 (because GPLv3 was designed to be compatible with more Free Software licenses than GPLv2), then Happy can combine and distribute his code with Sleepy's, and Sleepy can combine and distribute his code with Happy's. That's fair and useful.

Sure enough, steps could be taken so as to make GPLv3 compatible with any license whatsoever, and if that's useful as per the argument above, why won't GPLv3 aim at compatibility with all existing licenses?

First, because there are Free Software licenses that are specifically designed to be incompatible with every other licenses: copyleft licenses. It's impossible to achieve mutual compatibility with such licenses while retaining the copyleft requirement. By definition, such licenses require derived works to use the same license, except for explicit relicensing provisions, such as LGPL to GPL, or GPLv3 to Affero GPL version 2. This is why the recommended use of the GPL has been to permit relicensing under newer versions of the license, which enables fairness bugs to be fixed without much of a hassle for anyone involved, except for those who exploit the bug. Retaining the unfairness or forcing people to go through a difficult approval-or-rewriting process for relicensing, so as to fix such bugs, would be unfortunate, if not outright unfair.

Second, because some licenses are designed to impose unfairness, so the GPL can't possibly be faithful to its spirit and be compatible with them. Compatibility with non-Free Software licenses, for example, is ruled out. Only a few additional restrictions, which don't reduce or that increase fairness, are permitted under the GPLv3. Additional restrictions that are not permitted can be taken out, in an attempt to rule out the use of the GPL in non-Free licensing practices. Permitting such practices to be associated with the GPL wouldn't do justice to the GPL.

The few additional restrictions that are permitted are either fairness-preserving or fairness-increasing.

GPLv3 will explicitly permit combination and distribution of works licensed under GPLv3 and an upcoming version of the Affero GPL, that will itself be compatible with the GPLv3. The Affero GPL is a license that enables access to the corresponding source code to be granted to users of the program, even when they use it without receiving it, for example, through web services.

Compatibility with the Apache License version 2.0, one of the original goals of GPLv3, proved to be a difficult target. Although the patent retaliation provisions were brought into the GPL, the idemnification clause in version 2.0 of the Apache License may still be a source of incompatibility with the GPLv3. Hopefully, the FSF and the Apache Foundation may be able to address this issue, by adjusting the GPLv3 and/or the Apache License so as to make them compatible.

The GPLv3 will have provisions that permit the combination with licenses that are compatible except for warranty disclaimers, requirements as to the preservation of legal notices, author attribution and marking of modifications to avoid misrepresentation, or limits of use for publicity of marks or names of licensors or authors. Most of these are aimed at internationalization (see the section below).

Internationalization

In addition to making room for additional no-warranty clauses and credit- and reputation-preserving requirements, GPLv3 is making significant efforts to avoid using terms with established juridic meanings that vary across jurisdictions.

To this end, it defines terms such as propagation, encompassing any activity that requires permission from the copyright holders of a program, except for running, or making private modifications to it, and conveying, a subset of propagation that enables others to make or receive copies, except for sublicensing.

Significant effort went into avoiding explicit references to legislation specific to any country, and to use legal principles from international copyright treaties.

An international license is more likely to be equally applicable all over the world, without favoring any single country, which makes it a much fairer license.

Distribution modes

A number of networked distribution modes have been added to the license, since wide availability of fast networks made it a fair method to satisfy the obligation to offer source code.

In GPLv2, whoever conveyed binaries without sources had to accompany the binaries with a written offer that enabled anyone whatsoever to obtain a copy of the sources on a medium customarily used for software interchange.

GPLv3 will narrow down the offer so as to cover only those who actually obtain the binaries, even if indirectly, but it will permit the requirement to offer source code to be satisfied by means of network access. So, Snow White wouldn't have to write down the recipe of the delicious soup she made to all the seven dwarfs: she could publish it on the Royal Recipe Repository, where it would remain available publicly everafter, or write it down only to the dwarfs who had some of the soup.

GPLv3 will also permit mirrors and peer-to-peer networks to carry binaries without sources, as long as they point at corresponding sources available at no charge elsewhere. No wonder the magic mirror likes GPLv3 better.

Corresponding Sources

In order to create an apple capable of turning Snow White into, erhm, Sleeping Beauty, the witch had to take a regular apple, prepare just the right kind of poison for Snow White, and combine them both into a poisoned apple, according to a scripted procedure. By the way, it's a little-known nearly-irrelevant made-up-as-we-go fictional fact that the poison is only present in the skin of a poisoned apple; the pulp and the core are unaffected.

If Dopey were to take the seeds out of the core and plant them, the produce wouldn't be poisoned apples. The genetic code in the apple seeds is like source code for apples (*). But it's for regular apples, not poisoned ones. It's not the complete corresponding sources for poisoned apples. The poison has its own source code: its recipe. The procedure to combine the poison with a regular apple, so as to form a poisoned apple, is akin to a build script. The apple genetic code, the poison recipe and the procedure to combine them are the corresponding sources of a poisoned apple.

When the witch gave the poisoned apple to Snow White, she couldn't help including the apple's genetic code, but the poison recipe and the procedure to poison an apple were easy to leave out. The witch reasoned that including them could harm her plan, so she withheld these bits of information, even though it would be fairer to enable others to build upon her work, just like she built upon nature's work, the apple. She didn't care for fairness, though. She only wanted her evil plan to work, so the corresponding sources she distributed were incomplete.

(*) Never mind that the seeds don't carry the genetic code for the apple that contains them, but rather for its direct descendants. In the usual case, the difference is not significant, and neither genetic code would produce poisoned apples anyway.


As it turns out, there are companies that sell products including binaries with signatures (poisoned apples) and digital devices that will only run such poisoned binaries. Such products often include corresponding source code for the Free Software programs, but some [signing-]key elements are missing.

Consider a fictitious company Antique Voices, more widely known as AntiVo, and its (in)famous Digital Voice Replayer. The AntiVo DVR runs a small GNU/Linux operating system, but it will only run software that is poisoned with a digital signature that only AntiVo can generate. Like the witch, AntiVo withholds the signing keys (poison recipe) and scripts (poisoning procedure) necessary to generate such signatures and combine them with the binaries.

With the incomplete sources you get from AntiVo (apple genetic code), the binaries you create are like Dopey's apples: they're missing the poison, so they won't do their magic on your DVR (Snow White). They may run just fine on other computers, just like anyone may feed on Dopey's apples, but they won't run on your DVR, because it will only run poisoned software.

It's funny that 'looking dead' is present in both sides of the analogy, but while the witch's poison makes Snow White look dead, AntiVo's poison keeps the DVR from looking dead. This is an irrelevant point for this analogy. The important point is to illustrate the absence of information as to how duplicate an essential element of the distributed object or software.

Hardware Locks

Doc would have a hard time should he set out to become a sorcerer's (or sourcerer's?) apprentice to try and break the spell on Snow White, because of the information withheld by the witch. Even if he succeeds in developing a working antidote and combining it with a regular apple (say, one of Dopey's), there's no way he can feed it to Snow White: the witch blocked her throat, and, according to the poison recipe, only a love kiss will break the spell, as Snow White coughs out the piece of poisoned apple.

If Doc had gained access to the poison recipe, he'd know right away how to break the spell. Even if developing an antidote might not have become any easier (or even necessary, since it's right there in the recipe), he could use the knowledge in developing other magic potions to make Snow White smarter, lovelier, or even fairer. No wonder the witch didn't want to share those sources.

Similarly, if you find a bug in the software on your AntiVo DVR, even if you develop a fix (Doc's antidote), you can't feed a fixed binary to your DVR, because its throat is blocked by the signature checking machinery that AntiVo put in there. If you want to make improvements (Doc's potions) to the software on your DVR, you can't, because only AntiVo has the keys to authorize the execution of modified versions of the Free Software on it. In AntiVo's case, the poison recipe itself is, in a sense, what it takes to unblock the DVR's throat, since the poison is required for the software to run. No amount of kissing will fix that, even if the prince came to love AntiVo DVRs.

This second analogy shows why this blocking is so harmful to people next to the bewitched target, and so advantageous to the perpetrator. While blocking is in effect and information is withheld as to how to overcome it, the perpetrator can exert control over the victim, and those who actually enjoy the target and might be willing to improve the situation are powerless.

Tivoization

AntiVo, like the witch, chose to keep to itself the secret that would enable anyone else to enjoy the freedoms it had pertaining to the software, against the spirit of the GPL. We call Tivoization one such kind of abuse, that consists of blocking, through technical measures, the installation or use, by third parties, of modified versions of the software on computers subject to such measures, while keeping to oneself information on how to overcome this blocking. Tivoization is the combination of hardware locks with withholding of key portions of the sources.

The term Tivoization is after TiVo, the most widely known company that does something very similar to what AntiVo does. The Linux binary distributed along with TiVo's Digital Video Recorder does not have an embedded signature, though. The signature is separate from the kernel binary, in what appears to be an attempt to circumvent the terms of the GPLv2, that is analogous to giving out a peeled unpoisoned apple along with its poisoned skin, so as to not distribute poisoned apples, but still do the magic on the targets, who won't eat an apple without its skin.

Most people don't think of the skin as a useful part of the apple, just like most people wouldn't think of a signature as a functional element of a piece of software. But if the software won't do its magic without the signature, just like the apple won't do its magic without the poisoned skin, it seems just fair to say that both the signature and the poisoned skin are essential for the software and the poisoned apple, respectively, to fulfill their purposes. It doesn't matter how easy it is to peel the apple, or how separate the signature is from the executable: Snow White won't eat a peeled apple or the skin alone, just like the DVR won't run a binary without a signature, or the signature alone.

Just like the poisoned skin is derived out of both the apple and the poison, the signature is derived out of the kernel binary and the signing key, and the aggregation of both in the same image is not mere aggregation (the kernel won't run on the machine without the signature, and the signature is otherwise useless), therefore the aggregate ought to be released under the GPL, with complete corresponding sources, including the signing keys and the procedure to generate the signature. TiVo chose to take its chances and withhold the keys, but so far Linux copyright holder have not taken legal action.

The facts that the TiVo DVR is blocked from running binaries that aren't signed with the withheld key, and that TiVo knows that (it actually created this restriction) are essential to characterize Tivoization. It is like the witch/stepmother treacherously teaching younger Snow White to love apples but never eat them peeled, because they might have been tampered with and get her ill. But the effects are like those of the magic that blocks Snow White's throat.


Enabling someone to distribute binary works, along with corresponding sources, but without such key functional portions, is unfair, so it shouldn't be permitted. Even more so if the omission is for Tivoization purposes, to keep the vendor capable of modifying the software on clients' machines while denying them this same freedom.

There is some controversy on whether the definition of corresponding sources in GPLv2 implies the keys needed to authorize the installation or execution of the software are to be understood as part of the corresponding sources. GPLv3 will clarify that, when you distribute a binary as part of a "User product", even if you do not regard the keys as part of the corresponding sources, you still have to distribute them as part of the Installation Instructions that the GPLv3 demands for such distribution. This is necessary to ensure that you pass on the freedom to authorize installation and execution of modified versions of the software on the hardware, if you have such ability yourself. This preserves the fairness established by the spirit of the GPL. If nobody can modify the software because it's on ROM, everyone is on the same grounds, so that's fair as well.

The Installation Instructions do not require you to distribute signing keys that are used for other purposes. For example, when you sign a binary distribution such that users can verify it comes from you and it hasn't been modified on the way, you're arguably creating a derived work, and so a more general demand for keys would end up requiring you to distribute the signing keys for this use case. The key distinction from this case to Tivoization lies in the answer to the question on whether the signature is a functional part of the program.

In the Tivoization case, without the signature, the program just won't run on the principal context of use. In the authentication of origin case, if you take the signature out, users will still be able to install the program and run it just the same. GPLv3 is not about unfairly demanding people to share keys or sources, it's about fairly enabling people to enjoy the freedoms it's meant to protect.

Technical measures and pro-DRM laws

A bug in the license is exposed whenever someone can successfully explain and justify denying the responsibility that comes with modifying or distributing a program per the spirit of the license. No matter how clever or elaborate the explanation is, denial of freedom is still denial of freedom. It's still a failure to comply with the spirit of the license. GPLv3 attempts to fix several such holes.

The first draft attacked specifically the threat of using DRM to deny the exercise of the freedoms. It didn't prohibit implementing DRM with Free Software, as some have claimed, but rather disrespecting the freedoms using DRM techniques.

The second draft attempts to generalize that, extending the scope to any technical measures whatsoever that one might come up with, and use to stop someone who can run the original program from exercising the freedoms to study it, adapt it or distribute it, modified or not, or run the modified program.

Also, the draft includes an explicit promise by the copyright holders not to use pro-DRM laws to stop the exercise of these same freedoms, somewhat like the patent license case above. Such copyright holders will be a bit like the huntsman told to kill Snow White: he could in theory exercise his power and kill her, but he instead chooses to let her go in freedom.

As a result, if others modified a GPLed program so as to add a feature (or a misfeature such as DRM), and you get that modified program, you can further modify it so as to disable or remove the (mis)feature, and then run your own modified version.

Discriminatory agreements

GPLv2 has wording that prevents you from distributing a program if you have obtained a patent license needed to distribute the program, and you can't pass the patent license on to all downstream users. It would be unfair for the distributor to keep to itself, and possibly also to a subset of downstream users, privileges in the exercise of the freedoms granted by the license.

GPLv3 offers other possibilities to ensure distributor and recipient fairly stand on the same ground: disclaiming the patent license, or having the corresponding sources available somewhere for anyone to copy at no charge.

Now, what if the distributor arranges patent privileges not to itself, but only to some of the recipients of the software? Say, paying customers implicitly get a patent license from a third party, that non-paying downloaders don't. This is discriminatory. If you negotiate a third-party patent license to accompany the software you distribute, but you won't offer this license to everyone who gets software from you, some will get more freedoms over the software than others, and this is unfair.

But it gets worse if the paying customers are not allowed to pass on the patent licenses they've received. If they can't pass them on, then distributing the software would amount not only to patent violation, but also to copyright infringement.

GPLv3 will address this possibility of discrimination by determining that, if you've arranged any sort of patent licensing with a third party in the software distribution business, such that recipients of the program from you would get a license from this third party, but the patent license imposed further restrictions on the exercise of the freedoms the GPLv3 grants, then distribution would be forbidden. I.e., if you won't distribute it fairly, don't distribute it at all.

Furthermore, if you are part of an agreement in which one party distributes the software and another grants a patent license that does respect the freedoms granted by the GPLv3, then the patent license is automatically extended to all recipients of the program, modified or not. This rules out unfair patent-based discrimination.

Conclusion

Perhaps the generalizations to cover technical measures, pro-DRM law and discriminatory agreements are still not enough. Perhaps someone will think of yet another loophole to prevent others from enjoying the freedoms they ought to be entitled to, per the payforward spirit and intent of the license.

It would be nice if we could further generalize it so as to proactively cover any unforeseen loopholes, but lawyers say this is unachievable. So, there is a real risk that GPLv3's letter will be an imperfect implementation of the GPL spirit, just like GPLv2's letter.

Sure enough, GPLv2 is a good license, and it was better than GPLv1. But is GPLv2 the fairest license yet, or even fair enough? Shouldn't fairness improvements and bug fixes always be welcome, except perhaps by those who are exploiting bugs in it?

Both magic and regular mirrors all over the net shall rejoice the day GPLv3 is published, not only because of the newly-added permission to distribute binaries over peer-to-peer networks, but also because, when GPLv2 summons them to answer "What's the fairest license yet?", they will be able to reply "Famed is thy beauty, Majesty, but GPLv3 is more fair than thee!"

Acknowledgments

I thank Richard Stallman, Georg Greve and Ciaran O'Riordan. The use of the term 'payforward' was suggested by Richard Stallman. Some of the inspiration came from Linus Torvalds [LTE].

Bashful was too shy to show up in the article.

References

[Gv3] http://gplv3.fsf.org/

[FSD] http://www.gnu.org/philosophy/free-sw.html

[TTW] http://en.wikipedia.org/wiki/Tit_for_tat

[LTE] http://lkml.org/lkml/2006/9/24/246

Copyright 2007 Alexandre Oliva

Permission is granted to make and distribute verbatim copies of this entire document without royalty provided the copyright notice, this permission notice and the URL below are preserved.

http://www.fsfla.org/svnwiki/blogs/lxo/draft/gplv3-snowwhite