On Friday 11 August 2006 14:48 pm, Joerg Schilling wrote:
> The FSF GPL FAQ e.g. incorrectly claims:
> Linking ABC statically or dynamically with other modules is making a
> combined work based on ABC. Thus, the terms and conditions of the GNU
> General Public License cover the whole combination.
> The GPL does not contain the term "combined work", so this is an invalid
> The GPL rather talks about a "derived work" and simply linking two modules
> together does definitely not make module B a "derived work" of module A
> if module A calls code from module B but module B does not call code from
> module A.
Let's put aside for the moment that the FAQ is not meant to be a legal
document as opposed to the GPL itself, and that the FAQ is not saying B would
be a derived work of A, but rather that the combination would be...
I have a general question about how the GPL is construed to cover the case of
dynamic linking. According to the GPL, section 0:
The act of running the Program is not restricted...
And since dynamic linking is done at the time the program is run, this would
appear to me to be what applies. In particular, it appears to me that you
could satisfy the GPL and still dynamically link against a non-free library,
and distribute both, by invoking the "mere aggregation" clause of section 2.
(Of course, you would have to be very careful about any inline functions,
etc., from the non-free headers...)
As a hypothetical example, let's say that program A uses library B, both
licensed under the GPL. Now the author of B decides he doesn't want anybody
selling B at all, so he releases a newer version under a non-free license,
and Debian decides to package the old version of B as B-free and the new
version in non-free. Is Debian allowed to keep distributing A, while
distributing B-nonfree at the same time, given that some users might not end
up installing B-free? Suppose that later B-free is considered old and buggy
enough that we refuse to support it, so B-free is removed from the archive.
Now does Debian have to stop distributing A as well? Even if by this point
nobody actually had B-free installed any more? (I think my answers would be:
distributing A with B-free and B-nonfree is permissible, but once B-free went
A would have to go as well. Of course, there would also be the solution we
already have with B-free = lesstif and B-nonfree = libmotif, but let's say
for the sake of argument B's maintainer doesn't take that course, and instead
makes libB1-nonfree: Provides: libB1.)
On the other hand, since the FSF is the author of the license, and their own
FAQ states that they consider dynamic linking to fall under the terms of the
license, distributing GPL programs dynamically linked against
GPL-incompatible libraries would clearly be exploiting a loophole under any
definition of that term that I know of. And exploiting a loophole in the GPL
would hardly be a way to endear oneself to the free software community.
Thus, I'm hoping that the above is more of an academic question than anything
In any case, static linking clearly falls under the definition of a "work
based on the Program" in section 0, so you cannot e.g. extend GPL'd program A
to use non-free library B, then distribute a resulting binary with B
statically linked in. (Which is not the same thing as saying this would make
B a derived work of A.)