A discussion on combining CDDL and GPL code
Within the context of an event dedicated to discussing free and open-source software (FOSS) legalities, such as the Free Software Legal & Licensing Workshop (LLW), the topic of conflicting licenses was bound to come up. The decision by Canonical to start shipping the ZFS filesystem with its Ubuntu server distribution back in February led to a discussion at LLW about distributing the kernel combined with ZFS. Discussions at LLW are held under the Chatham House Rule, which means that names and affiliations of participants are only available for those who have agreed to be identified. This year's LLW was held in Barcelona, April 13-15.
Both the CDDL, which is the license under which ZFS is distributed, and the GPLv2, the license used for the kernel, are considered open-source licenses, but they are, to some extent, incompatible with each other. Executable code that is licensed under the CDDL can be re-licensed, as described in section 3.5 of its text. The source code, however, must be distributed under the CDDL (section 3.1).
This conflicts with GPL section 2(b) that states: "You
must cause any work that you distribute or publish, that in whole or in
part contains or is derived from the Program or any part thereof, to be
licensed as a whole at no charge to all third parties under the terms of
this License.
" This means that both the executable and the source
code, and
any modifications made to either, must be distributed under the GPL.
Although it is true that Canonical also distributes ZFS as a Filesystem in
Userspace (FUSE) module, in
which case the kernel and the module are considered separate entities and
no license conflict exists, Canonical also distributes ZFS as a native
kernel module, which gives rise to a clash of licenses with regard to the
source code.
The spirit of the licenses
Mishi Choudhary, from the Software Freedom Law Center, explained as much in her talk "ZFS Licensing". She noted that Linus Torvalds himself had been asked way back in 2003 whether the kernel developers considered a module to be a separate entity and, therefore, not subject to the GPL's copyleft clause that governed the rest of the kernel. Torvalds's answer was a resounding "no".
However, Choudhary considers the conflict between the two licenses to be resolvable and, along with her colleague, Eben Moglen, has published a paper explaining why. In her talk she explained that, even though a conflict existed, none of the parties, or even any third party, was being damaged if one or the other license was being infringed upon. The source code was still being freely distributed, regardless of whether it was being done under one license or the other. Therefore, even if the letter of one of the licenses was not being respected, at least "its spirit" was.
Choudhary and Moglen argued that enforcing a strict interpretation of the letter of both licenses would have, in this case, more negative consequences than positive. There are precedents in Western law for interpreting a contract or license in its spirit, rather than literally. In the case of the GPL, the spirit of section 2(b) is that the source code must be distributed under a copyleft license. As that is what happens under the CDDL, the spirit of the GPL's clause is respected.
This led to a rather heated Q&A session, with Moglen himself flying in from New York specifically to field questions on the matter. Before Choudhary's presentation, the attendees had listened to two talks that advocated taking a hard stance against all infringements and how taking infringers to court had served to establish the GPL and related licenses as valid legal documents (see last week's article on enforcement and compliance of FOSS licenses).
At this point, the Q&A had moved on to a fishbowl format, in which attendees could come up and sit on stage to share their thoughts. Many did.
Multiple attendees felt that interpreting clauses in the GPL "in their spirit" would undo the enforcement work and weaken the license's legal standing, leading to a slippery slope that infringers could take advantage of. "Why," an infringer could argue, "is clause 2(b) not taken literally in the Canonical case, but it is for me?" Attendees also felt that, by not applying licenses literally, developers that had already licensed their work under the likes of the GPLv2 would wonder why they bothered; and those that were considering using the license would now be reluctant, because the move to interpreting the license in its spirit would make it seem vague and ambiguous.
Moglen stated that this was already happening, but for a different reason: companies he worked with were "fleeing the GPL" because of its inflexibility. He argued that this case was an example of how applying a literal interpretation of the clause would cause more damage than good to the collaborative model of development, which is the cornerstone of the free-software movement.
Many attendees saw the argument as a way to appease a prominent player that had violated a license, and opened a door to a slew of "convenience" violations that would weaken strict licenses further. Moglen countered that he could imagine a scenario in which two FOSS-defending organizations entered in a dispute with each other over conflicting FOSS licenses and, if that happened, the legal war would tear the community apart.
That characterization may have been a mistake. Attendees took offense at the notion that, by defending the literal validity of the GPLv2, a license Moglen himself had been instrumental in creating, they would somehow be made responsible for a hypothetical demise of the free-software movement. As the morning sessions drew to a close, there was the prevalent feeling that the CDDL-GPL issue had opened a rift in the FOSS legal community.
Conclusion
The proliferation and complexity of FOSS licenses were bound to lead to a conflict sooner or later. As Choudhary and Moglen's talk and Q&A session showed, the question of whether it is better for the free-software community to always apply a strict interpretation of a license, or take a more lenient approach when it conflicts with a another FOSS license, remains unanswered. We will hopefully learn more as the conflict between ZFS and the kernel plays out.
[ The author would like to thank Red Hat and Intel for assisting with his
travel expenses and the Free Software Foundation Europe (FSFE) for help
during the event. ]
Index entries for this article | |
---|---|
GuestArticles | Brown, Paul |
Conference | Free Software Legal & Licensing Workshop/2016 |
Posted May 19, 2016 12:36 UTC (Thu)
by smoogen (subscriber, #97)
[Link] (19 responses)
In the end, I expect that Eblen's interpretation of how contract and licencing law will actually be interpreted by courts is closer to reality than what I would like it to be. The fact that the GPL and the CDDL are mutually incompatible will end up be 'written' over at some point and the universe will move on.
Posted May 19, 2016 21:23 UTC (Thu)
by rahvin (guest, #16953)
[Link] (16 responses)
You might be able to argue the spirit thing as part of a damages review or fair use type defense but IMO the courts are going to take the license and it's strict conditions pretty seriously. And IMO you want those strict conditions or as the article says, the bad actors take the loose view and suddenly the license isn't worth anything.
Posted May 19, 2016 23:52 UTC (Thu)
by smoogen (subscriber, #97)
[Link] (15 responses)
The core issue is how much the court system is going to treat the GPL like a contract and how much of it various other types of legal matters. The fact that it is going to be up to Oracle to decide on one side if they have any victims they want to get money from and on the other side kernel authors who will have to show they have enough standing is going to be a long complicated game. And in the meantime, I expect Canonical has done its math and decided that it isn't likely Oracle will sue, or that Linus is going to sue.. so they can get enough usage out of it to make a larger bit of the pie.. because frankly they know that a large majority of their users's don't care about licensing at all. So all upsides for them.
None of this is meant to be an endorsement. I don't like it, but I am not a lawyer and I have come to realize that law is so unlike how they teach you in the mundane classes that my best bet is to usually assume that whatever I think it should be like is really wrong.
Posted May 20, 2016 3:28 UTC (Fri)
by clopez (guest, #66009)
[Link] (1 responses)
What is beeing violated is the GPL, but only if you argue that ZoL is a derivated works of the Linux Kernel.
So, in my opinion (IANAL) the only who can claim damages to Canonical is some of the Kernel developers because of an infringement of the GPL derivative works terms.
But in order to do that they first have to demonstrate that ZoL is a derivative works of the Linux Kernel. And arguing that is going to be difficult given what the main author of the Linux Kernel (Torvalds) said previously about AFS: https://lkml.org/lkml/2003/12/3/228
Posted May 23, 2016 8:30 UTC (Mon)
by paulj (subscriber, #341)
[Link]
Posted May 20, 2016 22:05 UTC (Fri)
by giraffedata (guest, #1954)
[Link] (12 responses)
The paper simply states the conclusion that all western legal systems let courts follow the spirit instead of the letter of legal documents to prevent injustice - it doesn't back it up with anything and that is far different from the law that I know. The only time I've seen a court openly rewrite an unambiguous term of a contract is when the result of the literal reading would be absurd (which implies the people who wrote it would be shocked). I don't know copyright licenses, but I presume the bar is even higher there, because authors have a fundamental right to be selfish and withhold their work from anyone, so I can't see it being called injust for a license to fail to give someone permission to copy under whatever circumstance.
But the damages angle accomplishes the same thing. If you copy without permission, but the copyright holder isn't hurt by your doing so, you can't lose a lawsuit over it. If your copying accomplished the same goals of the copyright holder as if you had done what you had to to get permission, it would be hard for the copyright holder to win a lawsuit.
Posted May 20, 2016 22:08 UTC (Fri)
by mjg59 (subscriber, #23239)
[Link] (11 responses)
Is that true? Copyright infringement carries statutory damages in several jurisdictions.
Posted May 20, 2016 22:59 UTC (Fri)
by giraffedata (guest, #1954)
[Link] (5 responses)
I can't recall ever hearing about someone suing for statutory damages for copyright violation.
Posted May 21, 2016 18:22 UTC (Sat)
by nybble41 (subscriber, #55106)
[Link] (1 responses)
Statutory damages are basically the only kind a copyright holder *can* sue for, since there is no such thing as actual damage from making a copy, whether authorized or not. All those high-profile "piracy" cases where individuals were threatened with fines on the order of hundreds of thousands or even millions of dollars for copying a handful of songs or videos were founded on statutory damages. Of course, such cases require solid evidence and generate a lot of negative PR, so more recently they've been focusing on pressuring ISPs into serving as their extra-judicial enforcement wing and "persuading" individuals to settle rather than suffer the legal expense of defending themselves.
Posted May 22, 2016 3:08 UTC (Sun)
by giraffedata (guest, #1954)
[Link]
OK. That kind of copying isn't usually the kind that authors of open source code worry about, but it's certainly a valid example of statutory damages being real.
I'm not sure what you're trying to say by there being no such thing as actual damage from making a copy, but suffice it to say that people regularly win sums in court much larger than statutory damages to compensate them for the damage done to them by other people making copies.
Posted May 22, 2016 1:13 UTC (Sun)
by happylemur (subscriber, #95669)
[Link] (2 responses)
Posted May 22, 2016 3:03 UTC (Sun)
by giraffedata (guest, #1954)
[Link] (1 responses)
Posted May 23, 2016 11:01 UTC (Mon)
by paulj (subscriber, #341)
[Link]
You still need to persuade a court that there has been a copyright violation though, in distributing a derivative of CDDLed and GPLed works. I think the Eblen Moglen and Mishi Choudhary paper is more examining that question, than the damages issue, if I understand correctly (also, I don't think the paper is taking the firm position on the CDDL/GPL issue that this LWN article seems to paint; if Choudhary took a firm stance in the talk, the paper does not have it). That paper makes an interesting point on literal readings: under a very literal reading, one could not combine BSD or other code considered "GPL compatible" with GPL code, without explicit relicensing to GPL.
Interesting stuff.
Posted May 21, 2016 19:38 UTC (Sat)
by smoogen (subscriber, #97)
[Link] (4 responses)
Posted May 22, 2016 3:49 UTC (Sun)
by nybble41 (subscriber, #55106)
[Link] (3 responses)
Posted May 22, 2016 4:55 UTC (Sun)
by karath (subscriber, #19025)
[Link] (2 responses)
Posted May 23, 2016 2:09 UTC (Mon)
by nybble41 (subscriber, #55106)
[Link]
Posted May 26, 2016 10:27 UTC (Thu)
by Wol (subscriber, #4433)
[Link]
Likewise, in the UK, copyright infringement for gain (which is what Canonical are doing, and they are based in the British Isles) is also a criminal offense.
Cheers,
Posted May 19, 2016 21:28 UTC (Thu)
by rfontana (subscriber, #52677)
[Link] (1 responses)
Er, which one am I? :)
Posted May 19, 2016 23:07 UTC (Thu)
by rahulsundaram (subscriber, #21946)
[Link]
Aging developer lawyer? :-)
Posted May 24, 2016 15:38 UTC (Tue)
by mirabilos (subscriber, #84359)
[Link] (13 responses)
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
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
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
I don't even know why they brought up the "spirit" thing, because 1) that really isn't the law; and 2) the damages issue covers the matter just fine.
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
That's a good point. The paper doesn't mention that loophole. A lot of times statutory damages are just for measuring damages while liability itself requires that there be proof of nonzero damage. But I don't know.
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
Thanks. That sort of blows a hole in the idea that if the copyright holder isn't damaged then there is no liability and makes us rely for CDDL-GPL compatibility on the hypothetical power of a court to enforce the spirit of a copyright license, expanding the permission to copy beyond what the copyright holder actually said.
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
Wol
I am wondering how many of the attendees were older lawyers versus developer-lawyers.A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
A discussion on combining CDDL and GPL code
# insmod zbsdmod.o
# cat bsd >/proc/zboot
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