Using copyleft-next on license by file approach
by Luis R. Rodriguez
I had licensed CRDA under copyleft-next years ago, that project had a
LICENSE file though, no other files had any copyright mention. Nice
and clean. With larger projects though, for instance the Linux kernel,
files are licensed on their own, license-by-file if you will. SUSE
attorneys have agreed with coplyeft-next being GPLv2 compatible, based
on this I recently proposed an amendment upstream for Linux [0] [1]
[2] to include copyleft-next as a possible license we can use as
developers. Given the listed gains of using copyleft-next over GPLv2
described in that patch, if this patch gets accepted upstream
copyleft-next is going to be my license of choice for new code moving
forward in the Linux kernel and as such I would like to ask for
suggestions as what to do about the copyright license header used.
To start off with, we know one gain of having something under
copyleft-next on the kernel, even though GPLv2 would apply there,
would be that I can then changes made to files there downstream to
other existing copyleft-next licensed projects. So for instance I
could take some Linux kernel copyleft-next code and include it under
copyleft-next to some userspace copyleft-next licensed code. Such an
example applies to CRDA, but use of that is far, given firmware
signing support on the kernel still has a long series of other changes
that are needed first, such as the new sysdata API I'm proposing [3].
As another more closer tangible example, I had licensed some new
userspace code I've been working on as a prototype which ultimately
I'm targeting upstream on the Linux kernel on under GPLv2, but given
the current agreement on compatibility I've decided I prefer
copyleft-next as well, so just today I've relicensed that project, the
prototype userspace linker-table work [4], under copyleft-next.
There'a few things to address if license-by-file method is used. To
start off with (refer to my change [5] as an example on the linker
table tree):
a) Do we *really* need to include the full copy of copyleft-next-0.3.1
upstream on a project if its going to use it? I've done that on my
userspace prototype for linker-tables, but would that eventually be
needed upstream on Linux as well ?
b) What should the license-by-file text look like?
I currently have:
* Linux linker tables
*
* Copyright (C) 2015-2016 Luis R. Rodriguez <mcgrof(a)kernel.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the copyleft-next >= 0.3.1 license as published
* online and available at the following URL:
*
* https://github.com/copyleft-next/copyleft-next
Just to try to match the GPLv2 traditional header. Is an alternative
preferred ? This implicitly tries to avoid referring to a "file" that
has the license, and instead refers to the upstream URL.
c) I've kept the scary disclaimer as I borrowed it from
include/linux/security.h from the Linux kernel, modulo I replaced
"GPL" with "copyleft-next" to indicate the license the file is
licensed under:
* Due to this file being licensed under coplyleft-next there is controversy
* over whether this permits you to write a module that #includes this file
* without placing your module under the GPL. Please consult a lawyer for
* advice before doing this.
However I am not sure if I should just avoid this. My thought was that
since GPLv2 applies upstream on the kernel I think its fair to keep
it.
[0] https://lkml.kernel.org/r/https://marc.info/?l=linux-kernel&m=14659293702...
[1] https://marc.info/?l=linux-kernel&m=146592937021726
[2] https://patchwork.kernel.org/patch/9176475/
[3] https://lkml.kernel.org/r/1466121559-22363-1-git-send-email-mcgrof@kernel...
[4] https://git.kernel.org/cgit/linux/kernel/git/mcgrof/linker-tables.git/
[5] https://git.kernel.org/cgit/linux/kernel/git/mcgrof/linker-tables.git/com...
Luis
7 years, 4 months
[PATCH] module.h: add copyleft-next >= 0.3.1 as GPL compatible
by Luis R. Rodriguez
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@lists.fedoraho...
Cc: copyleft-next(a)lists.fedorahosted.org
Cc: Richard Fontana <fontana(a)sharpeleven.org>
Signed-off-by: Ciaran Farrell <Ciaran.Farrell(a)suse.com>
Signed-off-by: Christopher De Nicolo <Christopher.DeNicolo(a)suse.com>
Signed-off-by: Luis R. Rodriguez <mcgrof(a)kernel.org>
---
I've tested its use at run time as well obviously.
include/linux/license.h | 1 +
include/linux/module.h | 1 +
2 files changed, 2 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]
--
2.8.2
7 years, 5 months
[PATCH] Releases/copyleft-next-0.3.1: space fix
by Luis R. Rodriguez
Without this is a project embraces the file as-is git complains
when applying with:
.git/rebase-apply/patch:413: trailing whitespace.
This fixes that. This might be acceptable given 0.3.1 has no
tag associated with it yet.
Signed-off-by: Luis R. Rodriguez <mcgrof(a)kernel.org>
---
Releases/copyleft-next-0.3.1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Releases/copyleft-next-0.3.1 b/Releases/copyleft-next-0.3.1
index 36d8515bc0f9..21c87270fc59 100644
--- a/Releases/copyleft-next-0.3.1
+++ b/Releases/copyleft-next-0.3.1
@@ -35,7 +35,7 @@
If the Derived Work includes material licensed under the GPL, You may
instead license the Derived Work under the GPL.
-
+
4. Condition Against Further Restrictions; Inbound License Compatibility
When Distributing a Covered Work, You may not impose further
--
2.8.4
7 years, 5 months