Linked by Thom Holwerda on Mon 7th Jun 2010 10:15 UTC, submitted by kragil
Linux Employees of Lawrence Livermore National Laboratory have ported Sun's/Oracle's ZFS natively to Linux. Linux already had a ZFS port in userspace via FUSE, since license incompatibilities between the CDDL and GPL prevent ZFS from becoming part of the Linux kernel. This project solves the licensing issue by distributing ZFS as a separate kernel module users will have to download and build for themselves.
Thread beginning with comment 428546
To read all comments associated with this story, please click here.
Laurence
Member since:
2007-03-26

This project solves the licensing issue by distributing ZFS as a separate kernel module users will have to download and build for themselves.


Correct me if I'm wrong, but isn't this still breaking the licensing terms? I mean, is there not still CDDL code in a GPL kernel?
Sure, this project solves the risk for distros, but the end user now becomes the one liable.

Or have I completely missed the point?

Reply Score: 3

ssam Member since:
2006-03-12

i guess it similar to the case with binary drivers.

Reply Parent Score: 1

Lennie Member since:
2007-09-22

Well, binary drivers are a bit of a grey area anyway:

http://en.wikipedia.org/wiki/Linux_kernel#Loadable_kernel_modules_a...

Reply Parent Score: 2

Laurence Member since:
2007-03-26



Erm, can you clarify: You think both myself and the guys developing the port are missing the point because of the link you've supplied?

If that's what you're suggesting, then you've missed the point more than all 3 of us.
That link is the FUSE port which everyone has already acknowledged exists. However FUSE isn't native (as already mentioned in the article) and has it's own set of problems (performance being the biggest).

Reply Parent Score: 2

Tuxie Member since:
2009-04-22

Only if you redistribute it. The GPL only put restrictions on distribution, not usage. If you add the ZFS module to your own system it's ok but then you may not, for example, distribute a HDD image of that system.

Reply Parent Score: 7

Laurence Member since:
2007-03-26

Only if you redistribute it. The GPL only put restrictions on distribution, not usage. If you add the ZFS module to your own system it's ok but then you may not, for example, distribute a HDD image of that system.


I see.

Thanks for the clarification

Reply Parent Score: 2

SteveB Member since:
2005-07-10

Correct me if I'm wrong, but isn't this still breaking the licensing terms? I mean, is there not still CDDL code in a GPL kernel?
Sure, this project solves the risk for distros, but the end user now becomes the one liable.

Or have I completely missed the point?

Yes. you miss the point. It is not allowed to distribute a Kernel that has ZFS build into it. The reason is that you can not mix CDDL and GPL code. But an end user can patch her/his Kernel with the ZFS code and compile a Kernel and use that Kernel without breaking the license.

So only the distribution of a build Kernel is not allowed but running a patched Kernel is no violation of the licensing terms.

Reply Parent Score: 2

dragSidious Member since:
2009-04-17

> Correct me if I'm wrong, but isn't this still breaking the licensing terms?

No.

> I mean, is there not still CDDL code in a GPL kernel?

Yes.

And CDDL is incompatible with the GPL.

The reason it's legal is because GPL is a copyright license. Copyright is limited in scope, by constitutional law, to 'derivative works'.

"Derivative works" is a term encoded into copyright law that limits the rights of copyright owners to only items they created and items created from what they created.

That is if I write a poem and you write a poem my copyrights on my poem does not affect the copyrights on your poem.

'DUH', right?

That is what is happening here.

The code for the Linux ZFS driver is derived from Oracle's copyrighted code. The only legal grounds for using that code is under the CDDL license. So thus it's governed by the CDDL because it's derived work from the Solaris kernel.

But the process of modifying it for compatibility to the Linux kernel does NOT mean that the it's now derived from the Linux kernel. If there is no code from Linux in the Linux ZFS driver then the source code is legally distributable under the CDDL license and thus is not affected by the GPL license.

So it's legal to distribute in SOURCE CODE FORM. Its still pure CDDL licensed/derived.

Once you compile it into a kernel module, however, then the driver 'sucks in' Linux kernel code as part of the compilation process.

Thus, in binary format, because it incorporates both Linux and Solaris code then the actual finished driver will be derived from both CDDL'd and from GPL'd code.

Since they are incompatible there is no legal standing for you to redistribute it. Since they null each other out then there is no legal standing for your use of it. Hence it would be a violateion of copyright law for you to redistributed the finished binary driver.



The reason it's legal for you to USE the combined Linux/Solaris code and NOT be able to distribute it... is because the GPL only kicks in during distribution.

The GPL intentionally limits itself to situations were your distributing the code (in binary or source code format) to third parties.

As long as your only using it yourself then the GPL has ZERO affect over your usage. It's actually freer then the BSD license in this respect. You can treat it like it's public domain and combine it with whatever code you want. There is ZERO restrictions on GPL usage.

GPL ONLY AFFECTS DISTRIBUTION. Not usage.


TLDR:

* The driver is being distributed in source code format.

* The source code format does not include any GPL'd software or Linux derived software. It's only designed to be compatible with the Linux kernel.

* So the GPL does not restrict it because it does not affect it.

* GPL only affects distribution, not usage. There are ZERO restrictions at all on usage.

* Downloading the source code and compiling it with the Linux kernel makes it legally usable, but illegally distributable.

Reply Parent Score: 4