[erlang-questions] GNU GPL, MIT, BSD and compatibility
Fri Apr 11 15:10:22 CEST 2008
Il giorno ven, 11/04/2008 alle 13.07 +0200, Richard Carlsson ha scritto:
> "These requirements apply to the modified work as a whole. If identifiable
> sections of that work 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. But when you distribute the same
> sections 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."
> Note in particular: "the entire whole, and thus to each and every part".
> This means that if such a part was previously only published under e.g.
> an MIT license, it (the particular version used by the combined software)
> must now also be published *also* under the GPL, and can from that point on
> be used by anyone under the GPL even as an isolated component, *even if this
> is not what you as the author of the MIT-licensed part would like*. As
> far as I can tell, this is precisely what the original post means with
> "anyone who wants to use it may have to release their code under the GPL",
> and you claim that that is wrong.
Yes, I am pretty sure that this is wrong. Maybe it is necessary to
specify what "on the terms of the GNU GPL" means in the passage above.
Let's say that I have a file bar.c, released by some third party under
the (GPL-compatible) BSD license. I modify it and make it depend on
libfoo, which is GNU GPL'ed, in order to create the application gplbar.
What does it happen? Let's make two hypothesis:
A. the bar.c license is overwritten/substituted by the GNU GPL for
further redistributions, even when separated from "the whole"
B. the (GPL-compatible) bar.c license remains the same, except
(maybe) for the changes I made for linking libfoo. Anyway, the
resulting application must now also respect the license of the
new component (i.e. libfoo). And thus, "the whole" gplbar
application must now be distributed on the terms of the GNU GPL.
If someone later removes my changes, however, the bar.c code
will not be bound to the GNU GPL anymore.
If I understood correctly, you think that "A" is correct, while I think
that "B" is correct.
The GNU GPL passage you quoted is totally compatible with "B": it just
says that, when I distribute "the whole" gplbar, then "each and every
part" of it must give to the recipient/licensee all the permissions
given by the GNU GPL. And since every GNU GPL-compatible license *does*
offer, by definition, these permissions, then a change of license "of
each and every part" is not required .
The same GNU GPL passage is also compatible with "A". But, as explained
above, it does *not* *require* that the original license "of each and
every part" is substituted/overwritten by the GNU GPL, "even if this is
not what the author of the part would like".
And the lack of this requirement is good, because the
substitution/overwriting of the original license may be *illegal*: under
the copyright law of every country I know about, only the author has the
right to decide the usage conditions of the code he/she wrote --- and,
for example, the BSD license does *not* allow such relicensing .
The MIT license, OTOH, does allow "sublicensing", so the scenario you've
described *may* be possible for code under that license. However, it is
*not* mandatory because of some GNU GPL requirement.
Therefore, saying that GNU GPL'ed software requires to change the
license of every other code it touches/links to is *not* correct.
It is a "viral" property that the license simply does not have, and
would make it incompatible with most of the "GNU GPL-compatible"
 The main pourpose of that GNU GPL paragraph is to clarify that, for
example, I can't decide to distribute "the whole" gplbar with some
binary-only parts just because their original source files, taken
alone, are under a BSD-like license: if I do this, then I'm not
guaranteeing the GNU GPL permissions "for each and every part" to
 BSD-licensed software, however, can be "proprietarized" because
the license does allow redistribution in binary form, without
sources --- provided that the proper credit is given to the
Alceste Scalas <>
CRS4 - http://www.crs4.it/
More information about the erlang-questions