Misunderstanding GPL's terms and conditions as restrictions

Les Mikesell lesmikesell at gmail.com
Mon Jul 28 18:21:09 UTC 2008

Alexandre Oliva wrote:

>> Who? Anyone who did something contrary to those terms.
> And who did, in the presented scenario?  One of the four must have,
> because they did something that you claim to be impossible under the
> GPL.
> <repost>
> John A. Hacker develops, from scratch, a program that contains two
> source files: lib.c and main.c.  lib.c was developed to be released as
> a separate library, under the modified (3-clause) BSD license (so
> these are the headers it carries), whereas main.c was developed to be
> released under the GPL (so these are the headers it carries).  John
> A. publishes the whole, named gnothing, under the GPLv2+, and never
> publishes lib.c in any other way.

Agreed to GPL, abides by terms.

> Wanda B. Foreman downloads gnothing, and notices lib.c would be really
> useful in his project, linstall.  She thus modifies gnothing by
> removing main.c and the build scripts, and then adds lib.c to her
> version control system, along with changes to the build machinery to
> have lib.c built and linked into his own program.  She then publishes
> linstall, under the GPLv3+.

Agrees to GPL, abides by terms (assuming changes to v3+, if any, were 
permitted in any copied parts).

> Ken C. Farsight has access to Wanda's VCS repository, and sees lib.c
> show up there.  It provides just the feature he wanted for his bsdown
> Free Software program, that he's always distributed under the 3-clause
> BSD license.  He copies lib.c into bsdown and releases a new version
> of bsdown.

Free to ignore GPL terms.

> Evelyn D. Scent maintains a non-Free fork of bsdown called macrash, so
> she takes this new release containing lib.c, merges the add-on
> features she maintains, and publishes a new release, under the usual
> restrictive EULA, known to be compatible with the 3-clause BSD
> license.

Free to ignore GPL terms.  You omitted the scenario where Ken or Evelyn 
need to redistribute gnothing or a modified version of it, which would 
require them to agree to GPL terms.  After which they have agreed not to 
do what they would otherwise be permitted to do with parts that have 
alternate licenses.

> - Has any party had his/her license to distribute gnothing or lib.c
>   automatically terminated?

They have broken the terms they agreed to.

> - Can John A. Hacker stop any of the other 3 from distributing lib.c
>   in linstall, bsdown, or macrash, under the licenses given or implied
>   by the description above, or even by itself under the modified BSD
>   license, without a copy of the GPL?

He can only act on copyright violations against his own code.  That is, 
stopping redistribution of gnothing or GPL'd components of it if the GPL 
terms are not observed.  In fact he has stopped it by applying the GPL 
terms which state exactly that.

> - Can Evelyn be stopped by any of the other 3 from distributing this
>   version of macrash containing lib.c, under the usual EULA?

No, lib.c, being BSD-licensed, has no such silly restrictions.  Only 
agreeing to the terms of the GPL can stop you from using the alternative 

> You say you don't need to consult a lawyer to answer these questions,
> but you also refrained from answering them.  Please do.  Don't be a
> weasel.

I'm not interested in paying a lawyer to claim that you don't have to do 
what an agreement says you 'must' do, even it that is possible.

>> If you agree, then you've agreed not to violate section 2b.
> You've agreed to not violate section 2b when modifying the program and
> distributing, under the GPL, modified versions of it.

Where does it say that you are ever excused, once you've agreed that you 
will apply exactly the GPL terms to all parts.

>>> Distributed along with the main work, right?
>> No, RSAREF was done by someone else and was available in source with
>> some distribution restrictions because of export restrictions. You had
>> to obtain your own copy separately.
> Was the program we're talking about distributed only in source code
> form, or also in binary form derived from RSAREF?

Why don't you look this up yourself?  You don't believe anything I say 
anyway.  Of course it was only in source.  These were the days when 
people actually used different processor types and compiled things 
themselves, and distribution of the RSAREF code would have been 
restricted anyway, binary or not.

>> But that would not have been an issue if the other library had not
>> been required.  Read the rest of the license and notice that that
>> exception for system libs wouldn't be there if third party libraries
>> in general were permitted.
> The exception for system libs applies to distribution in object code
> form.  It doesn't apply to distribution in source code form because
> there's no need for it.  And, indeed, there's no exception for other
> libraries in distribution of object code.  That's exactly why I asked
> the questions I asked.

It still doesn't apply.  You can't omit parts, even if you are 
distributing source for the main program.

>>> Why couldn't that implementation be GPLed?  And why couldn't it just
>>> be left out of the main work?
>> It couldn't be GPLed because it wasn't part of the work and it had
>> other distribution restrictions.
> Good, you've now understood that it's other restrictions that cause
> problems, rather than the GPL.

That's funny.  No other part but the GPL had any restrictions on the 
work-as-a-whole.  No other part restricted distribution based on what 
other works were combined.  There were export restrictions attached to 
RSAREF at the time, but otherwise nothing but the GPL restricted 
anything in this freely available source distribution.

>> Note also that the gmp library was not included either.
> That's not important.  As far as the GPL is concerned, what matters is
> whether the work as a whole is derived from GPLed code or not.

And it is a rather specious judgement to say it is derived, when with no 
changes to the code in question it can later become not-derived.

>> The claim was that the source that would require the library's
>> functions was a derivative work even though no copying took place.
> That's correct.  The program derived from gmp was a derived work, so
> it had to be GPLed, even if no copying took place.
> RSAREF didn't stop the program from being created in the first place,
> or from being distributed under the GPL in source form.

Per the FSF, RIPEM was a derived work of gmp and could not be 
distributed execept under the GPL.  However that was impossible because 
RSAREF was needed and had other terms.

   It would have
> prevented the program from being distributed in object form, though,
> because that would be a derived work from RSAREF, and you couldn't
> provide the corresponding sources of the whole under the GPL.

There is no object/source dichomotmy here.  RSAREF was a source 
distribution, just not included and not GPLed.  RIPEM was a wrapper 
needing both the rsa code and large integer math, and as is typical, the 
GPL did its best to prevent users from having it.  Someone was forced to 
rewrite the GPL-encumbered functionality that was prohibited from being 
shared to allow any distribution at all.

   Les Mikesell
    lesmikesell at gmail.com

More information about the fedora-list mailing list