Thursday, February 25, 2016

ZFS, Linux, illumos and the ISC license

People are discussing whether or not Canonical including and shipping ZFS as a Linux kernel module of the GPLv2 licensed Linux kernel might be a GPL violation or not. James Bottomley recently posted an interesting opinion in that although it is a technical GPL violation "it’s difficult to develop a theory of harm and thus the combination is allowable" given that you'd need to prove the harm is done to prosecute. Meanwhile just today Conservancy has released a Statement on ZFS and Linux combinations. In it are very important pieces of information on serious incompatibilities which takes this a bit further outside of the scope simply adhering to the GPL compliance standards to make people happy and not harm people. I'll review those but also explain a bit more of the history of why ZFS is under CDDLv1 and why Oracle no longer benefits ZFS being licensed under CDDLv1. We should be focusing more on the illumos community, the BSD community, what their goals are and thinking about what they can do and why they should do anything anyway. If we want a middle ground where we can all benefit, including the proprietary folks, we should all just lobby for the ISC license as a reasonable compromise for ZFS community. I'll explain why.

You can currently only use CDDLv1 for ZFS

CDDLv1 says that if you redistribute any binaries the software must be distributed only under the CDDLv1. There are a series of issues with this. The easiest to grok is that modules can be built-in, and that the kernel as whole is GPLv2. Canonical will ensure ZFS might live as a Linux kernel module only though it seems, however there are a series of serious issues with this as well. I won't list them all and I'll purposely be vague about it as I do not want to do anyone's dirty homework, but I'll at least describe one item that you can find discussed on archives today. We have only:


We do not have:


This is on purpose. I know because I actually proposed such a change years ago! I did this because at that time I was on the hippie bandwagon wanting to help Linux and the BSD camp sing kumbaya together on the 802.11 front. The "Dual BSD/GPL" thing was added for historical purposes to account for old BSD incompatibility, but for all intents and purposes all upstream Linux kernel modules currently using the dual declaration might as well just outright be declared as:


This hasn't been done and we keep the dual thing just to avoid confusion, but its perfectly possible to use the GPL declaration on even only permissively licensed Linux kernel modules. Another just utterly stupid issue with this incompatibility is you can't hack on ZFS unless you use the CDDLv1 license. As I'll describe below perhaps this might have been a good thing for Sun, but as things stand now even or Oracle -- this is not really a good thing.

When shipping binaries the GPLv2 applies

CDDLv1 prohibits you to abide by this. This is perhaps one of the more obscure incompatibilities, but I've tried to summarize it as best as possible with the above statement.

CDDLv1 was not purposely incompatible with GPLv2

CDDLv1 was not just the license of ZFS, it was the license chosen for OpenSolaris. Some ex-Sun employees have claimed that the CDDLv1 was purposely made incompatible with GPLv but according to Bryan M. Cantrill, one of the Sun employees who actually ended up staying even after Oracle acquired Sun, at USENIX Lisa XXV clarified this is not true. He clarified (starting at video 22:00) that part of the incompatibilities came from the fact that although they wanted copyleft they needed a form of copyleft that enabled proprietary drivers such as drivers for partners such as EMC and Veritas. This shows that even if you have great intentions and want to use copyleft, if you are have any proprietary strings attached, you'll be affected and can only produce GPL incompatible solutions.

Oracle does not benefit from CDDLv1 ZFS anymore

To understand this we'll have to review a bit of history. ZFS was just part of OpenSolaris. Let's consider the original motivation at Sun to be enable them to keep proprietary drivers, how this aligns to Sun's old business model and then review Oracle's current business model for "Solaris", and obviously what remains from the OpenSolaris effort and how this can impact in any way Oracle's business.

First credit where due. Bryan credits Jonathan Schwartz for making it a priority to open source the operating system, he mentions that OpenSolaris started in January of 2005 when DTrace became the first of the system to be open sourced, and that the rest of the OS was open sourced in June 2005. Sun was bought out by Oracle in 2009, the acquisition closed on February 2010. Ben stayed at Oracle until July 25, 2010.
On August 3, 2010 illumos was born, not as a fork but rather an entirely open downstream repository of OpenSolaris with all the proprietary pieces rewritten from scratch or ported from BSD. On Friday August 13, 2010 however an internal memo was circulated by the new Solaris leadership to say that they will no longer distribute source code for the entirety of the Solaris Operating System in real-time as it is developed. It seems this was never publicly announced, and that updates just stopped on August 18th, 2010. Solaris 11 was released on November 9, 2011 and there was no source code released to go with it.

That marked the end of OpenSolaris...

Oracle decided to keep Solaris proprietary then, and they were able to do this as OpenSolaris development required copyright assignment. Although OpenSolaris died, the illumos project continued to chug on, independent of Oracle, with a striking difference, copyright assignment was not required. This means Oracle does not own copyright on the illumos project and its new innovations. Oracle cannot use illumos versions of ZFS unless they also release their own Oracle Solaris under the copyleft CDDLv1. Oracle Solaris cannot reap benefit of the illumos version of ZFS, unless they open source their own source code again, and the reason is that the little pieces of GPLv2 incompatibility require them to use the CDDLv1.

illumos innovations can never be part of proprietary Oracle Solaris

illumos has seen critical innovations and bug fixes to ZFS, Dtrace, Zones and other core technologies. The real kernel architects behind ZFS have left Oracle, are not in favor or Oracle's idea to stop OpenSolaris, and have gone to great lengths to ensure that Oracle play by the archaic copyleft CDDLv1 license. Examples of a features added to illumos ZFS are SPA versioning that allows disjoint features from different vendors without requiring conflicting versions, UNMAP for STMF, allowing for better ZFS-backed ISCSI LUNs, getting estimates for ZFS send and receive. To top this all off, even if the Linux community made changes to ZFS to fix issues or add new innovations Oracle could not benefit from it. The BSD community would have contributed first to ZFS than the Linux community, but those contributions also could not be used by Oracle.

Why the ISC is a win for all

Are the old reasons for Sun to use CDDLv1, to enable proprietary drivers, still part of illumos' and the BSD community's own goals ? If not can someone confirm if the illumos or BSD community is forever stuck with the CDDLv1 ? If so would they be perfectly happy with that? Is the potential gain of contributing with the Linux community worthy enough for illumos to wish to want a relicense that would make things work for all parties involved ? What would it take for them to relicense? Does the illumos community really want Oracle to release Oracle Solaris under the CDDLv1 ? If Oracle wanted to upkeep the Oracle Solaris solution, help illumos collaborations on the Linux front, enable contributions on Linux to be usable even on proprietary Solaris solutions the ISC license would make a good middle ground for all parties involved. We did this with on the 802.11 front, it should easily apply as a reasonable compromise to ZFS as well, if parties really wanted a good middle ground.


divyapriya said...

Great information to everyone. Great job done.
IELTS Coaching in Chennai
IELTS Training in Chennai
Spoken English in Chennai
french courses in chennai
pearson vue test center in chennai
German Classes in Chennai
IELTS Coaching in Velachery
IELTS Coaching in Tambaram

sheela rajesh said...

I have to appreciate you for your great work which you had done in your blog.i want you to add more like this.
JAVA Training in Chennai
Java training institute in chennai
Python Training in Chennai
SEO training in chennai
Big data training in chennai
Selenium Training in Chennai
JAVA Training in Chennai
Java Training in Tnagar

abhi pranesh said...

Great job. Keep updating this article by posting new informations.
Spoken English Classes in Chennai
English Coaching Classes in Chennai
Japanese Language Classes in Chennai
French Language Classes in Chennai
pearson vue exam centers in chennai
German Classes in Chennai
Spoken English Classes in Tnagar
Spoken English Classes in OMR

TNPSC Updates said...

Looking for best TNPSC study materials to prepare for the examination? Make use of our samacheer kalvi books and other study guide to learn from experts. TNPSC One Time Registration

Anbarasan14 said...

Great informative post. Thanks for sharing; Do post more blogs of this kind.

Education Franchise India
Spoken English Franchise
Franchise For Spoken English Classes
Top Education Franchise In India
Best Education Franchise In India
Computer Education Franchise
Education Franchise India
Computer Center Franchise
Education Franchise Opportunities In India

dhivya said...

Nice blog!! I hope you will share more info like this. I will use this for my studies and research.

DevOps Training in Chennai
DevOps foundation certification
DevOps certification
AWS Training in Chennai
Cloud Computing Training in Chennai
Data Science Training in Chennai
DevOps Training in Anna Nagar
DevOps Training in Vadapalani
DevOps Training in Guindy
DevOps Training in Thiruvanmiyur

Anonymous said...

Great efforts put to publish these kinds of articles that are very useful to know. I’m thoroughly enjoying your blog. And Good comments create great relations. You’re doing an excellent job. Keep it up.

Magento Development Training Course in Chennai Zuan Education

Selenium Training Course in Chennai Zuan Education

Chris Hemsworth said...

I have been reading for the past two days about your blogs and topics, still on fetching! Wondering about your words on each line was massively effective. Techno-based information has been fetched in each of your topics. Sure it will enhance and fill the queries of the public needs. Feeling so glad about your article. Thanks…!
best software testing training in chennai
best software testing training institute in chennai with placement
software testing training

software testing training and placement
software testing training online
software testing class
software testing classes in chennai
best software testing courses in chennai
automation testing courses in chennai
digital marketing training in chennai
digital marketing classes in chennai
digital marketing course in chennai
digital marketing institute in chennai
digital marketing training centers in chennai
digital marketing training institute in chennai
best digital marketing course in chennai

sindhuvarun said...

I inspired to read this blog the way of delivering this content so good.
PHP Training in Bangalore
PHP Training in Chennai
PHP Classes in Bangalore
Best PHP Training Institute in Bangalore
PHP Course in Bangalore
Data Science Courses in Bangalore
DevOps Training in Bangalore
DOT NET Training in Bangalore
Spoken English Classes in Bangalore
PHP Course in Bangalore

Naveen S said...

This is a fabulous article, please try to upload these such articles hereafter.

Learn Best Youtube Marketing Course Training in Chennai

Learn Best AWS Developer Course Training in Chennai

Learn Best AWS Architect Course Training in Chennai

Learn Best AWS Cloud Practitioner Certification Course Training in Chennai