The Crushing Complexity of the GPL3
I recently released my first open source project and had to choose a license. Being an advocate of free software principles, my first choice was the GPL3. However, I decided out of curiosity to read the license first—I think it’s reasonable that if I’m going to use a license I should understand what it requires. A good forty-five minutes later, I had a single conclusion: the GPL3 is complicated—horribly, mind-numbingly complicated. I think a simple picture will illustrate:
Hmmm. One of these things is not like the others. But never fear! If the length of the GPL3 is intimidating, here is a 13,000 word explanation of the differences of the GPL3 from the GPL2!
To give just a small example, consider the following requirement for distribution Conveyance from section 5:
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
The definition of “Appropriate Legal Notices” is helpfully provided in section 0:
An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
So … if the work has interactive user interfaces, then it must display Appropriate Legal Notices, but if it doesn’t display Appropriate Legal Notices, apparently that’s fine? So do I need legal notices or not? And even if I do, why on earth would the license try to dictate such a nitpicky thing??
Here is another section that defines what code you are obligated to release under the license:
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.
As a baseline, the Corresponding Source not only includes the work itself, but all code needed to generate, install, run, and modify the work! That’s like, everything on your computer from the ground up! Exceptions are carved out for general-purpose tools or System Libraries, which are defined in the previous paragraph as:
The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form.
Major Component and Standard Interface are then defined as …. It just goes on and on. (Also, I love the phrase “intimate data communication.” Try defining that in court!)
This is merely the tip of the iceberg. The GPL3 also includes:
- provisions for contracting GPL3 software from third-parties
- anti-DMCA clauses to nullify article 11 of the 1996 WIPO copyright treaty
- anti-DRM clauses, which attempt to define what a “User Product” is
- explicit permission to distribute the software through peer-to-peer networks (since apparently the GPL2 has problems with that?!?)
- a weird exception for patent agreements done before 28 March 2007 due to a lawsuit settlement between Novell and Microsoft.
And there is so much more. To appreciate the labyrinthine complexity of the GPL3 you must read the license yourself. For a taste of the legal intricacies that a lawyer would subject this to, here is Ken Mitchell’s analysis of one paragraph in the AGPL3 that is different from the GPL3.
It was not always this way. In 2005, Lawrence Rosen updated his own Open Software License to version 3 with the explicit goal to “express clearly the licensing objectives of software copyright and patent owners.” However, this goal of simplicity was not shared by the authors of the GPL3. Allison Randal lamented:
I don’t know that clarity and simplicity was ever a goal that Richard Stallman, Eben Moglen, or any of the GPLv3 team desired to achieve. Looking at the near-finished draft, I have to say it’s unlikely that they ever considered simplicity a priority, if they considered it at all.
In hindsight, ensuring the GPL3 covered every last corner-case of software licensing ended up missing the forest for the trees:
Largely because of its complexity and baroqueness, GPLv3 was a lost opportunity to create a strong copyleft license that would appeal very broadly to modern individual software authors and corporate licensors. I believe individual developers today tend to prefer short, simple, easy to understand, minimalist licenses, the most obvious example of which is the MIT License.
A shame, but so it is.
What, then, is a good copyleft license for modern usage? The EUPL is a noble effort: it’s simple, written with an explicit attention to legal detail, and even includes compatibility with other copyleft licenses! However, there is one major flaw: the definition of “Derivative Works” defers to the copyright law of whichever EU state you’re in (or Belgium, if you’re not ¯\_(ツ)_/¯
), which leaves it caught in a quagmire of whether linking creates a derivative work. (They don’t think so, but it’s never been tested in court, so who knows!)
The only copyleft license I’m aware of that is easy to understand, legally unambiguous, and well-established is the MPL2. It has a weaker form of copyleft than the GPL that is based purely on source code files, but it is supremely simple, and also interoperates well with the rest of the permissively-licensed open source world. Ultimately, it’s the pragmatic choice, and the license I chose.