by rerdavies | 2025-07-12 09:42:55+00:00
> The end user is allowed...

As a developer, my primary concern is what the GPL says about what I as a developer must do. What it requires users to do is an entirely secondary question.

The Free Software Foundation is typically who sues you (or provides legal assistance to 1st parties who wish to enforce their GPL license). They can, and do sue people. And have sued people. And seem to make a fairly reasonable income from suing people.

As in all matters relating to intellectual property, things only become interesting once you have earned enough money to pay. So weekend warriors aren't going to get sued. But anyone who runs a commercially successful company (or plans to) becomes a target. And given that the Free Software Foundation is notoriously litigious, and notoriously unwilling to settle for anything less than complete submission, and a substantial cash payment, this is not a theoretical issue. And as with all matters relating to Intellectual Property, the cost of litigating even the most basic of questions is enormously expensive (some significant fraction of $1m for each party, not including costs for appeals). So it probably doesn't even matter what the GPL actually says.

One of the most significant problems with the GPL licenses is that they are extremely difficult to interpret. A corporate lawyer who reviewed a GPL license for me said: the first mistake in the GPL is on the first line. (Legal contracts cannot be copyrighted). And things rapidly go downhill from there.

Consider my application, in the context of GPL 3. It loads lv2 plugins, using a permissively licensed library. The majority of lv2 plugins are GPL-3 licensed.

According to GPL-3, you incur GPL-3 obligations when you link to GPL-3 code. The GPL-3 license goes to great lengths to explain what "link" means, and defines "linking" in very broad terms. It does grant exceptions for plugins that are loaded through "system apis" (but fails to define what a system api is). And in practice, Linux system APIs are covered by an exception in the Linux GPL license. So in actual practice, there is no exception for plugins. Is the LV2 plugin api a system api? It is not. It does not come pre-installed as part of most distros, and it is not part of the Linux kernel APIs. So the "plugin" exception is purely fantastical. It does not exist.

The GPL-3 also fails to define WHEN linking must occur in order to incur GPL-3 obligations. So. I as a developer, download and install an LV2 plugin. I use my program to load the plugin, while doing testing. Have I "linked", thereby infecting my entire codebase with GPL once I publish it (the 2nd condition required to incur GPL obligations)? I would fantastically hope not, but there is a very plausible interpretation of the GPL-3 text that says I have. It's easy for you as user to say that I have not. But the actual text of the GPL is unclear. And as a developer who writes code for a living, I have a professional responsibility to consider such questions.

You have to make a careful distinction between what one would like a reasonable license to do, and what the GPL actually does. And given that the GPL is extraordinarily poorly written, exceedingly difficult to interpret(according corporate lawyers I have asked to review it), largely untested in American courts (which are no longer entirely dependable these days, anyway), and increasingly aggressive about what "linking" means, this is a problem. Is the GPL a "reasonable" license that places only sensible restrictions on developers? Not at all clear. There's a long list of fantasy clauses one might imagine the GPL should have -- most of which it does not.

And it's also a big problem that the intent of the GPL is clearly stated: to infect as much software as possible with GPL obligations.