old-www/HOWTO/Module-HOWTO/copyright.html

319 lines
11 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Copyright Considerations With LKMs</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Linux Loadable Kernel Module HOWTO"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Differences Between Versions Of Linux"
HREF="linuxversions.html"><LINK
REL="NEXT"
TITLE="Related Documentation"
HREF="x973.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Linux Loadable Kernel Module HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="linuxversions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x973.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="COPYRIGHT"
></A
>13. Copyright Considerations With LKMs</H1
><P
>A perennial question about LKMs is whether the terms of GPL apply to
one, considering that the Linux kernel is distributed under GPL. For
example, is it OK to ship an LKM in binary only form? This section
covers the copyright issues surrounding LKMs, which are as interesting
as they are complex. Fair warning: we don't reach a conclusion. The
law is unsettled and there are plenty of good but conflicting
arguments.</P
><P
>Remember that countries have varying copyright laws, so even if you
figure out the answer to a question in one country, it might be
different in another. But copyright laws are actually remarkably
similar, and this section won't go into the matter in enough detail
that it will really make a difference.</P
><P
>Let's start at the beginning and look at what a copyright is.</P
><P
>Primarily, a copyright is a person's right to stop other people from
copying something. It is a legal right, not a moral one. That means
it is created by law to bring about some practical effect, rather than
something that people believe people are naturally entitled to.</P
><P
>The primary effect that copyright seeks to bring about is that an author gets
paid for what he created. Some people believe that is a valid goal
itself, because an author has a natural right to the value that he
creates. But historically, that isn't the real goal of copyright.
The real goal is secondary to making the author get paid for his work:
It causes the author to create in the first place. An author is more
likely to spend time and money writing if he will get paid for it.</P
><P
>The actual operation of copyright law achieves that goal only
approximately. We've all seen cases where the law is used to transfer
wealth in ways that don't contribute to that goal at all. For
example, a music publisher denies a person permission to copy a song
that he wouldn't have paid for anyway. Legislators think of that as
collateral damage -- what copyright law does to cause things to get
written makes up for the senseless copy restrictions in other cases.</P
><P
>But when it comes to LKMs, there is another, much more complex area of
copyright law that matters: derivative works. Copyright law gives an
author the right to stop someone from creating a derivative work. A
derivative work is <EM
>not</EM
> a copy of anything the
author wrote. So what is it?</P
><P
>The definition of derivative work is elusive, but here are some
examples: When you translate a book from English into French, the
French version is a derivative work of the English work. If you write
a new chapter for a novel, your new chapter is a derivative work of
the novel. If you write a whole new book for the Harry Potter series,
with the same characters and settings, that is a derivative work of
all the Harry Potter books. If you draw a Dilbert cartoon you thought
of on a birthday card, that is a derivative work of all the Dilbert
strips, books, etc.</P
><P
>And this brings us to LKMs, because many people believe that an LKM is
a derivative work of the Linux kernel. The Free Software Foundation
has said so. Linus Torvalds has said it is sometimes. No court of
law has ever ruled one way or the other.</P
><P
>Now let's turn to the copyright on Linux. For the sake of discussion,
when we say "Linux," we will mean the contents of the
tarball you download from kernel.org as the regular Linux kernel.</P
><P
>Who owns the copyright on Linux? Lots of people. Nearly everyone who
has contributed code to Linux reserved his own copyright. Some of
that work was done for hire and therefore the employing corporations
own the copyright. Linus Torvalds is the most visible copyright
owner, but he holds copyright on a very small part of Linux.</P
><P
>How do these people prosecute their copyright? Well, nobody makes
deals with them to purchase copying rights. It wouldn't be practical.
However, they all offer a copyright license -- the same one -- to the
public. The license is documented and offered in a file in the
tarball, and is known as the General Public License (GPL). GPL is not
specific to Linux. It was developed by the Free Software Foundation
before Linux existed, and was simply chosen by Linus back when he was
the only copyright owner. And Linus doesn't put any code into the
tarball without the author offering the same license.</P
><P
>A copyright license is permission by a copyright owner to do something
that he has a legal right to stop you from doing, such as make a copy
or a derivative work. What it means to be a public license is that it
is offered to the public, as opposed to the copyright owner offering
it to particular persons he knows about.</P
><P
>The GPL lets you do almost anything with the code -- it's almost like
the copyright owners waiving all their copyright rights. But not
quite: there are strings attached. The license has conditions. In
order to have the permission, you have to meet the conditions. The
condition we care about here is one of two things, or both, depending
on how you read the license document (the document is ambiguous).
Either a) if you distribute a derivative work of Linux, you
have to supply source code for the whole derivative work; or b) if you
distribute a work containing Linux, you have to supply source code for
the entire work.</P
><P
>Now we come to the real question: what sort of rights do you have to
distribute an LKM you wrote?</P
><P
>Certainly, many people believe that you can distribute an LKM under
any terms you like, including binary-only and the owners of the Linux
copyright have nothing to say about it. You're distributing nothing
but your own code. And it's not a derivative work of anything. Many
people do distribute binary-only LKMs and believe that a principle
benefit of LKMs is the ability to do that.</P
><P
>Others think differently: The LKM, while an original work, is a
derivative work of Linux. The Linux copyright owners have the right
to control distribution. The only permission they gave you to
distribute it is GPL, and that permission is only under the condition
that you supply source code.</P
><P
>Let's look a little closer at the issue of whether an LKM is a
derivative work of Linux. The argument in favor goes that writing an
LKM is like writing a supplemental chapter for a novel. We know the
latter is creating a derivative work. The LKM is like the chapter
because it's specifically designed to be part of a whole with the
existing Linux kernel. It has no use in any other context, and when
deployed, is tightly woven into the rest of Linux. The fact that you
typically use a bunch of Linux header files to compile it is proof
that it's just an extension of Linux (don't confuse this with another
argument -- that the #include actually means you're distributing that
header file inside your object code). And note that a kernel module
loaded at run time is essentially the same program you would
statically bind into the base kernel if you chose to go that route.
If writing a module for the Linux source tree is creating a derivative
work, then so must be writing an LKM. LKMs often have to be updated
to conform to updates the base kernel.</P
><P
>Wasabi Systems, a company that sells kernels with freer licensing than
Linux, has published <A
HREF="http://www.wasabisystems.com/gpl/lkm.html"
TARGET="_top"
>a paper</A
> that
argues in more detail that LKMs are derivative works of Linux and you
should therefore be wary of publishing binary-only LKMs for it.</P
><P
>The argument against says that an LKM is something that interacts with
Linux, not something that is part of Linux. It likens the LKM to a
user space program, communicating with the kernel via system calls,
or an FTP client program (which would not be a derivative work of any
FTP server program).</P
><P
>The issue also runs into one of those areas where books and computer
programs aren't analogous because a computer program does something,
whereas a book just communicates an idea to a person. Loading an LKM
might be more like plugging an attachment into your vacuum cleaner
than like inserting pages into your book. And we know that the
blueprints for a vacuum cleaner attachment are not a derivative work
of the blueprints for a vacuum cleaner.</P
><P
>So that's as far as I can go. There appears to be a matter of degree
here and a judge will have to draw a line somewhere.</P
><P
>But if you need to make a practical decision, consider that there have
been well-known binary LKMs (drivers for Nvidia video adapters seem
to be the most famous) for years and no one has sued for copyright
infringement. Also, Linus Torvalds, influential for reasons other than
legal, has said binary-only LKMs are OK with him.</P
><P
>What about GPL-ONLY symbols? Kernel developers have selected some
symbols that one uses in interfacing an LKM to the base kernel as
GPL-only. These symbols have "GPL_ONLY" in their names,
making this intent obvious. Furthermore, in order for the Linux
module loader to let your LKM use them, you must include some code in
your LKM that supposedly certifies you license your module under GPL.</P
><P
>These probably have no legal significance. If the LKM is not a
derivative work of Linux, then the kernel developers simply have no
legal way to block you from putting the GPL annotation in your code
and distributing it binary-only anyhow. If the LKM
<EM
>is</EM
> a derivative work of Linux, then the absence
of the GPL-only classification of the symbol is probably not enough to
give permission to use it in a binary-only LKM. The license document
does not mention them. At best, you can use GPL-only symbols as a
gentleman's promise not to sue you for use of all the other symbols in
a binary-only LKM.</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="linuxversions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x973.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Differences Between Versions Of Linux</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Related Documentation</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>