Why modifying the GPL is bad…
Tuesday, 12 December 2006
Alexander Muse explains on his weblog why Big in Japan uses a slightly modified version of the GPL. In fact, he doesn’t even consider it a change or modification, but only a clarification of something that he considers unclear.
When we released the source code for the Big in Japan tools we used this license, but decided to clarify our interpretation of the term “distribution”. We did not modify or change the license in any way, instead before including the full text of the license we defined “distribution”.
I’m sure that Alexander has the best of intentions, but even by adding your own clarification of a term can have very big consequences and can complete change the way the license is interpreted and the result is that you are actually modifying the original meaning of the license. Anticipating this response from the open-source community Alexander already has written an explanation of why we are wrong: the GPL allows you to attach additional notices.
Some people disagree, suggesting that by defining the term we have “defacto” changed the license. We disagree with this position because the license itself (i.e. at the end of the license in a section titled “How to Apply These Terms to Your New Programs” recommends that you attach various notices to the program (i.e. prior to the text of the license) similar to intent notice we placed prior to the preamble.
While this is true, these recommended notices are quite a bit different from what Alexander is trying to do. These notices are indented for the licensor to grant the licensee additional rights that the GPL alone does not grant. An example of such a notice is a linking exception for binary applications. Alexander tries to do the opposite: he tries to limit the rights granted to licensees and that is simply not allowed. You can give more rights than the GPL, but you cannot use the GPL and take away some of the rights that the GPL intends to grant.
So what did Alexander Muse add to the GPL and what is specifically wrong with it. To find out we must first look at the actual text:
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License. For the purposes of this license our intent is that anyone who modifies the source code must provide those modifications to Big in Japan via the provided source code repository. For purposes of this license, it is our intent that hosting the source code (regardless of whether or not you distribute the binary code) will be considered distribution. This applies to anyone regardless of whether or not they actually publish or distribute the modified code. For example, if you build a hosted application using the source code and modify it in any way, you MUST contribute the changed code back to the project.
Sounds pretty harmless, right? It is not like they snuck in clause that says “Where this license says ‘free’ we mean free in a monetary sense. You do not have to pay us money to use this software, but you will have to give us your firstborn”. They only want ensure that changes are contributed back to the project. So the intentions may indeed be good, unfortunately the actual result isn’t good at all.
As I explained above by changing the definition of a single term you can completely change the way the license is interpreted. And this is exactly what happens when you change the term distribution.
Distribution is not defined in the GPL itself, but we are talking about distribution with regard to copyright legislation and there is more than enough case law to establish what distribution means in that sense. It comes down to this: if you are using or making one or more copies of a copyrighted works, you are not distributing it – if you are giving those copies to other persons or legal entities you are distributing. Use or copying is not distributing – giving to others is.
Alexander wants to change this:
For purposes of this license, it is our intent that hosting the source code (regardless of whether or not you distribute the binary code) will be considered distribution. This applies to anyone regardless of whether or not they actually publish or distribute the modified code.
Given that hosting the source code is required for using it – without hosting it on a server you cannot possibly use it in any useful way – it seems that Alexander want to make ‘using the software’ the same as distributing.
This is quite a big departure from established copyright law and also quite a big departure from the intentions of the author of the GPL. The GPL FAQ states:
The GPL does not require you to release your modified version. You are free to make modifications and use them privately, without ever releasing them. This applies to organizations (including companies), too; an organization can make a modified version and use it internally without ever releasing it outside the organization.
No, in that case the organization is just making the copies for itself. As a consequence, a company or other organization can develop a modified version and install that version through its own facilities, without giving the staff permission to release that modified version to outsiders.
So, it may look like a minor point, but it severely impacts the way licensees can use the licensed application. With the regular GPL you can internally change the software and use these changed without ever having to release your changes to the public. The modified GPL requires me to always make my changes public. The modified GPL is taking rights away that GPL already granted me.
In itself this is not a problem, but you can’t call the license GPL and attach some explanation of how you want to GPL to work. The GPL allows authors to keep internal changes secret – if you want to prevent that you need to move away from the GPL and create your own license.
Contributing back to the project
Another big change is that the Alexander wants to require that the changes we already talked about are always contributed back to the project – using the projects SVN repository even.
For the purposes of this license our intent is that anyone who modifies the source code must provide those modifications to Big in Japan via the provided source code repository.
First of all, this small change makes the GPL quite a different beast. It is a common mistake, but the GPL does not require you to contribute changes back to the original author. You do not even have to notify the original author that you modified or distributed his source code. This is basis of the GPL license. It is a unilateral license that grants anybody who agrees to the terms certain additional rights. There is no obligation to the original author and licensor.
Secondly there are some practical problems. For example there is no guarantees that Big in Japan will still exist in 10 years, or even next month. What if Big in Japan no longer exists how can we contribute those changes back? And if we are not able to do so – we will no longer legally be able to modified code.
Another problem – what if Big in Japan won’t accept my changes in their source repository? Their license says I am required to provide those modification via the source code repository – so if they don’t accept my changes I cannot fulfil all my obligations and cannot use my own modifications.
How about I use 10 lines of the code in question in my own GPLed application. The result is that my application is also covered by the additions to the GPL – so everybody who changes my application has to contribute my application back to Big in Japan.
All in all these changes make it quite a different license – a license that is not compatible with the original GPL anymore. Calling this new license GPL is not only misleading but also not allowed according to the GPL itself.
I’m not saying that the changes are necessarily a bad idea. But they do make the code essentially useless for other real GPL projects because using this code would mean that the new combined code would fall under the modified GPL. If that is what you want, then fine, but stop calling it GPL. It’s not.
Furthermore it impossible to include real GPL code in the Big in Japan projects without the express permission of the original authors. So, the changes to the GPL will achieve the effects they imagined, but at the same time it will set the project completely apart from the rest of the open-source community. A side effect of which I imagine they did not expect and I am sure they can’t be happy with.
It seems that Big in Japan already modified the additional requirements. These changes have not yet propagated back to the SVN repository, but if what Alexander Muse wrote is true they completely dropped the requirement that any modifications must be contributed back to Big in Japan. They now simply state that “you MUST release the modified source code“. This makes my second point completely moot. The first point – the redefinition of ‘distribution’ and my conclusion still stand though. The modified modification is still utterly incompatible with the GPL.