[Haskell-cafe] GPL License of H-Matrix and prelude numeric

wren ng thornton wren at freegeek.org
Fri Jan 28 01:36:09 CET 2011

On 1/27/11 2:21 PM, Maciej Piechotka wrote:
> On Thu, 2011-01-27 at 00:45 -0500, wren ng thornton wrote:
>> On 1/26/11 5:51 AM, Maciej Piechotka wrote:
>>> Some projects (like Linux) remove this clause and I'm not sure how many
>>> projects are marked on hackage as GPL2 being GPL2-only.
>> Technically GPLx and GPLy are incompatible for all x and y such that x
>> /= y.The problem is that *technically* the phrasing of the viral clause
>> prohibits dual licensing, despite the obvious intention.
> Could you elaborate? I cannot see any problem why author, having all
> rights, cannot publish code under GPL-2 and MPL. Sure GPL-2 allows
> someone to fork it into single-licence fork.

IANAL, but that is the synopsis that was given to me by and old friend 
who was. ISTR that the FSF may have a page on the matter too (circa "how 
to upgrade to GPL3" pages), though I'm loo lazy to look for it now.

The problem is in the exact wording of how the viral clause is phrased, 
which is somewhat at odds with the intention. Basically, if you license 
your work under GPL2, and someone else wants to use it in a derivative 
work, then they must distribute the composite work under GPL2. All well 
and good, since this is the intention of the viral clause. However, 
copyright law doesn't have any built-in notion of "versioning". So if 
you distribute your work as GPL2 and someone does some derivative work 
that they want to distribute as GPL3, then technically they must 
distribute the composite work under the *joint* license (GPL2 && GPL3); 
however, since parts of the GPL3 were specifically written as "bugfixes" 
to the GPL2, this means the joint license is inconsistent and so noone 
can simultaneously adhere to both of them, so the composite work cannot 
be (non-vacuously) distributed.

Conversely, if your work was distributed as GPL2+ then you are providing 
a disjunction of licenses for users to choose from. The person making 
their derivative work would be free to choose the GPL3 (or GPL3+) 
license(s) for their use of your work, and this is clearly compatible 
with their own GPL3 (or GPL3+) license, so the composite work can be 
released under GPL3 && GPL3 == GPL3 (or GPL3+ && GPL3+ == GPL3+, or 
GPL3+ && GPL3 == GPL3,...)

If you're familiar with linear logic, this is basically the same kind of 
differentiation between multiplicative and additive conjunction.

> Hmm. By GPL I understend FSF version which allows relicensing.

I'm not sure exactly what you're meaning by "relicensing"...

> I'm not sure about the interpretation (and IANAL) but I'm not entirely
> sure if GPLx+ and GPLx-only are compatible at all.

If one project is released under "GPL version x (or, at your option, any 
later version)" and the other is released under "GPL version x" (only), 
then the composite work can satisfy both by being released under "GPL 
version x" (only), since they have the option to choose "GPL version x" 
as their license for the first project.

It's only a problem when x-only is not in the range of y+.

Live well,

More information about the Haskell-Cafe mailing list