[PATCH v2] module.h: add copyleft-next >= 0.3.1 as GPL compatible
From: Luis R. Rodriguez
Date: Thu Jun 30 2016 - 18:53:37 EST
copyleft-next [0] [1] is an openly evolved copyleft license, its an
effort to evolve copyleft without participation of the Church (TM)
or State (R), completley openly to the extend development and
discussion of copyleft-next by participants of the copyleft-next
project are governed by the Harvey Birdman Rule [2].
Even though it has been a goal of the project to be GPL-v2 compatible
to be certain I've asked for a clarification about what makes
copyleft-next GPLv2 compatible and also asked for a summary of
benefits. This prompted some small minor changes to make compatiblity
even further clear and as of copyleft 0.3.1 compatibility should
be crystal clear [3].
The summary of why copyleft-next 0.3.1 is compatible with GPLv2
is explained as follows:
Like GPLv2, copyleft-next requires distribution of derivative works
("Derived Works" in copyleft-next 0.3.x) to be under the same license.
Ordinarily this would make the two licenses incompatible. However,
copyleft-next 0.3.1 says: "If the Derived Work includes material
licensed under the GPL, You may instead license the Derived Work under
the GPL." "GPL" is defined to include GPLv2.
In practice this means copyleft-next code in Linux may be licensed
under the GPL2, however there are additional obvious gains for
bringing contributins from Linux outbound where copyleft-next is
preferred. To help review further I've also independently reviewed
compatiblity with attorneys at SUSE and they agree with the
compatibility.
A summary of benefits of copyleft-next >= 0.3.1 over GPLv2 is listed
below, it shows *why* some folks like myself will prefer it over
GPLv2 for future work.
o It is much shorter and simpler
o It has an explicit patent license grant, unlike GPLv2
o Its notice preservation conditions are clearer
o More free software/open source licenses are compatible
with it (via section 4)
o The source code requirement triggered by binary distribution
is much simpler in a procedural sense
o Recipients potentially have a contract claim against distributors
who are noncompliant with the source code requirement
o There is a built-in inbound=outbound policy for upstream
contributions (cf. Apache License 2.0 section 5)
o There are disincentives to engage in the controversial practice
of copyleft/ proprietary dual-licensing
o In 15 years copyleft expires, which can be advantageous
for legacy code
o There are explicit disincentives to bringing patent infringement
claims accusing the licensed work of infringement (see 10b)
o There is a cure period for licensees who are not compliant
with the license (there is no cure opportunity in GPLv2)
o copyleft-next has a 'built-in or-later' provision
[0] https://github.com/copyleft-next/copyleft-next
[1] https://lists.fedorahosted.org/mailman/listinfo/copyleft-next/
[2] https://github.com/richardfontana/hbr/blob/master/HBR.md
[3] https://lists.fedorahosted.org/archives/list/copyleft-next@xxxxxxxxxxxxxxxxxxxxxx/thread/JTGV56DDADWGKU7ZKTZA4DLXTGTLNJ57/#SQMDIKBRAVDOCT4UVNOOCRGBN2UJIKHZ
v2:
o extend checkpatch.pl with copyleft-next as well for
MODULE_LICENSE() check - as suggested by Paul Bolle.
Cc: copyleft-next@xxxxxxxxxxxxxxxxxxxxxx
Cc: Richard Fontana <fontana@xxxxxxxxxxxxxxx>
Signed-off-by: Ciaran Farrell <Ciaran.Farrell@xxxxxxxx>
Signed-off-by: Christopher De Nicolo <Christopher.DeNicolo@xxxxxxxx>
Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxx>
---
include/linux/license.h | 1 +
include/linux/module.h | 1 +
scripts/checkpatch.pl | 1 +
3 files changed, 3 insertions(+)
diff --git a/include/linux/license.h b/include/linux/license.h
index decdbf43cb5c..ed7c13a6b556 100644
--- a/include/linux/license.h
+++ b/include/linux/license.h
@@ -5,6 +5,7 @@ static inline int license_is_gpl_compatible(const char *license)
{
return (strcmp(license, "GPL") == 0
|| strcmp(license, "GPL v2") == 0
+ || strcmp(license, "copyleft-next") == 0
|| strcmp(license, "GPL and additional rights") == 0
|| strcmp(license, "Dual BSD/GPL") == 0
|| strcmp(license, "Dual MIT/GPL") == 0
diff --git a/include/linux/module.h b/include/linux/module.h
index f777164c238b..24c520ff62e1 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -182,6 +182,7 @@ void trim_init_extable(struct module *m);
* The following license idents are currently accepted as indicating free
* software modules
*
+ * "copyleft-next" [copyleft-next 0.3.1 or later]
* "GPL" [GNU Public License v2 or later]
* "GPL v2" [GNU Public License v2]
* "GPL and additional rights" [GNU Public License v2 rights and more]
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 4904ced676d4..ccb66e201126 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -6014,6 +6014,7 @@ sub process {
Dual\ BSD/GPL|
Dual\ MIT/GPL|
Dual\ MPL/GPL|
+ copyleft-next|
Proprietary
}x;
if ($extracted_string !~ /^"(?:$valid_licenses)"$/x) {
--
2.8.4