A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
Posted May 24, 2016 15:38 UTC (Tue) by mirabilos (subscriber, #84359)Parent article: A discussion on combining CDDL and GPL code
The GPL clause only triggers when *distributing* the derived work.
If the zfs.ko binary file is not a derivate of the Linux kernel (see below), then distributing it, even in binary form, is okay under the CDDL. Linking it into the Linux kernel at run-time by the user is “merely using the work” and not restricted under GPL, although it also creates a combined work of the two.
It’s just not okay to distribute that derived work (say, a kernel crashdump).
Now, as for the “see below” comment above:
• ZFS itself was written and finished as work for the Solaris kernel, thus the question of whether ZFS itself is a derived work of Linux can unambiguously be answered with “no” unless they really fucked up hard.
• A kernel module *can* be written so it works for different kernels, possibly with (e.g. BSD-licenced) adaption layers. We have this case occasionally in the Linux world.
• It is possible to write complete modules for the Linux kernel, compile them, and link them (into a .ko file, not bind them with the Linux kernel) without creating a derived work of the Linux kernel. This is most easily achieved by, well, simply using nothing from the Linux kernel (not even its header/include files) except the API definition (which is not creative enough to be a work of copyright, and/or exempt under EU interoperability stuff anyway). For example: the OpenBSD/zaurus bootloader is a kernel module for Linux 2.2 – the boot process looks like this:
$ su
# insmod zbsdmod.o
# cat bsd >/proc/zboot
The code: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/zau... (note that, while compat_linux.h has #include for Linux 2.4 headers, they are #if 0’d, and the module only works with the stock Linux 2.2 anyway)
• It may be possible to write LKMs using Linux’ headers without creating a derived work of the Linux kernel, but, especially with the Linux developers’ tendence to put lots of “static inline” functions into them, I wouldn’t dare, personally. Or strip them out and ship my own copy, with just the interface.
• The question now is whether zfs.ko did any of that. I haven’t looked at the code, and probably won’t, but this gives everyone who wishes to do so a recipe.
Enjoy!
Posted May 25, 2016 22:43 UTC (Wed)
by pboddie (guest, #50784)
[Link] (2 responses)
I don't think anybody argues that the ZFS code itself - on its own in splendid isolation - or, at least, the code of the other favourite modules featuring in the many previous discussions on this broader topic - Nvidia drivers and so on, also supposedly kernel-neutral - are derived works of Linux. But then, that's not what the derived work discussion is all about.
Posted May 27, 2016 17:25 UTC (Fri)
by asaz989 (guest, #67798)
[Link] (1 responses)
Posted May 27, 2016 21:19 UTC (Fri)
by pboddie (guest, #50784)
[Link]
This has previously been discussed in the context of the Nvidia drivers which supposedly use the same code as the ones used on Windows, and so people like to claim that the Nvidia drivers could never be derived works of Linux. But the derived works discussion is not about those drivers in their "inert" state.
When considering the GPL, I like to consider the "view source" scenario: you're running Linux combined with the ZFS implementation delivered by Canonical; Linux is GPL-licensed and thus imposes certain conditions about it being combined with other things and the source code for the result being available (for further distribution under the GPL's terms); therefore, the complete source code for that running system must be available to the end-user. Can this really be satisfied if the source of the ZFS implementation cannot actually be obtained and redistributed under the GPL?
Naturally, people may argue (just as they do with the Nvidia drivers) that it's the user who combines the works and that no-one is actually distributing the combination. Others may argue that the different parts of the running system do not comprise a derived work of one of those parts. Such matters I will happily leave to the lawyers to argue about.
Posted May 26, 2016 11:35 UTC (Thu)
by HsuYun (guest, #108980)
[Link] (9 responses)
Posted May 26, 2016 17:25 UTC (Thu)
by pboddie (guest, #50784)
[Link] (4 responses)
Right. But the article points out that the source code must be distributed only under the terms of the CDDL. So, any attempt to distribute a binary under the terms of the GPL will end up violating the GPL because the source code would then only be offered under the terms of the CDDL, and the CDDL is not GPL-compatible.
Posted May 26, 2016 23:12 UTC (Thu)
by Wol (subscriber, #4433)
[Link] (1 responses)
Not necessarily. Who owns the copyright in the binary? If they place the binary under the GPL, then they can't be sued for violating the GPL, and anybody who receives the binary under the GPL can presumably distribute it under the GPL.
After all, what does "the preferred form for modification" mean? If all you've got is the binary, then it's the *only* form for modification, so "preferred" is meaningless ...
Weird result, I know, but licences don't apply to copyright holders. Too many people forget this. And when you start mixing rights, you can end up with weird combinations.
Cheers,
Posted May 27, 2016 13:12 UTC (Fri)
by pboddie (guest, #50784)
[Link]
Presumably it is the copyright holder. Otherwise, "anything goes" and the consequences would be very broad indeed. For example, you could machine-translate Harry Potter, sell copies, and not get sued by its apparently-already-litigious author. I don't think that "place the binary under the GPL" makes any sense whatsoever given that the act of distribution is governed by source code distribution provisions in the GPL. In effect, "I don't have the sources, so it's OK" is making a promise you can't keep. Now, it might be the case that someone could take a permissively-licensed work, play the "place the binary under the GPL" game, then claim that they aren't obliged to provide the source, and state that they haven't violated the licence imposed by the copyright holder and have therefore not infringed any copyrights. That would be a misuse of the GPL, but I don't know what sanctions might be imposed on someone doing such a thing. Maybe something outside of plain copyright law would apply.
Posted May 30, 2016 21:02 UTC (Mon)
by HsuYun (guest, #108980)
[Link] (1 responses)
Posted May 30, 2016 21:56 UTC (Mon)
by MattJD (subscriber, #91390)
[Link]
The MIT license is fine, because it allows you to distribute under basically any license (it's only restriction is basically a disclaimer, which the GPL shares in spirit (if not text), and thus imposes no further restrictions). Thus you can distribute something under the MIT license as GPL.
In both cases, what matters is that the non-GPL license imposes no more restrictions on the combined work. CDDL does, MIT doesn't.
Note: This is true for the GPL2 with Linux. Apparently the GPL3 is a little more muddy, but for the CDDL is still basically right.
Posted May 26, 2016 23:46 UTC (Thu)
by anselm (subscriber, #2796)
[Link] (3 responses)
The GPL stipulates that if you distribute a binary under the GPL then you must supply the corresponding source code under the GPL. If that source code says that it can only be distributed under the CDDL then you have a problem right there.
Posted May 27, 2016 2:18 UTC (Fri)
by sfeam (subscriber, #2841)
[Link] (2 responses)
Posted May 27, 2016 9:34 UTC (Fri)
by anselm (subscriber, #2796)
[Link] (1 responses)
We're talking about the binary ZFS module on its own here (as per the previous poster). Even if the CDDL says that it can be distributed under the GPL, the GPL says that binaries must have source code under the GPL (or a GPL-compatible license, i.e., not the CDDL). Derivative works don't enter the discussion.
Posted Jun 1, 2016 11:06 UTC (Wed)
by nye (subscriber, #51576)
[Link]
Derivative works don't merely enter the discussion; they *are* the discussion. The GPL can say whatever it likes, but nothing in it can possibly apply to something that is not a derivative work.
A discussion on combining CDDL and GPL code
ZFS itself was written and finished as work for the Solaris kernel, thus the question of whether ZFS itself is a derived work of Linux can unambiguously be answered with “no” unless they really fucked up hard.
That is exactly what the derived-works discussion is all about. It is widely assumed that any kernel module is a derivative work of the kernel (and hence the GPL applies), and Canonical is acting like that just ain't so. There is some arguing in the alternative going on with the "spirit of the GPL" defense, but the core issue comes down to "what is a derived work of the kernel and what is not".
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
- The CDDL says (at least that's how I understood the article) that the executable produced from the source can be re-licensed under any license you like. "You" in this case is Canonical, so they could simply re-license the binary .ko file under the GPL
- The GPL says that if binary modules are distributed together with the kernel binary, the binary modules must also be licensed under a compatible license, not just the source of the modules.
- The binary ZFS module built from the ZFS sources by Canonical and licensed under the GPL can not be re-licensed by someone else to a license incompatible with the GPL.
Where is the conflict? Could someone please enlighten me?
A discussion on combining CDDL and GPL code
- The CDDL says (at least that's how I understood the article) that the executable produced from the source can be re-licensed under any license you like. "You" in this case is Canonical, so they could simply re-license the binary .ko file under the GPL
- The GPL says that if binary modules are distributed together with the kernel binary, the binary modules must also be licensed under a compatible license, not just the source of the modules.
A discussion on combining CDDL and GPL code
Wol
A discussion on combining CDDL and GPL code
Not necessarily. Who owns the copyright in the binary?
If they place the binary under the GPL, then they can't be sued for violating the GPL, and anybody who receives the binary under the GPL can presumably distribute it under the GPL.
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
Haven't we been around this barn before, and before that, and before that... The GPL can say whatever it likes, but what it says is only relevant to derivative works. Co-distribution of unlinked binaries may or may not create a derivative work, but that judgment is independent of anything the GPL says.
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code