Subject: Re: linking BSD and GPL code via a plugin
From: Chuck Swiger <chuck@codefab.com>
Date: Wed, 19 Jan 2011 10:54:54 -0800

 Wed, 19 Jan 2011 10:54:54 -0800
On Jan 19, 2011, at 9:07 AM, John Cowan wrote:
> Kevin Hunter scripsit:
>> I'm confused (yet again!) about linking to libraries and other programs.
>> I am working with a BSD licensed project, and I've been tasked to
>> write a plugin to call functions of a GPL project.
> 
> The FSF claims that such a plugin is a derivative work of the GPLed
> code, unless there is a non-GPLed version (separate implementation or
> differently licensed copy) that is plug-compatible with the GPLed code.
> Thus code written to use readline does not have to be under the GPL, given
> that it can work just as well with the equivalent BSD library editline.


Certainly I agree with your point about readline, and more broadly, Computer Associates
v. Altai suggests that publicly published APIs generally cannot qualify or be used as
grounds for software copyright infringement.  

I am less sure about the FSF's position about plugins.  In particular, from prior discussion
on this list:

> Well, Eben Moglen comes to mind.  He said
> (http://interviews.slashdot.org/interviews/03/02/20/1544245.shtml?tid=117&tid=123):
> 
> "The language or programming paradigm in use doesn't determine the rules
> of compliance, nor does whether the GPL'd code has been modified. The
> situation is no different than the one where your code depends on static
> or dynamic linking of a GPL'd library, say GNU readline. Your code, in
> order to operate, must be combined with the GPL'd code, forming a new
> combined work, which under GPL section 2(b) must be distributed under
> the terms of the GPL and only the GPL."
> 
> in response to a question about using GPLed JARs.  It's clear he
> believes dynamic linking of GPL software (e.g. readline) creates a
> derivative work that must be licensed under the GPL if distributed.

Notice the key phrases "...where your code depends on static or dynamic linking of a
GPL'ed library..." & "...in order to operate".  If your program cannot operate without
the GPL'ed library, I would agree with Eben's position that whether the program uses
static or dynamic linking doesn't matter; the program is a derivative work of the GPL'ed
library.

However, I'd be curious to hear his opinion with regard to the situation where the program
does not depend on the GPL'ed library to run, but might optionally use it via dynamic
linking.  I did a quick search on this mailing lists' archives with regard to that question;
in doing so, I noticed the following:

 http://www.linuxdevices.com/files/misc/asay-paper.pdf

...where he's quoted as saying (with regard to whether a situation would create a derivative
work, ppg 15-16):

"A module written to be plugged into an API defined specifically to support dynamic
loading?
Moglen:  No."

[ CC:ing Eben so he might clarify his position, if he wishes to do so.... ]

Regards,
-- 
-Chuck