tags:

views:

425

answers:

4

Regarding the following excerpt of this comment:

AFAIK, it's fine to interact with GPL code over a network adapter. It's not normally OK (again, AFAIK) to have code that's more tightly coupled than that, particularly if your code can't function without the GPL code, but that's a gray area.

So if I want to use a graphics library that's GPL (and not LGPL), could I decide to make it part of a graphics service available on a linux computer as long as I release my code that implements this service with this library?

Say the library implements SVG, and I decide I want to do all of my screen drawing in vector graphics with SVG. Rather then rolling SVG into my several apps (and thus opening their source code), I create a service (or kernel driver even) that listens on a socket (or implements a graphics device) which takes SVG data and renders it to the screen using the library. I release the service/kernel driver code as per the library's GPL. I do not release code for any of my programs that use that service or kernel driver. I publish the API for the service/kernel driver so others can implement it, replace it, and still run my binaries with a different service/driver, or develop reflectors, etc.

  • Am I violating the legal clauses of GPL
  • Am I violating the spirit of the GPL

I'm certain others have thought about this - has it occurred, and what was the community reaction?

+2  A: 

Sooner or later you might want to get a lawyer for questions this deep. Regarding your second question: For me, you are violating the spirit of the GPL in a situation as given.

When I'm comparing MySql licensing with this, I've seen many commercial applications that have been distributed with a commercial license and installed with the GPL Version of MySql. I wouldn't want to judge if this is legal or not, but with a database server and the existing abstraction it's more or less natural: Applications interface with a generic database interface (odbc, jdbc, whatever perl/php/ruby equivalents are) that is talking via a driver to one of many applications.

Willingly and knowingly turning a GPLed piece of software into a server, creating an interface layer and having the GPLed version as the only implementation of that interface feels bad.

It might be easier to get in touch with the authors and ask for a commercial or more permissive open source license. Of course, you should offer to pay if it's of any value to you. Judging from your deep question it seems to be of some higher value for you.

Olaf
+1  A: 

Obligatory I Am Not A Lawyer.

Are you violating the legal clauses of the GPL? Probably not. ATI and nVidia do this sort of thing with their graphics drivers for Linux. However, it's important to note that Linux is GPLv2; this may have changed with GPLv3.

Are you violating the spirit of the GPL? Yes, and judging from the way your question was written, you already knew this.

R. Bemrose
+1  A: 

A good rule of thumb is: if you're wondering whether or not you're violating the spirit of GPL, then you probably are.

JesperE
+3  A: 

I agree with earlier comments that this looks bad as far as the spirit of the GPL goes. Doing it anyway would probably meet some resistance in the community which might take forms like:

  • Not checking your work back into project trunks
  • Not distributing your work if published separately
  • Checking it in, then modifying the API as they see fit without regard to how it affects your closed program, and distributing the changed version through the normal channels (in effect guaranteeing dll hell for your users)

and of course

  • Writing, distributing and pushing a competing front end.

So you might ask yourself if it is worth it. (Remember that reputation based communities can have long memories for some kinds of slights.)


Past community reactions to dodgy approaches to the GPL have included:

  • The GPLv3 which is structured to make some of these tricks more difficult
  • A broad coalition in the linux kernel community against the inclusion of modules that exist to load closed-firmware.
  • Naming and shaming of violators, and (just as important) public recognition for those who have cleaned up their acts.
dmckee