Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3

From: Bernd Paysan
Date: Wed Jun 13 2007 - 10:24:49 EST


On Wednesday 13 June 2007 15:11, Krzysztof Halasa wrote:
> > The GPLv2 however is very clear how the end user gets the license: from
> > the original author.
>
> I'd be surprised if it's for GPL to decide.

If you choose the GPL as license, the text of the GPL are the conditions.
Otherwise, the GPL would be pure nonsense (as would be any other license).

> > Not from the man in the middle, from a distributor or
> > kernel maintainer, who can neither add nor drop
> > restrictions/permissions (and thus the special rights of a compilation
> > editor are void). The author can only speak for himself, not by behalf
> > of somebody else, as well as the compilation editor.
>
> How about derived works?
> Am I free to get BSD source, incorporate it in GPL project, and release
> the whole under GPL?
> Sure, the original source stays BSD but I don't distribute it.

Derivated work is a product of several authors, therefore each author may
put different conditions on his part of the work - as long as they are
compatible, it's ok. A derivated work originally under BSD, now with a
patch under GPL can only be distributed under GPL, but not under BSD
(because GPL requires redistribution under GPL, whereas BSD doesn't care).
If you take out the patch, and revert the work to the BSD one, you are free
to redistribute it under BSD.

There's no point of discussing that the Linux kernel *as a whole* (as
compilation) currently is under GPLv2 only, since it sais so, and a few
files also explicitely say so. The whole combination is GPLv2 only, but
most parts aren't.

> > That's why the FSF is so strict about having each
> > author stating copyright and the license conditions on the top of the
> > file - nobody else can.
>
> I'm not sure the copyright laws define "files".

Copyright law defines "work", and in terms of computer programs, source
code "work" goes into files. Or patches, but patches end up distributed
over several files.

The nice thing about this is that you can make automatic checks about the
license you actually have to fulfill. E.g. if you compile a hypothetical
Linux 2.8.15.3 without ZFS and dtrace in 2009, you may end up with
compiling only GPLv2-compatible code, and therefore can tivoize your system
(unless you sell it to Germany, where the GPLv2 outlaws tivoizing by
intent), but if you add either ZFS or dtrace, you can't.

> > So my conclusion is: If you, as contributor to the Linux kernel, want
> > to make clear that your work really is GPLv2 only, you have to do that
> > yourself, you have to add a notice like above to files where you
> > exclusively own copyright.
>
> I don't think the law works like that.
> By default you have no rights to someone's work (file or project).
> The only licence I can find with Linux is GPL v2, isn't it?

Yes, and the GPLv2 sais "if the FSF releases a new version of the GPL, you
may update" (section 9):

" 9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation."

This is normal contract law (you have to say "yes" to a new M$ EULA every
few months or so if you are an unlucky Windows user, and like to use their
patches), contracts can change over time. The FSF is rather nice here, they
say users and contributors can make choices to which contract they use.

Given that the license you find with Linux is GPLv2, anyway, the comment
from Linus seems to be superfluous. The license already says which version
it is. But it has this upgrade option, and one possible interpretation of
Linus' comment is "no, it doesn't have this update option".

> And even
> that wasn't stated explicite until that 2.4.0something (though there
> is a consensus that the COPYING file was indeed a licence for the
> whole kernel).
>
> Then you may have additional rights, such as those given in various
> source files.
>
> > The rest (the majority) did not
> > choose to say anything, which under the GPL regime means "any";
>
> What exactly is the "GPL regime" and how is it defined by copyright
> law and/or the GPL licence itself (or will of copyright holders etc.)?

If I use GPL as license, I'm under "GPL regime", i.e. the terms of the GPL
apply. The GPL requires that I need to speak up explicitely if I want to
limit the choice of licenses - if I don't say anything, it defaults to "any
GPL". This is a restriction that goes from author to user, sinde the GPL
cuts away all middle-men (restrictions applied by middle-men can be
reverted).

If I decide to build my own compilation of Linux kernel patches* (i.e. a -bp
kernel, like the -mm kernel is a different compilation of Linux kernel
patches as the mainline kernel), I'm free to choose under which conditions
I redistribute it, given that it's compatible with the conditions the
original authors have chosen. Most of them have said nothing (other than
implicitely that it's ok for them to put it under GPL, as they haven't
opposed to inclusion into the Linux kernel), some have said GPLv2 or later,
some say GPLv1.1 or later (e.g. the parport driver) and a few have
said "GPLv2 only". Now, I may rewrite those few "GPLv2 only" files, and
then I have a GPLv2-or later compatible linux-some.version-bp kernel. And
into this kernel, I can add code under GPLv3 (once the GPLv3 is ready and
there's code worth to add under GPLv3), which limits me to redistribute the
whole thing under GPLv3.

--
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://www.jwdt.com/~paysan/

Attachment: pgp00000.pgp
Description: PGP signature