[lkml]   [1998]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: What is accepted into the standard kernel sources ?
[Disclaimer:  I am not a lawyer.  The following is not legal advice.]

>What I am trying to figure out is: What requirements are there for
>having new drivers added to the standard Linux kernel sources ?

The most important requirement is whether or not Linus
Torvalds agrees to accept your driver.

>The driver - the part that interfaces between the
>Linux kernel and the library - is released under GPL. The library
>itself is not available in source form, but could be included with the
>kernel sources, e.g. in the form of a uuencoded object file.
[Trimmed section makes it clear that the object library runs on the
host CPU, not the adaptor.]

The issues you raise have been discussed many times in various
newsgroups and mailing lists, especially gnu.misc.discuss. The actual
language of the GPL is imprecise on these matters, and is, in any
case, based upon technicalities of US copyright law that might not
apply elsewhere. I think there's little disagreement about the
following general conclusions:

1) There will be no certain outcome until either a legal
precedent is set in the courts or changes to the law occur.

2) The exact circumstances of the use of the binary code
are very important.

3) The enforcability of the GPL, and its interpretation, may vary
from country to country.

There is the issue of whether the official Linux Kernel
"source" tree is itself a "whole" or a "mere aggregation" for purposes
of copyright law. If the source tree is held to be a "whole", then it
would clearly violate the GPL to include non-GPLed code in it. If the
official Linux Kernel source tree is not a "whole", then including
non-GPLed code with it for distribution is explicitly allowed by GPL2
(Section 2, "mere agregation" paragraph).

The GPL, version 2, appears to prohibit the distribuion of a
pre-built kernel incorporating containing binary-only code. Such a
pre-built kernel is presumably a "whole", as defined by copyright law,
and the GPL requires that if a "whole" containing GPLed code is
distributed, then all components of the "whole" must be licensed and
distributed under the terms of the GPL. My reading is that this
applies to drivers that load binary-only adaptor code as well as to
ones with binary-only main-CPU code; I suppose that one could argue
that the adaptor code is "Data" rather than "Program", so far as the
main CPU is concerned, and skirt the issue, but there's nothing in
GPL2 to make that clear.

A pre-built kernel module containing binary-only code is a
raises slightly more delicate issues. The pre-built module
incorporates kernel interface definitions, the data components of
which should not be subject to copyright restrictions in the opinion
of many people; the kernel's assembly-language macro expansions are a
little more troubling in that regard. If the interface definitions
and/or macros are held to be copyrightable, it would probably be
possible to work around that restriction by substituting your own
versions; due to maintenance considerations, I seriously doubt that
such a product would be accepted into the mainline kernel, though.

An often-mentioned option is distributing the source code to a
GPLed file with the intention of having the ultimate end-user "perform
the link" to create a kernel image or kernel module. There have been
claims that "user-performs-the-link" violates GPL2 because the first
user must have created a non-distributable binary prior to
distributing the mixed (GPL source + non-GPL binary) package, and when
the second user also berforms the link, the non-distributable binary
has been "recreated", hence "distributed"; in my opinion this claim is
specious, as it violates both causality and the spirit of the GPL.

In particular, the strategy of distributing just the GPLed
driver code with the kernel, and instructing users to fetch the
non-GPLed library binaries from a repository and perform the link
themselves, is clearly allowed by GPL2 (Section 2, distribution as
separate works)). Whether it's allowed by Linus is another matter.

Reiterating: The most important requirement is whether or not
Linus Torvalds agrees to accept your driver.

Craig Milo Rogers

 \ /
  Last update: 2005-03-22 13:41    [W:0.139 / U:13.000 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site