Static v. Dynamic Linking -- redux

Lawrence E. Rosen lrosen at
Fri Mar 15 21:02:20 UTC 2002

[This is a new thread from "Re: OSD modification regarding what license
can require of user."  The previous thread was dealing with "server"
applications.  I'm not trying to stop the previous thread, which is
interesting for other reasons.  As time permits I intend to chime in on
that too.]

Emiliano wrote:
> OK: it is equally simple to expose the same functionality 
> under a totally different API. For any GPL dll I find, it 
> would take me all of 30-60 minutes to generate a 'server' 
> that calls the DLL for me; my apps connecting to this 'proxy' 
> would talk to this proxy API, which is drop-dead simple under 
> windows. To what extent can these apps be said to be designed 
> to link to this DLL?

As several recipients of this email will remember, I made the argument
previously that static linking creates a derivative work but that
dynamic linking and linking through an API do not.  

That said, and after some reflection, I would now argue that the trivial
conversion of a static link into a dynamic link or API interface, simply
to get around the provisions of the GPL, won't work.  The court would
hear from a parade of experts who would explain that the intent was
clearly to circumvent the license.  The creator of the derivative work
would have to present convincing evidence that the linking method was
chosen for an appropriate purpose related to the application he has

For this reason, I agree almost completely with the position of the FSF:

Richard Stallman wrote:
> The FSF's position is that the GPL applies to any programs which are 
> designed to link with that DLL, that this is legally equivalent to 
> statically linking them.

I say "almost completely" because I think the burden of proof should
shift to the creator of an alleged derivative work to demonstrate either
(1) the DLL was designed and intended to be invoked dynamically by
programs that are not "derivative works" of that DLL, or (2) the
proprietary program that invokes that DLL doesn't use dynamic linking
simply to get around the [GPL] license.

I don't believe that licensing the DLL under the GPL *automatically*
negates alternative 1 above -- since the GPL doesn't unambiguously say
that.  On the other hand, if the DLL were licensed under a [non-open
source and non-free] license that expressly disallowed use through
certain kinds of dynamic linking, then the creator of that linking
program would have a lot of explaining to do!

I would be interested in your thoughts on this admittedly complicated

/Larry Rosen

license-discuss archive is at

More information about the License-discuss mailing list