What is Copyleft?

Ryan S. Dancey ryand at frpg.com
Fri Feb 23 21:59:55 UTC 2001

From: "Dave J Woolley" <david.woolley at bts.co.uk>

> or you link it against the dynamic version to create a dynamically
> *linked* executable, which can load the full text of the library
> and run time.

>  There are three possibilities here:
> - unlinked (LGPL gives a dispensation on the headers used);

In my opinion, not a derivative work.  LGPL neither grants nor restricts
rights to this situation, except as relates to the distribution of the
source code of the LGPL'd material, and in that sense, the code might as
well be GPL'd.

The function prototypes in header files almost certainly cannot be
copyrighted, thus there's no point in licensing their use.  In fact, you can
almost always call an exported function by ordinal number, thus I wouldn't
even have to include the actual function names in my non-licensed code; I
could just call the functions by ordinal rather than by name.

> - statically linked;

In my opinion, a derivative work of all the sources of the object code,
because they're all combined into one work when the compilation is complete.
With the GPL, all of that code would also have to be GPL'd.  With the LGPL,
nothing but the LGPL'd library code needs to be covered by the LGPL.

This, I think, is the most valuable use of the LGPL for programmers working
in a mixed free/non-free environment.  It allows a free-software library to
be used with non-free code.  From the standpoint of the FSF, this is a very
suboptimal situation (because it tends to allow non-free code to proliferate
by leveraging free code).

If a court found that the first and third results Mr. Woolley enumerated
were not derivative works (and thus could ignore the terms of the LGPL or
the GPL for non-free code), I suspect that a case could be made to the FSF
for abandoning the use of the LGPL.  I suspect that the "statically linked"
scenario is permitted because allowing unlinked and dynamically linked code
essentially means that not allowing it would just be frustrating, requiring
a program to dynamically link at program start, essentially achieving the
same result.

> - dynamically linked.

In my opinion, not a derivative work, because the parts are never combined
into one work.  In my opinion, from the standpoint of making a work a
derivative work, the law does not understand or care about the concept of a
thread of execution, no more than the law cares about the order you read
pages in a collection of books.

Furthermore, I would argue that the GPL doesn't cover this situation,
because the GPL explicitly disclaims any authority over what the program
does once it starts to execute.  "The act of running the program is not

The only part of the free code that is actually combined with the non-free
code are the function prototypes, which I maintain cannot be copyrighted,
and thus are not governed by the terms of either the LGPL or the GPL.


More information about the License-discuss mailing list