[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.023 / U:8.536 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site