LWN.net Logo

binary modules Modules and linking

binary modules Modules and linking

Posted Oct 2, 2003 21:25 UTC (Thu) by dwmw2 (subscriber, #2063)
In reply to: binary modules Modules and linking by jeff@uclinux.org
Parent article: LinkSys and the GPL - again

1. you didn't answer the question. Do you think the whole of the firmware is a GPL violation?

All such questions are meaningless and academic. There's no right answer until it's actually determined in a court of law. But since I'm volunteering an opinion on a similar question which I do intend to make real, I suppose it's only fair that I try to answer this one...

I'm fairly sure that any court would find that the Linksys firmware as a whole is 'a work based on the Program'. During normal operation, it runs entirely in kernel mode, forwarding packets between its two (or more) network interfaces. The code which performs those operations cannot reasonably be considered as anything other than a coherent whole.

The question of whether the ancillary userspace programs which allow occasional configuration should also be considered part of that whole is less clear. When taken in conjunction with the clear intent of the exception for userspace programs, I suspect a court would be likely to rule in the negative. I couldn't be entirely sure of that though.

2. ... If you disagree with this interp of "derived work" that's certainly ok, but it's not a case of my not using terms not relevant to the GPL

OK; then I shall interpret "mkcramfs is not a linker" as a statement that joining files onto a file system image does not make them derived works of each other, and I shall agree with you on that point.

3. ... Again I ask does this mean you think embedded linux must always use only Free Software, and specifically that this whole image is a GPL violation?

I've offered my speculation on this above. I suspect a court would rule that it is not, as long as the kernel modules are available under the terms of the GPL.

4. The exception does exist, because people have relied on it with the full knowledge of the community. I have said that it's[sic] status is grey.

You seem to be confused here with either trademark law, where you lose what you don't protect, or with estoppel. Neither are relevant in this case. Linus may personally be restrained by equitable estoppel if he were to attempt to sue for GPL violation with respect to a binary-only module. I certainly am not.

His statement that it might be OK holds no more weight than mine that it is not. They are both merely opinions, and neither is right or wrong until a court decides on the matter. His statement is no more an 'exception' than mine is, merely an interpretation. This is because neither are unanimously agreed by all the copyright holders, and hence noither can actually change anything.

What I suspect will carry more weight, ironically, is the exception which he actually did make for userspace. Since it was clearly opined that userspace needed such an exception in order to be considered other than a derived work, it cannot possibly by held that loadable modules, which are far more incestuously intertwined with the kernel itself, do not need such an exception to be made unanimously by all copyright holders. Such an exception does not exist and cannot now be made without unanimous consent.

5. ... That is a reason the definition of "derived" has to be sharper, and why I offer "linking".

That seems to be clearly incompatible with the definition which was intended by the original licence, since it was deemed necessary to explicitly make an exception for userspace; an exception which would not have been necessary if this were the intended meaning.

6. ... Does this mean you think that all things linked with libc5 and uC-libc are derived works of the kernel? Clearly not?

Due to the provisions of the exception which was made for userspace, I believe that they are not.

I for one don't want to see a whole class of device not use Linux because vendors will not let the drivers be free or because a government agency will not... as long as we keep building the foundation.

Then your goals differ violently from mine and those of many people with whom I've discussed the issue. I do want to see people refrain from using and benefiting from my code, if they are unable or unwilling to conform to its licence and release their derivative work as Free Software.

If I wanted people to feel free to take my code and use it in non-Free Software, then I could have released it under the BSD licence, or 'GPL but not if you really really don't feel like it', rather than the GPL.

I don't. I didn't.


(Log in to post comments)

binary modules Modules and linking

Posted Oct 3, 2003 22:04 UTC (Fri) by Gady (subscriber, #1141) [Link]

The entire discussion here centers around what is a "derived work" and what is a "mere aggregation" as in the last paragraph of section 2 of the GPL.

However, going back to Linus' comment about the terms for binary modules, we see that there is no way this comment can be interpreted except this: binary modules confirming with these coditions are considered an aggregation. A company which simply distributes a binary driver stand alone is undeniably complying with the GPL, hence these terms set by Linus are irrelevant. Thus this is the only possible interpretation of this comment.

While someone might claim that this is only Linus' interpretation of these two terms, this would not be quite so simple. Interpretations tend to take on a legal signifcance of their own with time. This is especially true if the interpretation stood the test in court, but even if this case, an interpretation made publicly and not openly refuted carries with it a certain legal weight. How much is of course for a court to decide, but this is certainly NOT just Linus' personal opinion.

binary modules Modules and linking

Posted Oct 3, 2003 23:47 UTC (Fri) by dwmw2 (subscriber, #2063) [Link]

The entire discussion here centers around what is a "derived work" and what is a "mere aggregation" as in the last paragraph of section 2 of the GPL.

And also the meaning of "as separate works" and "as part of a whole which is a work based on the Program."

A company which simply distributes a binary driver stand alone is undeniably complying with the GPL, hence these terms set by Linus are irrelevant.

It is not possible to create a kernel module without extensive use of the Linux kernel headers and interfaces, including many inline functions. It cannot be created as a work in isolation.

It was deemed necessary by Linus to make specific exception for userspace to use the ABI defined in those headers. Userspace makes little or no use of inline functions, uses a far smaller amount of the content of these headers than kernel modules do, and does not link dynamically to the kernel.

Such an exception would be redundant if the meaning of "derived work" intended by Linus and the original copyright holders did not, without such exception, include userspace programs using those headers and making system calls into the kernel.

The presence of the exception serves as a clarification, with relevance because it was present and accepted from the beginning, that the originally intended meaning of 'derived work' would, without the exception, have included userspace.

If userspace needs such an exception, it cannot possibly be found that kernel modules do not, since they are so much more closely based on the kernel.

It's clear that there is no exception for modules.

On what part of the above are you still confused?

Interpretations tend to take on a legal signifcance[sic] of their own with time. This is especially true if the interpretation stood the test in court, but even if this case, an interpretation made publicly and not openly refuted carries with it a certain legal weight.

How can it have been refuted without going to court? A court is the only form of proof that there can be. I shall assume you meant 'disputed' or 'rebuked'.

I believe you are thinking of the principle of equitable estoppel, to which I referred before. While that may restrain Linus himself from bringing a case against a distributor of binary-only modules, it doesn't affect third parties such as myself.

binary modules Modules and linking

Posted Oct 9, 2003 18:10 UTC (Thu) by AJWM (guest, #15888) [Link]

It is not possible to create a kernel module without extensive use of the Linux kernel headers and interfaces

While that may be true, it may also be irrelevant. Courts have ruled that mere use of header files does not constitute copyright infringement. Header files are more functional than expressive in nature, so a weaker standard applies. (Fair use may also apply.) This came up in the BSD vs ATT/ULS case, and was one of the reasons that the judge ruled that ATT ruled against ATT (there were other reasons, of course).

If that's the case, then a binary module (not derived from any GPL'd .c files, but possibly #including .h files) shipped by itself (think nVidia drivers) may well be allowable. That it is arguably non-functional without being loaded into the kernel is also irrelevant; copyright is about expression, not function.

binary modules Modules and linking

Posted Oct 10, 2003 12:54 UTC (Fri) by dwmw2 (subscriber, #2063) [Link]

"While that may be true, it may also be irrelevant."

I agree, since the GPL clearly requires, in some circumstances, that the source of even non-derived works must be released under the terms of the GPL.

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

binary modules Modules and linking

Posted Oct 10, 2003 11:58 UTC (Fri) by Wol (guest, #4433) [Link]

"The presence of the exception serves as a clarification, with relevance because it was present and accepted from the beginning, that the originally intended meaning of 'derived work' would, without the exception, have included userspace.

"If userspace needs such an exception, it cannot possibly be found that kernel modules do not, since they are so much more closely based on the kernel."

I think you will find that intended meaning of 'derived work' was NOT clear as to whether it included user space. The exception MAY NOT be needed, but was given in order to make the status of user space CLEAR and UNAMBIGUOUS whereas it was a grey area before.

Oh, btw, Linus opinion is more important than most peoples' over kernel copyright issues because he is a holder of copyrights in the kernel. Over and above that it is more important than ANYONE else because he is the holder of the kernel copyright. There is such a thing - it is separate from the individual copyrights that make up the kernel - and it overarches but does not override those individual copyrights. But as the owner of the overarching kernel copyright, a judge is bound to place far more weight on Linus' interpretation of the rules as they apply to the kernel, than he has to anybody else.

Cheers,
Wol

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds