Open Source License Question

Robert Kern rkern at
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.

Robert Kern
rkern at

"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 mailing list