[Buildroot] [RFC v2 16/31] linux: define license

Luca Ceresoli luca at lucaceresoli.net
Mon Apr 16 21:19:30 UTC 2012


Thomas De Schampheleire wrote:

> On Fri, Mar 9, 2012 at 5:23 PM, Luca Ceresoli<luca at lucaceresoli.net>  wrote:
>> Yann E. MORIN wrote:
>>> Lucas, All,
>>>
>>> On Wednesday 07 March 2012 21:58:16 Luca Ceresoli wrote:
>>>> Signed-off-by: Luca Ceresoli<luca at lucaceresoli.net>
>>>> ---
>>>>   linux/linux.mk |    2 ++
>>>>   1 files changed, 2 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/linux/linux.mk b/linux/linux.mk
>>>> index ae236d4..e6f2388 100644
>>>> --- a/linux/linux.mk
>>>> +++ b/linux/linux.mk
>>>> @@ -4,6 +4,8 @@
>>>>   #
>>>>
>>>>   ###############################################################################
>>>>   LINUX_VERSION=$(call qstrip,$(BR2_LINUX_KERNEL_VERSION))
>>>> +LINUX_LICENSE = GPLv2-ONLY
>>> What's the point of giving the version 'v2' and stating 'only'?
>>> I would rather see:
>>>    values        meaning
>>>    -------------------------------
>>>    GPLv2         GPLv2 only
>>>    GPLv2+        GPLv2 or later
>>>    LGPLv2.1      LGPLv2.1 only
>>>    LGPLv2.1+     LGPLv2.1 or later
>>>    ...           ...
>> When a project is GPL-licensed, it usually means it uses "either version X
>> of
>> the License, or (at your option) any later version". There are rare cases
>> (Linux, Busybox, any other?) chose to use a specific version, no later
>> version.
>>
>> So the "default" meaning of "GPLvX" is "GPL version X or later". Those rare
>> cases that allow no upgrade are distinguished by adding "only".
> I'm not sure this is correct. According to me, if the license file
> just specifies GPL version 2, then it really is only version 2.
> Only if the license file specifies the text 'or any later version, at
> your option', then it is GPLv2+.
>
> I think the distinction GPLv2 / GPLv2+ / GPLv3 / GPLv3+ etc. is
> common, and can be reused.
> So I agree with Yann here.
Ouch, you're right guys. And so I went back to read the original licenses once
more...

This is what the GPLv2 states (LGPLv2.0 is substantially equal):
>  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.

So there are indeed three cases:
  1. the Program specifies a version ->  GPLv2 only
  2. the Program specifies a version or "any later version" ->  GPLv2+
  3. the Program does not specify a version ->  how to name this, simply GPL?

Let's take a real case: tslib.

The source files in src/ state:
>   * This file is placed under the LGPL.  Please see the file
>   * COPYING for more details.
and the COPYING file in the root tslib directory contains an LGPL v2.0
license. The Program does not explicitly specify a version, but a specific
version is present in COPYING. Is this case 1 or case 3? I think the comment
in the source file rules, but it's only a feeling.

OTOH, most source files in tests/ state:
>   * This file is placed under the GPL.  Please see the file
>   * COPYING for more details.
and there is no COPYING file carrying any GPL in the whole tslib distribution!
So this must be case 3 (and we must assume that GPL means GNU General Public
License, although a good lawyer may certainly prove it means any other thing
from http://en.wikipedia.org/wiki/GPL_%28disambiguation%29).

This should be taken into account by Buildroot, which builds and installs both
the library and the test programs.

Another example: busybox.

This is a messy as well. The LICENSE file carries this heading:
>  --- A note on GPL versions
>
>  BusyBox is distributed under version 2 of the General Public License (included
>  in its entirety, below).  Version 2 is the only version of this license which
>  this version of BusyBox (or modified versions derived from this one) may be
>  distributed under.
>
>  ------------------------------------------------------------------------
>  		GNU GENERAL PUBLIC LICENSE
>  		Version 2, June 1991

That looks clear, but many source files seem to disagree:
$ head coreutils/uname.c
>   * Licensed under GPLv2 or later, see file LICENSE in this source tree.

And this is not a lone spot:
$ grep  -irE 'GPLv2 or later' . |wc
     358    5000   34106
$ grep  -irwE 'GPLv2' . | grep -iv later|wc
     241    2797   20656
GPLv2+ beats GPLv2 (only)!

I checked four packages in detail, and two of them have an unclear choice of
GPL version. I can't stand any more headache tonight, and I'm not sure I'll
have more luck with other packages. This is so frustrating...

Luca




More information about the buildroot mailing list