Linux: The Gray Borders of the GPL

Submitted by Jeremy
on April 12, 2006 - 5:52pm

Linus Torvalds first released the Linux Kernel in September of 1991 under a very restrictive license requiring that the source code must always be available, and that no money could ever be made off of it. A few months later, he switched to the GPL, or GNU General Public License, the license that has been used for the Linux kernel source code ever since. A recent thread on the lkml discussed some of the gray areas of legality where it's not explicitly clear what the GPL allows. Alan Cox [interview] was one of many kernel developers to offer some insights:

"The boundary of the GPL is what is called a 'derivative work'. This is the basic concept in law used by copyright and essentially asks 'is this work created in such a way that it is based on the original work in some meaningful fashion'. Its a complex area of law and only a lawyer can give definitive answers."

"The simple 'application for Linux' case is clear. The simple 'kernel modification' case is also clear. In the middle is the vague area that is for lawyers."


From: Ramakanth Gunuganti [email blocked]
To:  linux-kernel
Subject: GPL issues
Date:	Mon, 10 Apr 2006 23:31:27 -0700 (PDT)

I am trying to understand the GPL boundaries for
Linux, any clarification provided on the following
issues below would be great:

As part of a project, I would like to extend the Linux
kernel to support some additional features needed for
the project, the changes will include:
  o  Modification to Linux kernel.
  o  Adding new kernel modules.
  o  New system calls/IOCTLs to use the kernel
modifications/LKMs.

All kernel changes including LKMs will be released
under GPL.

Questions:

(Any reference to GPL license while answering these
questions would be great)

1. If an application is built on top of this modified
kernel, should the application be released under GPL?
Do system calls provide a bounday for GPL? How does
this work with LKMs, all the code for LKMs will be
released but would a userspace application using the
LKMs choose not to use GPL?

2. If the application has to be packaged with the
Linux kernel, example: tarball that includes kernel +
application, can this application be released without
GPL. (The changes to Linux kernel are already released
under GPL).

3. How does this work if this application + kernel has
to run on a proprietary system on a seperate interface
card? Can I assume that once there is a clear hardware
boundary rest of the software for the system does not
have to be released under GPL? The software for the
interface card will be built and distributed
seperately from the rest of the software.

4. Can the GPL code and non-GPL code exist under the
same source tree?

5. In case of litigation, will there be pressure to
open up other parts of the software (non-GPL) running
on the same system but on other hardware components
interacting with this new package on a different
interface card?

Anyone trying to build a new application to work on
Linux must have these issues clarified, if you can
share your experiences that would be great too.

Thanks,
Ram


From: Alan Cox [email blocked] Subject: Re: GPL issues Date: Wed, 12 Apr 2006 00:12:19 +0100 On Llu, 2006-04-10 at 23:31 -0700, Ramakanth Gunuganti wrote: > 1. If an application is built on top of this modified > kernel, should the application be released under GPL? > Do system calls provide a bounday for GPL? How does > this work with LKMs, all the code for LKMs will be > released but would a userspace application using the > LKMs choose not to use GPL? The boundary of the GPL is what is called a "derivative work". This is the basic concept in law used by copyright and essentially asks "is this work created in such a way that it is based on the original work in some meaningful fashion". Its a complex area of law and only a lawyer can give definitive answers. The usual case is releasing an application for the Linux OS. It is unlikely that using system calls could be considered "derivative" and in case there is doubt the copying file with the Linux kernel specifically excludes this case because the authors don't want some peculiar legal interpretation to suddenely try and claim rights on applications running on Linux. Your questions really come into the realm of lawyers not programmers however especially the various fringe areas. The simple "application for Linux" case is clear. The simple "kernel modification" case is also clear. In the middle is the vague area that is for lawyers.
From: "Pramod Srinivasan" [email blocked] Subject: Re: GPL issues Date: Wed, 12 Apr 2006 00:01:02 -0700 > 3. Userspace code that uses interfaces that was not exposed to userspace > before you change the kernel --> GPL (but don't do it; there's almost > always a reason why an interface is not exported to userspace) > 4. Userspace code that only uses existing interfaces --> choose > license yourself (but of course, GPL would be nice...) > 5. Userspace code that depends on interfaces you added to the kernel > --> consult a lawyer (if this interface is something completely new, > you can *probably* use your own license for the userland part; if the > interface is more or less a wrapper of existing functionality, GPL) An example could be helpful in clarifying the GPL license. Suppose I use the linux-vrf patch for the kernel that is freely available and use the extended setsocket options such as SO_VRF in an application, do I have to release my application under GPL since I am using a facility in the kernel that a standard linux kernel does not provide? Suppose my LKM driver adds a extra header to all outgoing packets and removes the extra header from the incoming packets, should this driver be released under GPL.? In a way it extends the functionality of linux, if I do release the driver code under GPL because this was built with linux in mind, Should I release the application which adds intelligence to interpret the extra header under GPL? Thanks, Pramod
From: Jan Engelhardt [email blocked] Subject: Re: GPL issues Date: Wed, 12 Apr 2006 11:06:33 +0200 (MEST) <obligatory_ianal_marker> >Suppose I use the linux-vrf patch for the kernel that is freely >available and use the extended setsocket options such as SO_VRF in an >application, do I have to release my application under GPL since I am >using a facility in the kernel that a standard linux kernel does not >provide? > If vrf has no other uses besides your proprietary application, I'd shudder. >Suppose my LKM driver adds a extra header to all outgoing packets and >removes the extra header from the incoming packets, should this driver >be released under GPL.? In a way it extends the functionality of >linux, if I do release the driver code under GPL because this was >built with linux in mind, Should I release the application which >adds intelligence to interpret the extra header under GPL? > I don't know an answer (not even a rough one), since there is AFAICS one example of what you describe: the CiscoVPN kernel module. The source is available (so you have a chance to run it on any kernel you like), but it's got a typical EULA. No sign of GPL. Jan Engelhardt
From: Alan Cox [email blocked] Subject: Re: GPL issues Date: Wed, 12 Apr 2006 10:28:55 +0100 On Mer, 2006-04-12 at 11:06 +0200, Jan Engelhardt wrote: > I don't know an answer (not even a rough one), since there is AFAICS one > example of what you describe: the CiscoVPN kernel module. The source is > available (so you have a chance to run it on any kernel you like), but it's > got a typical EULA. No sign of GPL. A matter some people have on their list of targets...
From: David Weinehall [email blocked] Subject: Re: GPL issues Date: Wed, 12 Apr 2006 01:06:42 +0200 OK, simplified rules; if you follow them you should generally be OK: 1. Changes to kernel --> GPL 2. Kernel driver --> GPL 3. Userspace code that uses interfaces that was not exposed to userspace before you change the kernel --> GPL (but don't do it; there's almost always a reason why an interface is not exported to userspace) 4. Userspace code that only uses existing interfaces --> choose license yourself (but of course, GPL would be nice...) 5. Userspace code that depends on interfaces you added to the kernel --> consult a lawyer (if this interface is something completely new, you can *probably* use your own license for the userland part; if the interface is more or less a wrapper of existing functionality, GPL) And of course, I'm not a lawyer either... Regards: David Weinehall -- /) David Weinehall [email blocked] /) Northern lights wander (\ // Maintainer of the v2.0 kernel // Dance across the winter sky // \) http://www.acc.umu.se/~tao/ (/ Full colour fire (/
From: Mark Lord [email blocked] Subject: Re: GPL issues Date: Tue, 11 Apr 2006 23:18:04 -0400 Joshua Hudson wrote: > On 4/11/06, David Weinehall [email blocked] wrote: >> OK, simplified rules; if you follow them you should generally be OK: .. >> 3. Userspace code that uses interfaces that was not exposed to userspace >> before you change the kernel --> GPL (but don't do it; there's almost >> always a reason why an interface is not exported to userspace) >> >> 4. Userspace code that only uses existing interfaces --> choose >> license yourself (but of course, GPL would be nice...) Err.. there is ZERO difference between situations 3 and 4. Userspace code can be any license one wants, regardless of where or when or how the syscalls are added to the kernel. Cheers
From: Arjan van de Ven [email blocked] Subject: Re: GPL issues Date: Wed, 12 Apr 2006 07:31:26 +0200 On Tue, 2006-04-11 at 23:18 -0400, Mark Lord wrote: > Joshua Hudson wrote: > > On 4/11/06, David Weinehall [email blocked] wrote: > >> OK, simplified rules; if you follow them you should generally be OK: > .. > >> 3. Userspace code that uses interfaces that was not exposed to userspace > >> before you change the kernel --> GPL (but don't do it; there's almost > >> always a reason why an interface is not exported to userspace) > >> > >> 4. Userspace code that only uses existing interfaces --> choose > >> license yourself (but of course, GPL would be nice...) > > Err.. there is ZERO difference between situations 3 and 4. > Userspace code can be any license one wants, regardless of where > or when or how the syscalls are added to the kernel. that is not so clear if the syscalls were added exclusively for this application by the authors of the application....
From: "jdow" [email blocked] Subject: Re: GPL issues Date: Tue, 11 Apr 2006 22:45:55 -0700 > On Tue, 2006-04-11 at 23:18 -0400, Mark Lord wrote: >> Joshua Hudson wrote: >> > On 4/11/06, David Weinehall [email blocked] wrote: >> >> OK, simplified rules; if you follow them you should generally be OK: >> .. >> >> 3. Userspace code that uses interfaces that was not exposed to userspace >> >> before you change the kernel --> GPL (but don't do it; there's almost >> >> always a reason why an interface is not exported to userspace) >> >> >> >> 4. Userspace code that only uses existing interfaces --> choose >> >> license yourself (but of course, GPL would be nice...) >> >> Err.. there is ZERO difference between situations 3 and 4. >> Userspace code can be any license one wants, regardless of where >> or when or how the syscalls are added to the kernel. > > that is not so clear if the syscalls were added exclusively for this > application by the authors of the application.... Consider a book. The book is GPLed. I do not have to GPL my brain when I read the book. I add some margin notes to the GPLed book. I still do not have to GPL my brain when I read the book. {^_^} Joanne Dow
From: David Weinehall [email blocked] Subject: Re: GPL issues Date: Wed, 12 Apr 2006 08:01:22 +0200 On Tue, Apr 11, 2006 at 10:45:55PM -0700, jdow wrote: > >On Tue, 2006-04-11 at 23:18 -0400, Mark Lord wrote: > >>Joshua Hudson wrote: > >>> On 4/11/06, David Weinehall [email blocked] wrote: > >>>> OK, simplified rules; if you follow them you should generally be OK: > >>.. > >>>> 3. Userspace code that uses interfaces that was not exposed to > >>userspace > >>>> before you change the kernel --> GPL (but don't do it; there's almost > >>>> always a reason why an interface is not exported to userspace) > >>>> > >>>> 4. Userspace code that only uses existing interfaces --> choose > >>>> license yourself (but of course, GPL would be nice...) > >> > >>Err.. there is ZERO difference between situations 3 and 4. > >>Userspace code can be any license one wants, regardless of where > >>or when or how the syscalls are added to the kernel. > > > >that is not so clear if the syscalls were added exclusively for this > >application by the authors of the application.... > > Consider a book. The book is GPLed. I do not have to GPL my brain when > I read the book. > > I add some margin notes to the GPLed book. I still do not have to GPL > my brain when I read the book. This is possibly the worst comparison I've read in a long long time... It's rather a case of: Consider a book. The book is GPLed. You take add one chapter to the book. The resulting book needs to be GPLed. Now, instead of adding to that book, you "export" parts of the book by copying them into your book. Your new book wouldn't work without the copied parts. Your resulting book needs to be GPLed. Your "read the book"-case is only comparable to the case of building a userspace binary for local use that only uses existing interfaces, vs building one that uses exported private interfaces. In both cases, since you're not distributing your modified version, you're free to do whatever you like. Regards: David -- /) David Weinehall [email blocked] /) Northern lights wander (\ // Maintainer of the v2.0 kernel // Dance across the winter sky // \) http://www.acc.umu.se/~tao/ (/ Full colour fire (/ -
From: "jdow" [email blocked] Subject: Re: GPL issues Date: Tue, 11 Apr 2006 23:26:37 -0700 From: "David Weinehall" [email blocked] > On Tue, Apr 11, 2006 at 10:45:55PM -0700, jdow wrote: >> >On Tue, 2006-04-11 at 23:18 -0400, Mark Lord wrote: >> >>Joshua Hudson wrote: >> >>> On 4/11/06, David Weinehall [email blocked] wrote: >> >>>> OK, simplified rules; if you follow them you should generally be OK: >> >>.. >> >>>> 3. Userspace code that uses interfaces that was not exposed to >> >>userspace >> >>>> before you change the kernel --> GPL (but don't do it; there's almost >> >>>> always a reason why an interface is not exported to userspace) >> >>>> >> >>>> 4. Userspace code that only uses existing interfaces --> choose >> >>>> license yourself (but of course, GPL would be nice...) >> >> >> >>Err.. there is ZERO difference between situations 3 and 4. >> >>Userspace code can be any license one wants, regardless of where >> >>or when or how the syscalls are added to the kernel. >> > >> >that is not so clear if the syscalls were added exclusively for this >> >application by the authors of the application.... >> >> Consider a book. The book is GPLed. I do not have to GPL my brain when >> I read the book. >> >> I add some margin notes to the GPLed book. I still do not have to GPL >> my brain when I read the book. > > This is possibly the worst comparison I've read in a long long time... > > It's rather a case of: > > Consider a book. The book is GPLed. You take add one chapter to the > book. The resulting book needs to be GPLed. I am with you this far. > Now, instead of adding to that book, you "export" parts of the book by > copying them into your book. Your new book wouldn't work without the > copied parts. Your resulting book needs to be GPLed. Nothing is exported except to the reader's brain aka user space. It is not exported to a new book. Exporting a new interface is equivalent to making the marginal notes. You can still READ the book without GPLing your brain or your application. You can make additional temporary marginal notes, place data into the kernel which causes the kernel to disgorge some data. > Your "read the book"-case is only comparable to the case of building > a userspace binary for local use that only uses existing interfaces, > vs building one that uses exported private interfaces. In both cases, > since you're not distributing your modified version, you're free to > do whatever you like. Either you cannot have a non-GPL program on the kernel OR you can. It makes no difference if the kernel is modified (the modification is GPL) or the kernel is not modified. The modified kernel must be distributed as source if requested. The application does not unless EVERY application must be distributed with source. There is apparently no argument with regards to applications that are not GPL running on LINUX. Therefore there should be no argument with an application that uses a newly exported API being GPLed. If you are considering the potential case that the modification is made to the kernel and then the source for that modification is also used in user space in an application requiring the application to be GPLed then you must first prove it was done in that order rather than the other order. Code can also be released dual licensed. GPL for the kernel and private for the user space, if it is done so by the owner or creator of the code in question. Anything else is absurd on its face. {^_^} Joanne Dow
From: Arjan van de Ven [email blocked] Subject: Re: GPL issues Date: Wed, 12 Apr 2006 16:51:32 +0200 On Tue, 2006-04-11 at 22:45 -0700, jdow wrote: > > On Tue, 2006-04-11 at 23:18 -0400, Mark Lord wrote: > >> Joshua Hudson wrote: > >> > On 4/11/06, David Weinehall [email blocked] wrote: > >> >> OK, simplified rules; if you follow them you should generally be OK: > >> .. > >> >> 3. Userspace code that uses interfaces that was not exposed to userspace > >> >> before you change the kernel --> GPL (but don't do it; there's almost > >> >> always a reason why an interface is not exported to userspace) > >> >> > >> >> 4. Userspace code that only uses existing interfaces --> choose > >> >> license yourself (but of course, GPL would be nice...) > >> > >> Err.. there is ZERO difference between situations 3 and 4. > >> Userspace code can be any license one wants, regardless of where > >> or when or how the syscalls are added to the kernel. > > > > that is not so clear if the syscalls were added exclusively for this > > application by the authors of the application.... > > Consider a book. The book is GPLed. I do not have to GPL my brain when > I read the book. > > I add some margin notes to the GPLed book. I still do not have to GPL > my brain when I read the book. wrong comparison you have a book, book is gpl'd. You have another book with another plot. THat other book doesn't need to be gpl'd. you have a book, book is gpl'd. Your other book now requires the first book to change it's plot so that the two books form a series. This is where your lawyer will get nervous. Think of it differently perhaps, and it's a question of "where is the boundary of the work" You can see the situation with the syscall change in 2 ways: 1) kernel + modification is a work userspace app is a separate work or 2) kernel is a work userspace app and the kernel modification are together one work in this 2nd case you have a GPL issue. The question is if your lawyer can convince the judge that the second interpretation is unreasonable. That may or may not be easy, depending on the exact nature of the modification.
From: Kyle Moffett [email blocked] Subject: Re: GPL issues Date: Tue, 11 Apr 2006 09:49:39 -0400 On Apr 11, 2006, at 02:31:27, Ramakanth Gunuganti wrote: > I am trying to understand the GPL boundaries for Linux, any > clarification provided on the following issues below would be great: > [...] > Anyone trying to build a new application to work on Linux must have > these issues clarified, if you can share your experiences that > would be great too. If you're planning to make money off of any code developed based in part off of the Linux Kernel, you should definitely contact a lawyer familiar with the linux kernel and ask them. Any advice you get from this list should probably come prefixed with "IANAL", and as such isn't worth terribly much. Cheers, Kyle Moffett
From: Ramakanth Gunuganti [email blocked] Subject: Re: GPL issues Date: Tue, 11 Apr 2006 08:49:44 -0700 (PDT) Thanks for the replies, talking to a lawyer seems to be too stringent a requirement to even evaluate Linux. Who would be the ultimate authority to give definitive answers to these questions? Since it's the Linux kernel that's under GPLv2, any work done here should be released under GPLv2. That part seems to be clear, however any product would include other things that could be proprietary. If Linux kernel is made part of this proprietary package, how does the distribution work. Can we just claim that part of the package is under GPL and only release the source code for the kernel portions. -Ram
From: "Dave Neuer" <mr.fred.smoothie@pobox.com> Subject: Re: GPL issues Date: Tue, 11 Apr 2006 12:23:36 -0400 On 4/11/06, Ramakanth Gunuganti [email blocked] wrote: > > Thanks for the replies, talking to a lawyer seems to > be too stringent a requirement to even evaluate Linux. > Who would be the ultimate authority to give definitive > answers to these questions? A lawyer. The questions you are asking are inherently legal ones, and any answer you get on this mailing list (which is a technical list, not a legal one) is not going to be the *real* answer. The "ultimate authority" you're asking for here is the court system, so if you're concerned about legal liability for copyright infringement due to a product you plan to distribute, you need to hire a lawyer. Dave

Related Links:

Hmmm...

on
April 12, 2006 - 6:19pm

This bothers me:


Thanks for the replies, talking to a lawyer seems to
be too stringent a requirement to even evaluate Linux.
Who would be the ultimate authority to give definitive
answers to these questions?

It seems to me, if you're in business and are making contracts, you shouldn't be doing this without a lawyer in the wings--regardless of whether the contract involves the GPL.

Ridiculous americans

Anonymous (not verified)
on
April 13, 2006 - 6:23pm

Ridiculous americans

"Derivative Work"

Zihemothan (not verified)
on
April 13, 2006 - 9:03am

The test in my mind has always been "could this code be picked up and dropped into something else with only cosmetic changes". If it could, it is not derivative.

So: if I create code for one purpose and then port it to linux, that code can never be derivative no matter how much I need to change linux in order to get it to work.
If I need to change my code, rather than Linux's, it would depend on if I am doing so using published interfaces.

Personally I think the whole "Derived work" issue is bullshit anyway. Unless I took your function and modified it (or wrote my own function directly based on mimicking the functionality of your function), copyright law should have no place in the matter. Every time I look at this issue I can't help but think of trying to copyright a hammer.

Yes, Copyright law has every place in derivations and modifications of the functions themselves. But /use/ of something should never be copyrighted. Any time you write a function, that's an interface, in my mind.

All of these statements are merely statements and should not neccessarily be taken literally. As a blanket test for interpretation: If you disagree, re-read the statement until you interpret it in such a way that you agree. :)

Well, there's use and there's

Anonymous (not verified)
on
April 13, 2006 - 9:08pm

Well, there's use and there's use. If you are distributing someone elses code along with your code that "just uses" it, the whole derived work thing has to come into play, and if disputed a court has to decide.

Re: Well, there's use and there's

Anonymous (not verified)
on
April 14, 2006 - 2:54am

If you are just distributing your code along with a GPL'd code, the GPL explicitly says you need not GPL your code.

I hate lawyers

Covarde Anônimo (not verified)
on
April 14, 2006 - 5:57am

Did I already say I hate lawyers?

yet another ianal comment

Anonymous (not verified)
on
April 14, 2006 - 11:31am

If your GPL'd kernel module makes any sense even without
your non-GPL userspace-part, I wouldn't expect problems.
It would have to be feasible for anyone to write an
alternative program that makes full use of your GPL'd
kernel modules (or the interfaces it offers).
That might even require proper documentation of the new
interface.

If (as an extreme counter example) the GPL'd kernel module
requires the ioctl-data to be cryptically signed with a
non-disclosed key, whose public counter-key is part of the
kernel-module, then you're likely to get legal problems.

But again, ianal.

NOT a gray border of the GPL

Chris Waters (not verified)
on
April 14, 2006 - 3:00pm

Much as I suspected, this is not about the "gray borders of the GPL", this is about the gray borders of copyright law. The exact same arguments could be raised when, say, making a work which is arguably derivative of a proprietary work to which you have access through an NDA-and-license or such, or even with a BSD-licensed work, if you (for whatever reason) didn't want to comply with the simple credit-where-credit's-due terms of the BSD license.

People often try to make out that the GPL is too complicated or tricky, and thus should be avoided. Let's not make it even easier for them to spread such FUD. There is nothing GPL-specific about this debate.

Good point

Anonymous (not verified)
on
April 18, 2006 - 6:16am

>this is not about the "gray borders of the GPL", this is about the >gray borders of copyright law.

Good point.

An obvious example of the NDA & license problem you mention is SCO group vs. IBM. TSG are (currently) arguing that IBM improperly reused IBM's own code after it had been used with code supplied by TSG under a NDA. I'm not saying their argument makes much sense (far too many reasons to enumerate!), but it shows this kind of dispute isn't limited to GPL/non-GPL license boundaries.

It Isn't That Fuzzy

on
April 16, 2006 - 9:02pm

So as I understand it whether or not something is a copyright violation (damanges are another thing) doesn't depend on intent at all. Also it is my understanding that from the perspective of copyright law who wrote the original copyrighted code is also irrelevant, all that matters is the owner of the copyright and the conditions under which it is liscensced. Or to say this last part differently if I write some code for the linux kernel and assign the copyright to the FSF it has exactly the same status in copyright law as if Linus had done the same thing.

Given these two principles it unavoidably follows that it is perfectly legal to add a new GPLed interface to the kernel and then write a non-GPL userspace app using that interface. The fact that it was me instead of a core kernel developer wrote the GPLed code in the kernel my app is using simply isn't legally relevant. Nor is the fact that I am arguably using this to get around the spirit of the GPL.

In fact to answer otherwise would pose horrible obstacles to linux Kernel development. Frequently kernel development will require expousing additional kernel structures to applications, e.g., the hypervisor stuff recently. Some of these underlying kernel structures/data/functions will be copyrighted by random people and the only rights the core kernel team has to them is through the GPL. Since copyright law doesn't say 'Linus is special' if I am violating the law exposing some part of the kernel for a userspace application to use then so is Linus.

I could not agree more - this is not fuzzy

NChoudhury (not verified)
on
April 17, 2006 - 9:55am

I could not agree more, as far as the 'GPL' and the Kernel is concerned Linus is no more special than you or I. Exactly as the previous author wrote - it does not matter who wrote the interface and why. The code that goes into the kernel is GPL period; even if it is tailored just for the user-land application. It does not have to be well documented or even work.

The kernel with the extension is a product and GPL, the user-land program is another program and is whatever the developer wants it to be it is as simple as that.

It's not license so much as it is what's in mainline

on
April 17, 2006 - 10:15am

The other thing to keep in mind here is that the kernel developers have every right to turn down patches they don't like, including patches that open interfaces they don't care to open. Furthermore, they can choose to actively break internal interfaces that were never meant to be exposed to user-space.

So, nothing stops me from making a distributing a modified kernel with a GPL'd interface that only my proprietary application uses. But, I have to talk people into running my kernel.

Furthermore, nothing stops me from making non-GPL'd kernel modifications and linking them directly into the kernel. I can't distribute the resulting kernel though. But, I can give you the non-GPL'd patch, and instruct you how to patch and build the kernel yourself. You can use the result, but you can't redistribute it. This fails if you can prove my non-GPL'd patch in isolation was somehow derived from the kernel. That argument may hold sway if it gets down and dirty with internal kernel structures. It may not hold sway if it's a largely separate blob of code that plugs into a high-level interface, such as a filesystem might. This is the gray area, and the kernel developers have NO incentive to sharpen the boundaries and every incentive to discourage folks from playing in this space.

So, really, the exported-for-GPL-only stuff that the kernel has serves as a barrier for what will get in the mainline kernel, not a barrier for what people can write. Not being in mainline is a deterrent to many, so that's effective. Not being able to redistribute a modified kernel is even more effective.

No

Steve Parker (not verified)
on
April 17, 2006 - 6:59pm

No, you missed a point here. Your kernel patch, by definition, is derivative of the kernel. You would have to get a particularly good lawyer to prove any other case.

Patches are derivative works

Wol (not verified)
on
April 18, 2006 - 11:19am

If the modified code contains somebody else's code, then it's bound by those restrictions. If it doesn't, then it's not.

If I write a modification to the kernel, and distribute it AS SOURCE, I can forbid *MY* code from being distributed under the GPL.

And I strongly suspect that any code by other people that gets included in my patch is NOT protected by copyright. "Fair use" and all that.

You might not like it, but if I am distributing MY work, and other people's work is only a necessary incidental of it being distributed as a patch file, then I can almost certainly distribute my stuff as "proprietary only".

I doubt any *customers* would put up with that, but I can't see any legal way of stopping a *supplier* from *trying*.

Cheers
Wol.

I doubt it

Anonymous (not verified)
on
April 19, 2006 - 12:34am

Is your patch applicable *only* to the Linux kernel? If so, then it clearly seems to be a derivative work and must be licensed under the GPL (if distributed). I imagine that it is similar to "fan fiction": if you write a sequel to "The Da Vinci Code", you will get sued (and lose) even if you didn't include any verbatim text from the original Dan Brown novel. There is more to copyright that the mere words or pieces of code involved.

In fact, I would guess that distributing something as a patch file makes it even more likely to be ruled a derivative work. A patch file is almost by definition a derivation of something else.

And why would other people's modifications of your code fall under "fair use"? Their works would undoubtedly be derivations of your patch, but that doesn't mean that you have some sort of claim to them; you could stop them from distributing those modifications (assuming that your code wasn't GPL'd), but you wouldn't necessary get free access to them, either.

'fraid not

on
April 22, 2006 - 1:36am

"If I write a modification to the kernel, and distribute it AS SOURCE, I can forbid *MY* code from being distributed under the GPL."

If you are modifying the [GPL] kernel, you are deriving a new product from GPL'd source. The derived product must also be licensed under the GPL, which allows your code to be distributed under the GPL. If you do not want your code to be GPL'd, you are forbidden from distributing that derived work in any form. You may continue to use it "internally," however.

Hold on there Professor.

on
April 22, 2006 - 10:57am

Ok, let's say I write some code. I also write directions on how to hook that code into the Linux kernel. At this point, my code is not derivative of the Linux kernel.

If I follow those directions myself, the result is derivative of the Linux kernel. I can only distribute the result under the terms of the GPL. The combination doesn't force a retroactive license on my original code though.

So, I can distribute my code and instructions under a license other than GPL, and others can integrate my code with the Linux kernel. The result, if I use a non-GPL-compatible license, is not distributable under any license. But nothing in the GPL removes the right of that end user to run the resulting code. So, as long as my license permits it, they can at least run the code, even if they can't redistribute it.

For example, suppose I make a proprietary ZLib implementation. Now I tell people how to update the ZLib implementation in the kernel to use mine. At what point did my proprietary ZLib implementation derive from the Linux kernel? Hint: Never. It'd be no different than if I posted directions on how to use someone elses binary-only-blob proprietary implementation.

The result is not redistributable, in any case, unless the proprietary version's license is GPL compatible. (W/ a binary blob, it is generally not.)

Wha?

on
April 23, 2006 - 2:50pm

I assume you are only trying to clarify what I said because I don't see how what you just wrote is related to either what I said nor what the person I responded to said.

However, it is also true the Linux kernel is not strictly GPL, which forbids binary blobs, but which the Linux kernel at least implicitly allows (aka Linus' interpretation of 'derived' wrt NVidia et al). If you remove the binary blob bit, anyone taking your code from the GPL'd work is using it as licenced under the GPL.

Ok... what's the confusion here?

on
April 23, 2006 - 9:52pm

They said: "If I write a modification to the kernel, and distribute it AS SOURCE, I can forbid *MY* code from being distributed under the GPL."

You responded: "If you are modifying the [GPL] kernel, you are deriving a new product from GPL'd source. The derived product must also be licensed under the GPL, which allows your code to be distributed under the GPL."

I disagreed with you and agreed with the person you were replying to. That is, if I write code that can be used as a kernel modification, it does not necessarily derive from the kernel. Therefore, I can distributed it under whatever license I like, and not violate the GPL. The "Proprietary ZLib" example is a great example, but not the only one.

Individuals can drop in my code and use it for themselves. They cannot distribute the result. Also, I can't redistribute a kernel that actually incorporates my code, unless I offer that code is under the GPL v2 license.

The confusion is

on
April 29, 2006 - 10:54am

The confusion is simply this: I think that "If I write a modification to the kernel" and "If you are modifying the [GPL] kernel" are equivalent. Modifying something creates a new derivative work; that's what the GPL is all about. The statement was not "If I write some code that someone else can integrate ..." it was "If I write a modification" - clearly derivative.

Don't you see the contradiction in your post?

דרושים (not verified)
on
September 6, 2006 - 9:00am

On one hand you say that "Modifying something creates a new derivative work"
But on the other hand in the end of your post you confidently determines that any modification is clearly a derivative...

Hey, but this is to "legal stuff" for me...

Is it as simple as that? Why

Anonymous (not verified)
on
April 18, 2006 - 2:00pm

Is it as simple as that? Why do we need the LGPL? Can't the kernel be seen as an underlying library? What is the difference between linking against a library and using the drivers inside the kernel?

You have a piece of code. It is released under a specific license. That license determines the use and reuse of that piece of code. It may also restrict distribution along with, for example, non-GPL code.

This is all pretty clear -- except that considering use of kernel code and library code as different things is something which seems to be total nonsense: it is not based on strict logical arguments, but rather on "we need that, but we don't like the other thing".

Comments?

It's an Either OR Choice

on
April 20, 2006 - 2:35am

My point is that there are exactly two ways you can interpret the law and the GPL.

1) Anyone may change or modify the kernel to expose additional functionality to userland provided they make these changes availible under the GPL (particularly the linux interp where apps aren't derived works) and the anyone can use this interface in their proprietary app without being required to release it as a derived work.

2) The GPL doesn't allow anyone to expose additional kernel functionality to userland programs in a way which doesn't require those programs to be made availible under the GPL unless they personally own the copyright to the parts of the kernel providing the functionality they expose. So in particular Linus cannot expose more kernel functionality for hypervisors to use AND declare that these hypervisors need not be released under the GPL (he is of course free to code up the interface and release it but he can't unilaterally change the liscensing of the kernel code he is exposing if *anyone* else contributed parts of it and didn't reassign copyright so any hypervisor program that makes use of the interface would need to be opensourced).

You can choose either one but it has to be one of the two and clearly the linux development effort is interpreting things in way 1 and this seems to be tacitly understood by people who submit code, i.e., that linus might later make their functionality availible to closed source programs through an interface.

Basically the difference between this case and the standard GPL/LGPL difference is the clarifications in the copying file that say userland applications are not derived works and the culture of development that creates an understanding that 2 isn't the case.

Or to put it differntly there is a gray area as to whether application programs really count as derived works and if so you couldn't create any non opensource apps unless the kernel was under the LGPL. This grey area is settled by the copying file included with the kernel and by settling this area they automatically settle the issue we are talking about as well. If applications aren't derived works then they aren't derived works PERIOD. Whether or not the kernel was modified to make them work is irrelevant.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.