Does a GPL API infect its apps?
Ross N. Williams
ross at rocksoft.com
Fri Oct 22 01:58:53 UTC 1999
At 12:44 PM -0700 21/10/99, Ken Arromdee wrote:
>On Thu, 21 Oct 1999, John Cowan wrote:
>> > Here's a hypothetical version which does not have this problem:
>> > >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 or a license which grants permissions which are identical to this
>> > >License except for the possible addition of extra permissions on the sections
>> > >which are identifiable works as described above.
>> This is already possible, since a distribution of the PART is not a
>> distribution of the WHOLE.
>I don't think so. Call the GPL program A and the added part B.
>The GPL on A only says what you can do with A+B. It does not say what you can
>do with B alone. That *looks* like it's only restricting distribution of
>the whole and not the part.
>But one of the requirements of the GPL on A is that you also GPL A+B. The
>GPL on A+B restricts what you can do with derivatives of A+B (unlike the first
>GPL on A, which only restricts what you can do with derivatives of A). B
>(when obtained by cutting it from A+B) is a derivative of A+B, and therefore
>B is restricted by GPL even though it contains no A code.
>That is, the fact that you cannot take the section B out of the program and
>use it under another license is a second-order effect. The initial GPL on A
>does not prohibit this action, but it requires that you GPL A+B, and GPLing A+B
>in turn causes the prohibition.
>If B is dual-licensed, that dual license got lost at the step where you
>distributed A+B. You must distribute A+B under GPL-only, which makes that
>particular copy of B GPL-only too. Any dual-licensed copies of B must be
This discussion about GPL virility is making my brain hurt.
I think that the appropriate unit for licensing is the module, not the
function. That's why the Free World Licence has the module as its unit,
not the program (as does the GPL). If you want to licence a single
function under various terms, stop whinging :-) and put it in its own
module and release it in that form with its own notices. Then, if it
needs to be added to GPL libraries or whatever, just copy the function
over and let the copies live their own lives under their own licences.
Trying to apply different licences to different functions within the
same module seems like asking for trouble to me :-)
Also, I suspect that the GPL is a little bit weaker than people think.
Let's read the key clause again:
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
What this is saying is that the GPL's strength relies mainly on there
not being any other licences hanging around that might grant the rights
that the GPL denies. The "Therefore" implies to me that a contract can be
proven to have been formed only if the actions defining the creation
of the contract cannot be shown to be legal under any other licence.
To me, a simpler way to look at it all is to remember
that each person who writes any code owns copyright over the code.
So a program consists of a collection of parts/modifications each of which
is copyrighted by its author. That's the starting point. The GPL merely
states that in the absence of other licences that might provide a
loophole, those who modify code that has been released under the GPL
must licence their modifications under the GPL. It does not say that such
modifications cannot be released under another licence too.
Thus, my understanding is that if A+B is GPLed, then you could still
extract B and use it in a way that violates the GPL, so long as you
can provide a complete genealogy for B under another licence or get
all of the contributors to B to re-issue under another licence.
Furthermore, my understanding is that if a program were released
under GPL and modified by 1000 authors, then even ten years later,
the entire mess could be taken commercial so long as all of the
1000 authors agreed to licence their contributions to the commercial
venture. The commercialization could not undo the existence of the
GNU copy, but the commercial fork could proceed because all of the
copyright owners of the code would be issuing a fresh licence to their
I guess the main point I'm making is that the GPL relies,
for its power, largely on the absence of other licences.
It was designed to be used on its own.
I am not sure of all this, but that's my understanding.
Perhaps someone can flame me if I'm wrong.
Dr Ross N. Williams (ross at rocksoft.com), +61 8 8232-6262 (fax-6264).
Director, Rocksoft Pty Ltd, Adelaide, Australia: http://www.rocksoft.com/
Protect your files with Veracity data integrity: http://www.veracity.com/
More information about the License-discuss