Re: Copyleft variation of MIT license
In message <4613D775.email@example.com>, Suraj N. Kurapati
Anthony W. Youngman wrote:
In message <4612A111.firstname.lastname@example.org>, Suraj N. Kurapati
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
LGPL and GPL.
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
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
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
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
Anthony W. Youngman - email@example.com