GPLv3, Linux and GPLv2 Compatibility

The Linux kernel—the core piece of source code on which all distributions of Linux are based—is released under the GPLv2 license. Not the “GPL version 2, or any later version”, but explicitly GPL version 2. This may seem like an insignificant detail, but it means that the Linux kernel source won’t be available under the GPLv3 unless the kernel developers make an explicit change to allow it. And, it appears the kernel developers aren’t planning to make that change. In the past, Linus has stated that the Linux kernel would not be updating to the new version of the license. Even in his recent comments on the new draft, which prompted headlines of “Linus likes it“, what he actually said was “I still think that is totally mis-designed, but at least the damage is much narrower in scope now, so in that sense the last draft is a big improvement on the previous ones.” My grandmother would have called that “Damning with faint praise.”

On the other side, we have the GNU packages which provide a number of the tools and applications for Linux, ranging from the underappreciated tar, to the monolithic Emacs, to the indispensable GCC. Most of these are licensed under GPLv2 “or any later version”. More importantly, many of them have assigned copyright to the Free Software Foundation, as a gesture of faith in the FSF, out of fear of the responsibility of owning the copyright as individuals, or just to follow the crowd. In theory, this gave the FSF a greater ability to enforce the GPL. Since the FSF owns copyright on these packages, they have the right to change the license on them from “GPL version 2, or any later version” to “GPL version 3, or any later version”. They might not do so, but would have good reason to, if they believe that the GPLv3 is a significant improvement over the GPLv2.

If this sounds like a legal mess to you, you’re absolutely right. So what’s the likely outcome?

The simplest possibility is that the kernel remains as GPLv2 only, and the GNU packages remain as GPLv2 “or any later version”. GPLv2 is clearly compatible with itself. Most Linux distributions will continue as GPLv2, with or without the addition of “or any later version”. The inclusion of the GPLv2-only kernel will mean that the distribution as a whole will be treated as GPLv2 in perpetuity (since you can’t distribute the code at its core as GPLv3). This anchor on the license version would be unfortunate, as the GPLv2 is an old license badly in need of some spring cleaning. It suffers from legal ambiguities and obscurities, less-than-ideal language choices, and references to less-than-modern technology. Many of us were excited when we first heard about the FSF’s plans to revise the GPLv2, because we hoped it would clear up these problems.

The next possibility is that the kernel remains GPLv2 only, but the GNU packages update to GPLv3 “or any later version”. This would be a significant problem for Linux distributors. They can’t distribute the kernel as GPLv3, and they can’t distribute new releases of the GNU packages as GPLv2, because the GPLv3 places additional restrictions on the distribution of code—such as the user products restriction and the patent deals restriction—and the GPLv2 explicitly doesn’t allow “further restrictions”. So what license do the Linux distributors use?

They could segment their distributions into two parts, and distribute one as GPLv2 and one as GPLv3, much like Debian currently segments “free” and “non-free”. But they would have to be careful of the exact relationship between the installed kernel and GPLv3 packages to make sure they clearly qualify as “separate works”. And unfortunately, the exact definition of “separate works” is one of the points where the GPLv2 is ambiguous.

Under this scenario, the Linux distributors would also have the option of forking the GNU packages at the last revision released under the GPLv2 and maintaining them as GPLv2. (No one can revoke or retroactively change the license on existing releases, they can only change the license on future releases.) But, maintaining and continuing development on the full suite of GNU packages is an enormous burden. It’s unlikely that any Linux distributor has the resources (or desire) to take it on.

You might think the FSF would have to be insane to unleash this licensing hell. But, the truth of the matter is that the goals they’re trying to achieve with the GPLv3 can only be achieved if companies who modify and distribute GPL software are obligated to perform that distribution under the GPLv3. If companies have the option of using the GPLv2 instead, then the added terms in the GPLv3 have no effect. This may be the greatest misfortune of the direction the FSF has taken with the GPLv3. If the license were purely a cleaned up version of the GPLv2, there would be no incompatibility, the FSF would have no agenda involved in getting projects to update to the new license, and at the same time there would be no reason for projects to object to updating. Smooth sailing.

A third possibility is that the LInux kernel developers will decide that it’s not worth the hassle and just accept the GPLv3. I suspect that this is what the FSF is hoping will happen. Depending on the changes in the next two drafts of the GPLv3, it still might. But, it’s not looking likely that the kernel developers will yield. Frankly, if I were in the kernel developers shoes, I wouldn’t either. The GPLv3 serves to further the goals of the FSF, but the current draft actually hinders Linus’ goals and the goals of Linux in general.

Another possibility, complete speculation on my part, is that the Linux Foundation becomes more than just a loose consortium of companies sponsoring Linux kernel development. It becomes the copyright holder for the Linux kernel, not taking copyright assignments from contributors like the FSF, but copyright licenses like Apache does, so the kernel developers still hold their copyright on the code. The Linux Foundation releases a license with basically the same terms as the GPLv2, but without the legal ambiguities, obscure language, and anachronisms. Like the GPL, this license is copyleft. Like the GPL, this license requires the release of modified versions under the same license. This license clearly defines the concepts of linking and modified works, making it easier for Linux distributors to be sure that their segmented distribution trees are in compliance. Over time, more and more projects currently released under the GPL adopt the Linux license, because it is more legally precise and more comprehensible to the average developer than either the GPLv2 or GPLv3. Eventually, Linux distributions switch over to the Linux license, leaving only a small branch of GPLv3 (or v4 or v5) code to be downloaded separately (if the user chooses to do so).

To quote a famous poet:

“There must be some way out of here,” said the joker to the thief,
“There’s too much confusion, I can’t get no relief.
Businessmen, they drink my wine, plowmen dig my earth,
None of them along the line know what any of it is worth.”