Open Source License Question

Josiah Carlson jcarlson at
Sat Oct 30 11:07:42 CEST 2004

Cliff Wells <clifford.wells at> wrote:
> On Fri, 2004-10-29 at 23:34 -0700, Josiah Carlson wrote:
> > 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.
> AFAIK there are no ATI binary drivers for Linux.  Those drivers are part
> of, developed from ATI's specs.  The NVidia drivers are binary ad
> use the GPL'd wrapper approach.  The driver comes in two parts: the
> proprietary binary module, where all the interesting stuff happens, and
> a GPL-compatible shim between it and the kernel.

My mistake on the ATI drivers.

> Whether or not this is *really* GPL-compliant is still up in the air.
> Just because nobody complains about it doesn't mean it's legal.  I
> seriously doubt any of the kernel developers have any intention of
> "sending lawyers" to NVidia's door over it if it isn't, so the lack of
> action doesn't really prove anything other than it works for practical
> purposes ;)

Robert Kern mentions off-list that the "shim" that nVidia ships uses
kernel API calls to communicate with its driver, which Linus considers
an IPC mechanism, so it is really like using a service via some
arbitrary IPC mechanism (CORBA, SOAP, XML-RPC, etc.).

An mmap'd temporary file and a bit of work, and you too can wrap GPL
library in a high-speed multi-platform-capable shim for commercial use
at 95% of linked speed.  Not that I would condone such use, I'm just
saying that it is possible.

Now, to be the devil's advocate, I also pose the question publically:
what is the substantive difference between using an mmap'd file and
linking? A shared address space is created, data can be sent, received,
executed, etc.

Now, as Robert Kern and others have mentioned, none of it has been
tested in court (whether IPC is a sufficient separator), but as Cliff
says, "it works for practical purposes". However, I believe there should
be a set of rules for what one can and can't do in regards to linking vs
IPC, and how close they really are. Something that is agreed upon by
the authors of the GPL, perhaps forking it and calling it GPL+I (GPL +
Interfaces). Something like:

If you want to use a GPL+I library with your non-GPL code that you would
like to distribute, you must either get permission to use the GPL+I library
with your code from the original author(s)/rights holder(s), or write a
'wrapper' that is released under the GPL that either:
1. Links with the GPL+I library, but offers an interface via some form
of IPC that your non-GPL software can access (whose limitiations are
later explained).
2. Links with your non-GPL software, but accesses the GPL+I library via
some form of IPC (whose limitations are identical to case 1).

Then have a section of IPC limitations, etc...

 - Josiah

More information about the Python-list mailing list