On ZFS in Debian

shutterstock_366995438I’m currently over at FOSDEM, and have been asked by a couple of people about the state of ZFS and Debian. So, I thought I’d give a quick post to explain what Debian’s current plan is (which has come together with a lot of discussion with the FTP Masters and others around what we should do).

TLDR: It’s going in contrib, as a source only dkms module.

Longer version:

Debian has always prided itself in providing the unequivocally correct solution to our users and downstream distributions. This also includes licenses – we make sure that Debian will contain 100% free software. This means that if you install Debian, you are guaranteed freedoms offered under the DFSG and our social contract.

Now, this is where ZFS on Linux gets tricky. ZFS is licensed under the CDDL, and the Linux kernel under the GPLv2-only. The project views that both of these are free software licenses, but they’re incompatible with each other. This incompatibility means that there is risk to producing a combined work with Linux and a CDDL module. (Note: there is arguments about if a kernel module, once loaded, is a combined work with the kernel. I’m not touching that with a barge pole, as I Am Not A Lawyer.)

Now, does this mean that Debian would get sued by distributing ZFS natively compiled into the kernel? Well, maybe, but I think it’s a bit unlikely. This doesn’t mean it’s the right choice for Debian to take as a project though! It brings us back to our promise to our users, and our commercial and non-commercial downstream distributions. If a commercial downstream distribution took the next release of stable, and used our binaries, they may well get sued if they have enough money to make it worthwhile. Additionally, Debian has always taken its commitment to upstream licenses very seriously. If there’s a doubt, it doesn’t go in official Debian.

It should be noted that ZFS is something that is important to a lot of Debian users, who all want to be able to use ZFS in a manner that makes it easier for them to install. Thus, the position that we’ve arrived at is that we can ship ZFS as a source only, DKMS module. This means it will be built on the target machines, and we’re not distributing binaries. There’s also a warning in the README.Debian file explaining that care should be taken if you do things with the resultant binary – as we can’t promise it complies with the licenses.

Finally, I should point out that this isn’t my decision in the end. The contents of the archive is a decision for the FTP-Masters, as it’s delegated. However, what I have been able to do is coordinate many conflicting views, and I hope that ZFS will be accepted into the archive soon!

Flattr this!

You may also like...

20 Responses

  1. Isn’t there also potential patent issues as well?

    • Richard Yao says:

      Michal, there should be no more of a problem with patents encumbering the ZFS code than there is a problem with patents encumbering Linux. Unlike the GPL, the CDDL has an explicit patent grant, so code under it does not need to rely on the idea of an implied patent license like the GPL must. That probably puts CDDL code in a better position patent wise than GPL code. Sun had hundreds of patents all subject to it and licensed at least a few more. Being under the CDDL, the ZFS code has a grant for all of those patents.

      • James says:

        The patent grant is only good for the original contributor though…

        Recall that NetApp sued Sun over patents covering WAFL they claimed ZFS infringed.

        http://en.swpat.org/wiki/NetApp's_filesystem_patents

        The suite was settled with undisclosed terms but certainly no CDDL patent grant will protect from NetApp given they never contributed to ZFS if they smell blood in the water…

  2. Zserbo says:

    “Free” software licenses – ruining the world since 1872.

  3. Richard Yao says:

    “there is risk to producing a combined work with Linux and a CDDL module” makes no sense under the GPL FAQ’s statement on aggregates:

    https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation

    “distributing ZFS natively compiled into the kernel”

    Being compiled into the kernel would mean CONFIG_ZFS=y, not CONFIG_ZFS=m. What people want is some variant of CONFIG_ZFS=m. I do not think anyone suggested that Debian do CONFIG_ZFS=y.

    • Neil McGovern says:

      Actually, that’s exactly what the statement on aggregates says: “If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program.”

  4. Richard Yao says:

    I missed a couple of things, so I am doing another reply.

    “there is arguments about if a kernel module, once loaded, is a combined work with the kernel. I’m not touching that with a barge pole, as I Am Not A Lawyer.”

    I am not a lawyer either, but I will touch it. You probably cannot redistribute kernel core dumps from systems with ZFS loaded into the kernel unless you want to make a fair use argument.

    “Thus, the position that we’ve arrived at is that we can ship ZFS as a source only, DKMS module.”

    That is 99% equivalent to CONFIG_ZFS=m as far as users should be concerned. The 1% is that kernel updates need to invoke DKMS, but most people are okay with that.

    • cas says:

      I’m happy enough with the spl-dkms and zfs-dkms packages and compiling them….but compiling zfs-dkms even on a modern machine with lots of RAM and fast disks (SSD) takes a long time.

      I’d like to see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554843 fixed so that pure binary packages could be built using dkms. I could then compile it once on my fastest machine and scp it to all my other machines (and some VMs I use for testing/experimenting with zfs).

      I could also build by own custom installer image that contained the spl and zfs .ko modules, to use on my own network (ipxe, tftp, etc).

      Unfortunately, `dkms mkdeb` doesn’t actually work.

    • A.J. Venter says:

      >That is 99% equivalent to CONFIG_ZFS=m as far as users should be concerned.
      It may be equivalent for users (good) but it is not for lawyers (also good). The “must keep license” clauses of both the CDDL and the GPL only apply to redistribution.
      If I change the source of a GPL’d program to produce a custom version and never distribute it to any outside party, then I’m not obliged to do anything with that change. It may be nice to share it back to the project but I am not legally required to.

      Building the module from source, myself, for personal use would not violate the license for either the kernel or the ZFS code. Giving that compiled module to somebody else would violate both.

  5. Jack Hill says:

    Does this mean that the OpenAFS module (IBM Public License) will have to move to contrib as well?

  6. Bill McGrath says:

    In a multi-terrabyte disk and petabyte storage system world GNU/Linux needs check-summing, and error correcting file systems like ZFS and BTRFS. So no this isn’t good enough. If source is the only option, might I suggest building a script into the installer to do the downloading and compiling so that installation will still be a breeze.

  7. Martin says:

    I understand the decision to distribute ZFS as source only, but could you elaborate on why the package is going into contrib rather than main?

    • Neil McGovern says:

      Sure – it’s about the promise that Debian makes to the end user. Basically, by it being in main you’re legally able to redistribute the end product (along with source). With a CDDL module and a GPL2+ kernel, that becomes – at best – unclear.

  1. January 30, 2016
  2. February 4, 2016

    […] Neil menjelaskan hal ini dengan cukup jelas di blog ini. […]

  3. February 6, 2016

    […] On ZFS in Debian.  BSD is still a better place for ZFS.  (via) […]

  4. February 7, 2016

    […] The state of ZFS in Debian […]

  5. February 25, 2016

    […] The article states that Debian does this, and gives a link: http://blog.halon.org.uk/2016/01/on-zfs-in-debian/ […]

  6. February 26, 2016

    […] more control over my server, and I am kind of a ‘Linux’ guy, no offense to BSD folks. So whenDebian added ZFS support, I got increasingly excited about ZFS on Linux. I installed it on my Debian server and even wrote a […]

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.