------- Forwarded Message
Date: Wed, 27 Nov 1996 16:08:47 -0600
Subject: GPL and kernel modules
I'm responding to a message which a friend forwarded to me from a
newsgroup. (I don't read netnews.) Your question is a good question.
Would you please forward this reply to the newsgroup?
A module designed to be linked into the kernel is an extension of the
kernel. This is true whether the linking is done statically or
dynamically. If the kernel is covered by the GPL, the GPL says that
all extensions have to be free software, such that the whole
combination can be distributed under the GPL. So a non-free loadable
kernel module would violate the GPL, as I understand it.
What about user programs? A user program is never linked with Linux.
Linux is the kernel, and user programs are not linked with kernels.
If the system as a whole is a Linux-based GNU system, a user program
is linked with GNU libc. GNU libc is covered by the Library GPL,
which does permit linking a non-free program with libc. So a user
program does not have to be free software.
It may be true in some cases that a loadable module and a user program
to do the same job would have a lot of code in common. If that code
is non-free, then linking it with GNU libc is permitted, and linking
it with Linux is not.
A note of caution: I can tell you what I think the GPL means, and I
think I understand it pretty well. However, no one can be certain
what a judge would actually rule in a specific case, except by going
to court.
Another factor is that the copyright holders of Linux, Linus and
others, are the ones who decide, ultimately, what is allowed with
Linux. If they tell you that they interpret the GPL to permit
non-free dynamically loadable kernel modules, under all condition or
some conditions, then such modules are permitted--for Linux.
This is because people are legally bound by their own statements. If
they tell you today that something is ok with them, you're entitled to
hold them to their word tomorrow.
I didn't write any of Linux, so I have no part in that decision. But
my advice would be not to permit non-free modules. Permitting them
would reduce the motivation for people to write free drivers for
various boards; eventually it may be hard to assemble a machine which
can be used with a system that is entirely free software.
Today we have free operating systems that we can run on popular,
inexpensive machines. It took a decade of work to make this true.
Now that we've reached this goal, we cannot take for granted that it
will stay true. That won't happen automatically. If we want it to
happen, we have to make it happen.
------- End of Forwarded Message