Open Source License Question
rkern at ucsd.edu
Sat Oct 30 09:01:43 CEST 2004
Josiah Carlson wrote:
> Let us say that my commercial (non-GPL) software A links my GPL wrapper
> B. Wrapper B links GPL'd library C.
> B is the derivative of C, so must be GPL'd, and is. Since B is owned by
> me, I can do what I want with it. So I do what I want, I link it from
> my commercial software A.
> Now, I can ship B and C as with a GPL license along with my non-GPL
> software, stating quite clearly that since I am the owner of B, I am
> going to link B as I find necessary.
You're still distributing C linked in with A. A derives from C. The fact
that you've stuck B in the middle is irrelevant unless it's part of a
communications bridge between a process consisting of A+B communication
via some form of IPC (sockets, pipes, whatever, just not static or
dynamic linking) with C (or A communicating with B+C, or A+B with B+C,
however it's arranged).
> From what I understand, as long as B is nontrivial, the above is
> sufficient. And as I said before, if the original posters are incorrect
> about this, so am I.
> With all that said, if one /could not/ use GPL'd libraries from
> commercial software, then nVidia and ATI would have lawyers knocking on
> their doors for not GPLing their video drivers, as technically, the
> nVidia drivers are derivative works of the Linux kernel. Not being
> privy to the inner workings of nVidia nor ATI, I will not guess how they
> have managed to release binary-only drivers for linux, and will just say
> that it is being done.
They use a wrapper (they call it a "shim") somewhat similar to what you
describe. The key difference is that their shim uses the standard kernel
API to talk with the binary-only drivers in much the same way that a
proprietary, binary-only application uses the standard kernel API. Using
the standard kernel API is considered (at least by Linus; see COPYING in
the Linux kernel distribution) to be *use* of the Linux kernel and thus
unrestricted and not creating a derivative work.
Wrapping C with, for example, an XML-RPC interface (GPL-compatible
license) and connecting to it via that interface from A
(GPL-incompatible) would be the appropriate analogy here.
rkern at ucsd.edu
"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
More information about the Python-list