Thursday, January 19, 2006

More on GPL v3

I have been looking in more detail at GPL v3 and also reading some comments in mailing lists, and I am starting to become deeply troubled by the new version of the world's most popular copyleft licence.

In the good old version 2, the viral aspects of the GPL only apply to derivative works that are distributed to the public. In other words, you take a work under GPL, change it and then distribute your own adaptation, then you have to re-distribute it under the GPL (I know that some people do not like the word viral, but there you go). This simple rule would generally provide clear-cut cases in which the GPL would apply and where it would not. For example, imagine that a hardware developer creates a driver module that interacts with the Linux kernel (distributed under the GPL). It is not part of the kernel, but it interacts with it. Under GPL v2, it is clear that this module is not a derivative, and therefore it does not need to be distributed under the GPL. In fact, I often receive messages in my Linux bootup process that the kernel is "tainted", this usually means that I am loading a hardware module that is not licensed under the GPL, or that is even proprietary (such as the wireless module provided by Linuxant).

What happens with GPL version 3? The situation with derivatives is less straightforward. The viral copyleft clause in the new GPL has been given a tremendous boost. Users and developers still have the right to install and use GPL software without restrictions. Developers also have the right to privately modify the software, unless they have initiated a patent suit "against anyone for making, using or distributing their own works based on the Program." The problem is that of modifications that are distributed. Consider section 5(b) (the old section 2.b):

b) You must license the entire modified work, as a whole, under this License to anyone who comes into possession of a copy. This License must apply, unmodified except as permitted by section 7 below, to the whole of the work. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
This would certainly apply to anyone who includes any sort of modification of code into their work. Imagine for example that you include modified modules from the Linux kernel in your work in order to provide compatibility with the kernel. It seems like you would definitely have to licence the entire program under the GPL! This would not apply if the work can be clearly identified as not being a derivative. The new GPL says:
These requirements apply to the modified work as a whole. If identifiable sections of that work, added by you, are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works for use not in combination with the Program. But when you distribute the same sections for use in combination with covered works, no matter in what form such combination occurs, the whole of the combination must be licensed under this License, whose permissions for other licensees extend to the entire whole, and thus to every part of the whole.
This is extremely harsh in my opinion. Even if your work is not based on GPL software but it is distributed in combination with covered works, then it must be licensed under the GPL! What will happen with open source companies that do not choose to use the GPL, such as Mozilla and Apache? And what about interfaces? At first glance, I believe that this would also affect drivers and modules that interact with the kernel. However, the draft further confuses this by stating:
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. Mere inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
I said yesterday that the new GPL seemed clearer. Strike that. This paragraph further confuses the subject. This paragraph tries to rationalise specific cases in which the ridiculously revamped GPL copyleft clause will apply by inventing a new definition to what a compilation is. They try to determine that the software distributed in the same distribution medium has to be GPL if it is a "compilation", but not if it is an "aggregate". Why create the new terminology? For example, under GPL 3 my SuSE Linux distribution could not include any proprietary software at all, such as the PDF reader for Linux or even the Nvidia drivers for my video card! I know that some people do not like to "taint" their distributions, but I rather like that I am able to use the video card as intended and read PDF files right after installation.

I think that the drafters of the new GPL realised that the new copyleft clause would be controversial when they included an excuse within it:
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
We have a saying in Costa Rica, "el que se excusa se acusa", he who excuses himself accuses himself. Why excuse the clause in the licence?

It is great that this is still in draft form, and I hope that some things get changed!

No comments: