[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Copyleft variation of MIT license

In message <4613D775.5040701@ucsc.edu>, Suraj N. Kurapati <skurapat@ucsc.edu> writes
Anthony W. Youngman wrote:
In message <4612A111.4080809@ucsc.edu>, Suraj N. Kurapati
<skurapat@ucsc.edu> writes
One of my intentions was to specify a set of basic requirements
for my source code and not go far as to restrict the code to a
particular license. That is, I want to allow my code to be
sucked into any superset license.

In this manner, I feel the LGPL is too restrictive because
since it narrows down its list of superset licenses to only

What do you mean by a "superset licence"?

I'm referring to concepts from set theory:

A superset license is either (1) this license or (2) this license
with additional stuff. (The latter case is a "strict" superset.)

Well, "additional stuff" could be either additional permissions, or additional restrictions ... :-)

I'm sure you DON'T mean "allow somebody else to add extra
permissions that you didn't". If that's the case, just declare it
Public Domain, and that's an end to it.

However, bearing in mind the whole purpose of the GPL is to *grant* *permissions* I would take a "strict superset" to mean exactly the above ...

I hope you don't mean "allow someone to add extra restrictions".
That's not copyleft at all.

I do mean those things, because it seems you cannot have a GPL
compatible license otherwise.

Which it seems isn't what you meant!

For example, suppose you incorporate some MIT licensed code into
your GPL code. When you distribute this aggregation, the entire
distribution becomes GPL. Next, suppose someone wants to take the
incorporated MIT code from the aggregation and put it into his own
program... he is now stuck with using GPL for that taken code (since
the entire aggregation was distributed under GPL).

Wrong wrong wrong!

I think you're falling into one of Copyright 101 blunders that seem so common ...

In this manner, GPL adds extra restrictions onto that incorporated
MIT code (i.e. makes it GPL). Since MIT license allows sublicensing,
it allows the addition of extra restrictions; so this scenario works

No it doesn't.

But maybe I am not understanding the GPL correctly...

Not because you don't understand the GPL, but because you don't understand the law ...

The GPL version 2, condition 2 says:

 "when you distribute the same sections [GPL code + non-GPL code]
 as part of a whole which is a work based on the Program, the
 distribution of the whole must be on the terms of this License,
 whose permissions for other licensees extend to the entire whole,
 and thus to each and every part regardless of who wrote it."

Since the whole distribution must be under the terms of GPL, doesn't
that add restrictions to incorporated the MIT code? And doesn't that
require all GPL-compatible licenses to allow the addition of extra

No it doesn't. Because YOU are doing the distribution, and YOU CANNOT change the licence on the MIT code because YOU ARE NOT THE COPYRIGHT HOLDER.

What the GPL demands is that - if you mix any GPL code with any other code - you must be able to distribute the lot under the conditions of the GPL. Because MIT allows the same things as the GPL, you can mix the code. If you write your own code, you can place it under the GPL, or under MIT, or under any other licence that's compatible with the GPL, and then you can distribute the result because the requirements of the GPL are compatible with the requirements of the code you've written.

So if you mix your code (under whatever licence you choose, provided it's compatible with the GPL), together with other peoples' GPL code, together with other peoples' code under GPL-compatible licences such as MIT, then...

You can distribute the whole lot AS IF it was all GPL. It's *THAT* that is the important point, and the GPL can't enforce any more than that, because the law won't let it!

In other words, if I then receive your "product" and want to use some of that code in my project, I can strip out your code and use it under whatever licence you granted. I can strip out the MIT code and use it under the MIT licence. I can strip out the GPL code and use it under the GPL licence. Etc etc.

YOU CANNOT CHANGE THE LICENCE ON OTHER PEOPLES' CODE. (Unless they've granted you that permission, that is, and the GPL doesn't do that.)

And if I can separate their code out from your product, I can use it under the licence they granted, with NO REFERENCE TO YOU.

Provided they don't muck about with your code, ANY licence can be
a sort-of-superset of the LGPL. Just let the LGPL keep your code
copyleft, and let other people do what they like with their code
(INCLUDING including your code in their programs).

Interesting. I wonder if the reverse case also works:

If I download some LGPL code and it contains some MIT code, can I
just take those MIT portions and act upon them, (1) only according
to MIT license? (2) only according to LGPL? (3) or both?


If you can identify and separate out the MIT stuff, you can use it as per the MIT licence.

Because the MIT licence allows you treat it AS IF it was LGPL, you can use it as per the LGPL too.

(Actually, in THIS case, that's not quite true. The MIT licence DOES allow YOU (and others) to relicence code as LGPL, but if someone else has done this and you can get back to the original code, then you can get the original licence from the original author.)


Going back a bit, I think you've missed something. All licences grant permissions, so if you mix two licences, the resultant set of permissions actually granted is the intersect of the two licences. In other words, in order for the GPL to be compatible with any other licence, the other licence must grant a *proper superset of the permissions* granted by the GPL. I think when you grasp THAT, you'll "get it".

Anthony W. Youngman - anthony@thewolery.demon.co.uk

Reply to: