[patch V5 00/11] LICENSES: Add documentation and initial License files

Thomas Gleixner
2017-12-28T15:33:37Z

This is the 5th version of the licensing rules documentation.

Changes since v4:

- Made use of boilerplate consistently

- Fixed the 'braces' inconsistency spotted by Heiko

- Picked up Reviewed-by tags

Delta patch vs. V4 below.

Thanks to everyone who provided input!

Thanks,

tglx

8<---------------
--- a/Documentation/process/license-rules.rst
+++ b/Documentation/process/license-rules.rst
@@ -34,8 +34,8 @@ into any source files which create an ex
kernel, the exception must be documented by a special license expression.

The common way of expressing the license of a source file is to add the
-matching boiler plate text into the top comment of the file. Due to
-formatting, typos etc. these "boiler plates" are hard to validate for
+matching boilerplate text into the top comment of the file. Due to
+formatting, typos etc. these "boilerplates" are hard to validate for
tools which are used in the context of license compliance.

An alternative to boilerplate text is the use of Software Package Data
@@ -89,9 +89,11 @@ License identifier syntax
3. Syntax:

A <SPDX License Expression> is either an SPDX short form license
- identifier found on the SPDX License List, or when multiple licenses
- apply, an expression consisting of keywords "AND", "OR", and "WITH"
- separating SPDX short form license identifiers surrounded by "(", ")".
+ identifier found on the SPDX License List, or the combination of two
+ SPDX short form license identifiers separated by "WITH" when a license
+ exception applies. When multiple licenses apply, an expression consists
+ of keywords "AND", "OR" separating sub-expressions and surrounded by
+ "(", ")" .

License identifiers for licenses like [L]GPL with the 'or later' option
are constructed by using a "+" for indicating the 'or later' option.::
@@ -102,13 +104,13 @@ License identifier syntax
WITH should be used when there is a modifier to a license needed.
For example, the linux kernel UAPI files use the expression::

- // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note)
- // SPDX-License-Identifier: (GPL-2.0+ WITH Linux-syscall-note)
+ // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+ // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note

Other examples using WITH exceptions found in the kernel are::

- // SPDX-License-Identifier: (GPL-2.0 WITH mif-exception)
- // SPDX-License-Identifier: (GPL-2.0+ WITH GCC-exception-2.0)
+ // SPDX-License-Identifier: GPL-2.0 WITH mif-exception
+ // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0

Exceptions can only be used with particular License identifiers. The
valid License identifiers are listed in the tags of the exception text
@@ -119,28 +121,28 @@ License identifier syntax
to be selected. For example, some dtsi files are available under dual
licenses::

- // SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
+ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause

Examples from the kernel for license expressions in dual licensed files::

- // SPDX-License-Identifier: (GPL-2.0 OR MIT)
- // SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
- // SPDX-License-Identifier: (GPL-2.0 OR Apache-2.0)
- // SPDX-License-Identifier: (GPL-2.0 OR MPL-1.1)
- // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR MIT)
- // SPDX-License-Identifier: ((GPL-1.0+ OR BSD-3-Clause) OR OpenSSL)
+ // SPDX-License-Identifier: GPL-2.0 OR MIT
+ // SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+ // SPDX-License-Identifier: GPL-2.0 OR Apache-2.0
+ // SPDX-License-Identifier: GPL-2.0 OR MPL-1.1
+ // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT
+ // SPDX-License-Identifier: GPL-1.0+ OR BSD-3-Clause OR OpenSSL

AND should be used if the file has multiple licenses whose terms all
apply to use the file. For example, if code is inherited from another
project and permission has been given to put it in the kernel, but the
original license terms need to remain in effect::

- // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) AND MIT)
+ // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT

Another other example where both sets of license terms need to be
adhered to is::

- // SPDX-License-Identifier: (GPL-1.0+ AND LGPL-2.1+)
+ // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+

License identifiers
-------------------