[cc-community] GNU-GPL, makefiles, and non-distributed executables

Terry Hancock hancock at anansispaceworks.com
Sun Dec 16 22:58:05 EST 2007


Kyle Williams wrote:
> On Saturday 15 December 2007 02:40:59 Greg London wrote:
>> Eve compiles the object files together on her computer. Alice makes
>>  Eve agree to not distribute the resulting executable.
>> 
>> Does this satisfy the GNU-GPL applied to George's code?
> 
> I think the GPL is very clear on this.

Heh. Right. :-)

> In section 2 b) "You must cause any work that you distribute or 
> publish, that in whole or in part contains or is derived from the 
> Program or any part thereof, to be licensed as a whole at no charge 
> to all third parties under the terms of this License."

Note that this is from GPLv2 and uses the word "derived", which is a
"term of art" in copyright law and is pretty limited as a result.

> So no, even though Eve distributes her code and Georges code the way
> you suggest, her work still contains Georges work and thus must be 
> under the same license as Georges work.

NO. It does NOT "contain" George's work. This is the whole point of
Greg's example. Eve doesn't distribute any work of George's except as a
verbatim copy of his original work, distributed on the same transmission
medium.

Eve's code is merely "designed to work with" George's work. However,
that is "use" and is not covered.

> On a more practical level. If Eve's wants to make use of Georges code
> she'll need to reference it within her code. Her works then 
> immediately includes Georges work, and there's no escaping the 
> license.

"Referencing" a work is NOT "including" it (imagine the consequences if
it were!). Lists of bookmarks are a trivial example of why that would be
bad as are scientific citations, bibliographies, etc.

GPLv3 attempts to remedy this by defining its own terms, closing the
loophole that Greg is describing (I'm not sure whether it can really
succeed at that, but it's obviously the intent of some of the changes).

Note how the following definition from GPLv3 is specially-designed to
"catch" such cases:

"""
  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
"""

Note however that the copyrightability of headers is somewhat
questionable, since they can be regarded as a minimal encoding of the
"facts" of the library (its interface).

Later, the "mere aggregation" clause is narrowed to exclude this case:

"""
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
"""
(Because works which are "designed to work with" other works might not
be "mere aggregates" under this definition -- but note how this might
also include a lot of undesired limitations, such as including content
datafiles designed to work with a specific engine or interpreter. The
definition of "System Libraries" *might* resolve that).

So, clearly GPLv3 is designed to remedy this, although it does raise
some questions as to how much it can control. There's also some question
as to whether such extension remain "free", since if they are
enforceable at all, rely on restrictions of *use* of program
functionality, rather than on activities which fall into the definitions
of copying and derivation that are covered by copyright law.

> And lastly, if Eve wants to use Georges code she should use it 
> according to the spirit of the license George made it available 
> under, instead of trying to find ways around complying with it.

Sure, okay. That's a moral argument. But that's not what Greg asked. He
asked what was *legal*. And anyway, you have to draw the line somewhere.
There's always going to be some uses the author doesn't think are
"proper" which are nevertheless legal and some uses he thinks should be
fine, but aren't (that's why licenses and laws get rewritten from time
to time).

However, my guess is that if you are concerned about this case, you
should be using GPLv3 instead of GPLv2.

Cheers,
Terry

-- 
Terry Hancock (hancock at AnansiSpaceworks.com)
Anansi Spaceworks http://www.AnansiSpaceworks.com



More information about the cc-community mailing list