Re: Linux GPL and binary module exception clause?

From: Linus Torvalds
Date: Fri Dec 05 2003 - 23:41:07 EST



IANAL.

On Fri, 5 Dec 2003, Larry McVoy wrote:
>
> However, if someone did take derived code (which is now covered by the
> viral license) and add it illegally to Linux, it is entirely reasonable
> for the license holder to say that all of Linux now has the virus.

You are making a classic mistake, which is to confuse "license" and
"copyright", and mixing them together.

[ Caveat: I'm obviously not a lawyer, but I've talked to a number of them
over the years, and this is my understanding. Make of it what you will. ]

Copyright (aka "ownership" of the code) and licenses are entirely
different animals, and they have very little to do with each other
legally. Except for the fact that the license can only be set by the
owner. But even when you set the license, the license _remains_ a
separate issue from the ownership itself.

So a license is _independent_ of the copyright on a work. You can have
multiple licenses for a work that is copyrighted by one person, and you
can have a single license for a work that is copyrighted by multiple
people. Or you can have no license at all (or no copyright, but at that
point the license loses its meaning, for other reasons - if the code is in
the public domain, anybody can pick it up and claim ownership, and so
everybody can set their own licenses. "No ownership" is a special case
because of that).

So the only thing that ties the two together is that only the copyright
holder can set the license. Other than that they are totally separate
things.

For example, I set the license on the kernel because I weas originally the
only copyright holder, which meant that I could use any license I pleased.
That ends up constraining later people, since they now have to follow the
rules - unlike me, they can't just make up the license for the original
code.

But if somebody else writes a piece of code for Linux, we now have a
situation where Linux is comprised of two pieces (a) the original work
(for simplicity, let's say it's copyright by person A) and (b) the new
work (copyright person B).

Now, (a+b) is the new work (joint copyrighted by A+B), and if the original
code (a) required the GPL, then (a+b) requires the GPL too due to the
"viral" nature of the GPL. You are right so far.

BUT THAT DOES NOT MEAN THAT PERSON B LOST _ANY_ RIGTHS WRT WORK (b).

In particular, person B can still license work (b) under any other
license. He cannot license (a+b) under any other license, since that is
required by the GPL to continue to be GPL, but he _can_ license the code
he retains full copyright to.

In particular, he can take his contribution (b), and combine it with
somebody elses contribution (c), and HE IS NOT BOUND BY THE GPL!

See?

The "viral" nature of the GPL does not actually "infect" the code itself.
Because ownership always overrides _any_ license. The owner is not bound
by the license, and can license it anew. See how "ownership" and "license"
are totally different things? One is subject to the other.

The code remains copyright to person B, and as long as it so remains
(which it does forever, unless B actively gives it away or the US congress
finally stops playing its silly games and lets copyrights expire
eventually), person B can re-license his code any which way he pleases.

Ask a lawyer. Any good lawyer.

It is only "(a+b)" that is a derived work. The code (b) that B wrote is
(as long as he didn't incorporate anybody elses work) remains his, and is
_not_ derived on its own.

(See the definition of derived that I quoted earlier: "derivation" really
requires actual combination).

But my claim is that if (b) is compiled into a Linux kernel module, then
it _is_ part of (a+b) whether (a) is physically present or not. So if
company B compiles their code (owned 100% by them) into a binary linux
kernel module, that _does_ make it a part of (a+b). "Physical location"
has nothing to do with derived works - and the fact that compaby B
compiled code (b) for Linux and then only distributes the (broken up) part
of (a+b) doesn't mean that (a+b) didn't exist.

See what I'm aiming at? I'm saying that B still owns the code (b), but if
he uses it "as part of (a+b)", he has to license the result under the GPL.
And that "compiles into a kernel module" _is_ using (b) as part of (a+b).

But he could _also_ compile the module into some other project (c). And
when used _that_ way, he can license that derivation of (b) any way that
makes sense from a standpoint of a derived work (b+c).

And if he uses code (b) stand-alone (ie does not combine it with anything
at all that anybody else owned), he can use the result any way he wants
to.

I'll bet you a dollar that a copyright lawyer will tell you that my
argument is not incorrect. He probably won't agree with me (since no
lawyers ever agree on _anything_ as far as I can tell) but I really think
he'll say "yeah, seeing it that way is not incompatible with copyright
law".

> Just
> as reasonable as someone saying "hey, that's the Linux XYZ driver in
> Solaris, Solaris is now GPLed".

No. That's not what anybody sane is claiming. Let's have this following
schenario:

(a) is the Linux kernel and is licensed entirely under the GPL
(and can have hundreds of copyright owners)

(b) is a driver written and thus owned by party B

(c) is Solaris, copyright Sun and others.

And the rule is: only an OWNER can accept a license.

So (a+b) is possible only licensed under the GPL, and only if B accepts
the GPL.

And (b+c) is possible only if there is some license that B and Sun can
agree on. If the only license that B agrees to is the GPL, then the only
way (b+c) is possible is if Sun agrees to license (c) under a
GPL-compatible license.

In other words, if (b) is GPL-only, then you can't use (b) with (c), _or_
C has to accept the GPL. "Forcing" a (b+c) doesn't make (c) be under the
GPL. But forcing (b+c) is illegal, since you can't force a license without
the agreement of the owner.

IANAL.

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/