1. 20
  1.  

  2. 13

    Even experts don’t know everything. This seems to me like relying on Actor X to talk to you about random subject Y, instead of a subject matter expert on subject Y.

    That said, I don’t blame him for being so cautious about integrating ZFS into the Linux kernel all proper like. Oracle’s past history has shown they are very eager to do everything possible to try and make a buck. But ZFS was released publicly before Oracle bought it, so they would have to do a lot of magic legal loopholes to get around the license Sun released ZFS under, before Oracle bought Sun.

    ZFS is awesome, well maintained and supported, and, from my perspective very much part of the boring technologies one should definitely explore for use in your stack(s). Also except for FAT32, I think it’s the only filesystem that has implementations across all the major OS’s (windows, macOS, linux, BSD, UNIX, etc)

    1. 22

      But ZFS was released publicly before Oracle bought it, so they would have to do a lot of magic legal loopholes to get around the license Sun released ZFS under, before Oracle bought Sun.

      so was the jdk, but that has never stopped oracle as far as I understand it

      1. 4

        Agreed. I totally get not wanting to merge the GPL’d Kernel with ZFS’s unique license, based on Oracle’s past behaviour…

        1. 4

          so was the jdk, but that has never stopped oracle as far as I understand it

          That’s actually a really great non ZFS example: Oracle got all stupid with the JDK, trying to charge for it, so the community forked OpenJDK totally free of Oracle’s ‘stewardship’ and it’s been going gangbusters ever since.

          1. 3

            That’s an oversimplification, OpenJDK still is developed primarily by Oracle employees and existed before Oracle bought Sun. The only thing that changed is that previously it was a bad idea to use the official JDK over OpenJDK and now it’s a disastrously bad idea.

            1. 2

              Quite right.

              So the risk now is that Oracle might de-fund OpenJDK development.

              Given the VAST amount of critical infrastructure built atop the Java ecosystem that still exists, I’ll bet you dollars for donuts that the community would LEAP to the rescue if that happened.

              Everybody likes to slag Java, but most of those same people would be UTTERLY SHOCKED at how much of what they love is built on that ecosystem.

        2. 6

          I’m reading this as do not use ZFS on Linux both for technical and legal reasons. I totally agree with Linus on that, I’m using XFS which happens to be the CentOS default ;-) Using ZFS might be totally fine on FreeBSD though, don’t know, but hear good stories about it!

          1. 12

            well, zfs on freebsd now uses zfs on linux, so i’m not really sure where the “unmaintained” part comes from. i’m using zfs on linux for quite a while now as data-dump, and it is really solid and easy to use.

            my favourite example: when you have a disk which has problems but isn’t dead yet, you can add a new drive, resilver and then unplug the failing drive. no need to run with a missing drive. this is one command, quoting the manpage:

            zpool replace [-f] pool old_device [new_device]

            Replaces old_device with new_device. This is equivalent to attaching new_device, waiting for it to resilver, and then detaching old_device.

            regarding “buzzword”: there are no equivalent options for linux imho, btrfs isn’t there and won’t be for a long time, if ever. xfs is ok, but has a completely different scope, being “just” a filesystem. zfs replaces the whole lvm+mdraid stack, and wraps it into usable tools without that many footguns.

            the amount of fud spread concerning zfs is really amazing. i’m a bit sad that linus apparently buys into it, i understand the fear about oracle licensing fsckups, though.

            1. 3

              zfs replaces the whole lvm+mdraid stack

              Along with cryptsetup.

              1. 1

                Yes, forgot that :)

            2. 6

              I read that is Linus’s perspective, but I(and many others) have a different perspective. I don’t see any technical reason to not use ZFS on Linux, it’s well-maintained, stable and pretty much boring tech these days.

            3. 5

              I don’t blame him neither - there must have been a (legal) reason for Apple dropping it and coming out with APFS. Nonetheless it’s quite a strong opinion from someone who never used it.

              1. 8

                ZFS had a lot of baggage that they didn’t want because they’d never expose it to the users anyway. And it wouldn’t have scaled to work on devices like the Apple Watch because of the ARC.

                1. 1

                  Apple has implemented ZFS on Mac OS X. I don’t remember exactly whether it made to a public beta, or just it was leaked it exists, but apparently at some point Apple has decided they want ZFS, they just never shipped it to users.

                  1. 2

                    Yes, it was a thing when I was there the first time; but the word on the street was that licensing issues basically killed it, and it was never a good fit for Apple’s primary use case for a file system.

                    1. 1

                      I think the problem was that NetApp sued Sun over alleged violation of their patents by ZFS:

                      In the meantime, Sun and NetApp had been locked in a lawsuit over ZFS and other storage technologies since mid-2007. While Jonathan Schwartz had blogged about protecting Apple and its users (as well as Sun customers, of course), this likely led to further uncertainly. On top of that, filesystem transitions are far from simple. When Apple included DTrace in Mac OS X, a point in favor was that DTrace could be yanked out should any sort of legal issue arise. But once user data hit ZFS, it would take years to fully reverse the decision. While the NetApp lawsuit never seemed to have merit (ZFS uses unique and from-scratch mechanisms for snapshots), it indisputably represented risk for Apple.

                      https://arstechnica.com/gadgets/2016/06/zfs-the-other-new-apple-file-system-that-almost-was-until-it-wasnt/

                    2. 1

                      Yes I still have a copy of the beta where they included ZFS support.

                      You can still have ZFS on MacOS, just not for your /

                  2. 3

                    Apple dropping it and coming out with APFS

                    AFAIK (and I am no expert) ZFS has little to absolutely no-sense on home devices which Apple is offering. ZFS is meant for servers mostly. In that case APFS makes more sense in this case.

                    1. 2

                      ZFS would make sense on macOS, but agreed, ZFS makes some (but little) sense on ipadOS and zero sense on watchOS. ZFS is most comfortable with ~ 1GB(or more) of ram to itself, which is hard to come by on the smaller devices.

                  3. 3

                    “so they would have to do a lot of magic legal loopholes to get around the license Sun released ZFS under, before Oracle bought Sun.”

                    Them making API’s copywritten was such a magic loophole that I started recommending against depending on anything owned by a company that does patent suits. Those less-popular, foundation-run languages, OS’s, etc suddenly look worth the extra effort.

                    1. 3

                      Agreed on it being a major magic loophole. That’s not quite resolved yet, the supreme court hasn’t ruled. It will be very, very interesting to see what side the supreme court comes down on. Hopefully against Oracle, but who knows.

                      ZFS is an interesting case, because basically everyone that worked on ZFS @ Sun now plays with the OpenZFS version, which is under the Sun license(CDDL), and can’t get back into Oracle’s version(since they closed-source their version) so there are 2 totally different versions of ZFS that are only compatible if you work at it. The ZFS everyone uses, and the ZFS Oracle supports, that nobody uses(again unless they have to for non-technical reasons). The Oracle version doesn’t offer any of the good bits that the OpenZFS version has, like encrypted data, multi-platform support, etc, etc.

                      I also agree on your recommendations. Suddenly the BSD’s are looking better and better every day :)

                      OpenJDK is pretty much the default Java these days isn’t it? I don’t think anyone in server land is actively installing Oracle’s java anymore, unless they have to(for generally non-technical reasons).

                      1. 3

                        Them making API’s copywritten was such a magic loophole that I started recommending against depending on anything owned by a company that does patent suits.

                        IANAL, but I think the problem for Oracle would, in this case, be that they themselves (actually Sun) released ZFS under an open source license, plus that the CDDL includes a patent grant. This is different from the Java case, because Google did not use OpenJDK, but based their implementation on Apache Harmony. If APIs are copyrightable, then you’d think that Sun releasing OpenJDK as GPL would at least license use of the API in that implementation (and in this case ZFS).

                        Of course, they could sue ZoL for infringements of patents in newly-added code. But then they could probably sue developers of other filesystems with those patents as well.

                      2. 2

                        Oh I totally get it. I think his stance makes a lot of sense, but it will be interesting to see how or if things change when Ubuntu makes ZFS mainstream.

                        It’s already available as a checkbox in the 20.04 installer, and I suspect as later releases happen it will become the default.

                      3. 4

                        It’s been touched upon in the comments, but it bears spelling out: zfs provides the (potential for) first cross platform support for modern, encrypted filesystems with support for large files. There’s a windows port, an os x port, bsd ports, Linux port and of course OpenSolaris port.

                        When everyone is up on 0.7+ of openzfs for Linux - there’s a way to have solid volume management with encrypted fs support a cross all of these. It allows sharing encrypted /home in multiboot. It allows a sane encrypted format for USB sticks and hard drives. It allows installation repair accross os, without much risk (fix your freebsd encrypted root from Linux recovery media or vice-versa). Cross platform software raid. Cross platform backup and recovery via snapshots and send/receive (helped with openssh now being part of windows).

                        Sure xfs is a great fs. But zfs is modern, and has a lot of incremental improvements. Zfs send/receive over dump/restore. Proper snapshots.

                        And unlike systemd, which I’m not much in favour of - there are good reasons to merge volume management, raid, encryption-such as allowing SSD discard through the stack in a cross platform way.

                        1. 4

                          I recall reading a comment from someone who has contributed code in FFS that essentially claimed the “problem” with ZFS is that there are only a handful of people who know how it works, they don’t work on it now, and none of that knowledge was available for new contributors.

                          I am emphatically inexpert in this domain - please don’t take the above claim as anything more than hearsay - but this is one of the rationales that consistently leads me towards caution and skepticism about anything that pursues robustness using complexity rather than simplicity.

                          Is there anyone here who would be capable of - or would know anyone else capable of - developing a clean room ZFS? Licensing aside, this is the same reason I use boring old BSD file system technology: because it isn’t as sophisticated.

                          1. 2

                            see: https://github.com/zfsonlinux/zfs/graphs/contributors

                            More than 300 contributors so far, and FreeBSD is just now in the process of upstreaming their ZFS changes to that repo, so some/most of the FreeBSD ZFS people are not necessarily included in that. Plus it’s looking like macOS and Windows ports are also going to upstream to that repo.

                            I haven’t heard about the Illumos(and friends) people and if they are planning to upstream to that repo or not.

                            But regardless, there are active maintained ports across multiple OS’s, so I think it’s hard to say there is not enough developer interest to keep it alive at least.

                            I don’t think anyone really cares enough for a clean-room re-implementation under gpl. The current CDDL license is plenty good enough for all the OS’s except Linux, and the linux types just shove it in as a kernel module, and it works without issue. Ubuntu has gone so far as to distribute the binaries right alongside their OS, so clearly their lawyers don’t see a problem with their approach either. Plus the ZFS codebase is HUGE it’s millions of lines of code, so a clean-room re-implementation would be a serious, serious undertaking for no big benefit, especially since Linus’s long-standing stance is, he doesn’t really want the codebase directly in the kernel(which is already plenty big enough!).

                            1. 1

                              see: https://github.com/zfsonlinux/zfs/graphs/contributors

                              More than 300 contributors so far […]

                              Sure, but how many of those contributors actually have much of an understanding of its inner workings? Judging by 5 minutes of skimming commit subject lines from a handful of the top few dozen people listed there, I’d guess there are maybe 10 (and I feel like that’s probably a generous estimate).

                              1. 3

                                Sure, but how many of those contributors actually have much of an understanding of its inner workings?

                                Enough apparently to implement new features, judging the addition of native encryption to 0.8.0.

                            2. 1

                              I’ve listened to BSD Now episodes, where Alan Jude is a co-host. He has also done a lot of great work in ZFS lately. And this was before FreeBSD merged with ZoL, so now that these two projects have joined forces I think there’s enough manpower to keep OpenZFS afloat for a while.

                            3. 2

                              Never trust a company who has more of a history of buying and litigating properties than building them.

                              1. 2

                                One of the comments on the linked site state

                                However, the change that broke SIMD for ZFS was not a technical one; rather, it was a symbol switching from EXPORT to EXPORT_GPL. From the outside, it seemed a deliberate choice to hamper 3rd party module. And it would be fine even in this case, but it somewhat suprised me.

                                What exactly does EXPORT_GPL mean? I’m not a kernel dev..

                                1. 2

                                  It’s a signal from kernel developers that they expect anything using EXPORT_GPL to also be GPL’d code. it’s a legal stance, and not a technical one.

                                  i.e. if you use EXPORT_GPL, then they expect the GPL license (sometimes called “infection”) to apply to your code as well. If you use just EXPORT, then they don’t expect the GPL license to apply to that code.

                                  to be clear: where they is the kernel developers.

                                  1. 2

                                    Symbols which are EXPORTed are considered free to be used by any (out of tree) kernel module, irrespective of the license of that out-of-tree module. “EXPORT_GPL” symbols are intended only to be used by modules licensed under the GPL.

                                    1. 1

                                      There is no such permission given in the license of Linux. I remember at least one Linux copyright holder explicitly saying multiple times that they reserve the right to sue for copyright infringement irrespective of how the symbol is marked.

                                      While EXPORT_GPL shows that there is at least one person who reserves the right to sue for copyright infringement when using in a module under an incompatible license, EXPORT doesn’t tell you anything more than the text of the license (GPL 2) in itself. EXPORT is not EXPORT_MIT or something like that.

                                  2. 2

                                    Even experts don’t know everything. This seems to me like relying on Actor X to talk to you about random subject Y, instead of a subject matter expert on subject Y.

                                    Here do you mean “Actor X” is Linus Torvalds, and “subject Y” is filesystems? or ZFS specifically? I’m struggling to understand your comparison.

                                    1. 3

                                      No, Actor X is like a random hollywood actor, say Denzel Washington, about some random subject that really needs an expert to talk about sufficiently… say EXPORT_GPL linux kernel symbols.

                                      ( I don’t actually know that Mr. Washington isn’t a Linux kernel programmer as a hobby, but seeing as he was born in 1954, and has been a professional actor his entire life basically, I’m going to guess he isn’t a subject matter expert in the Linux Kernel)

                                      I would trust Mr. Washington has something useful to say about Acting, as he is arguably a subject matter expert in Acting, but I wouldn’t implicitly trust his thoughts on the China<->American trade war, just because he is an actor.

                                      Though generally in Society, this is like trusting when Actors go off and try to sell some random product or something.

                                    2. 2

                                      Combining ZFS and Linux is a GPL violation anyway, so Linus could not include it in Linux without violating the GPL unless Oracle gave explicit permission (or an exemption) for this, as Linus alluded to.

                                      For more details, including why Canonical is violating the GPL by distributing ZFS in Ubuntu, see https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/ (disclosure: I work for Conservancy).

                                      1. 4

                                        Combining ZFS and Linux is a GPL violation anyway

                                        That’s a strong statement. From what I understand, it’s not allowed to distribute Linux together with ZFS, but building ZFS yourself and using it on your own machine is not a GPL violation, right?

                                        Linus could not include it in Linux

                                        I’m with you there. But I don’t think anyone here has asked him to include it. Rather, this seems to be about Linus making changes to the kernel that make it harder to get ZFS to work on Linux.

                                        1. 1

                                          Distributing a combination is not the only problem when dealing with the copyright of ZFS on Linux: While I don’t like it, one can also be held liable for copyright infringement that others committed, e.g. by inducement of it. That means this is also a question for when one were to contribute to or distribute ZFS on Linux without combining it.


                                          On a more general matter: It is said, though disputed, that Bryan Cantrill ( on here as @bcantrill ) was one of the biggest proponents of the CDDL. If he were to read this I would like to know from him (and anyone contributing under CDDL, if you care about having/giving a license):

                                          1. Do you suggest anyone to use the CDDL for new software?
                                          2. Would you like to have existing software under CDDL move to a different license if that was easy?
                                          3. Is it worth it to make sure new contributions to existing CDDL software are also available under another license that is less intentionally incompatible with other licenses (like 2-BSD, Apache 2.0 or something)?
                                          1. 1

                                            The relevant Wikipedia pretty much answers your questions, including quotes from @bcantrill. https://en.wikipedia.org/wiki/Common_Development_and_Distribution_License

                                            #3 CDDL is generally not incompatible with any OSS license, except MAYBE the GPL. The FSF thinks it’s incompatible, and Linus clearly has a perspective here, but he isn’t really saying it’s a Legal issue, mostly an Oracle is evil issue (which everyone already knows). See the above wikipedia entry for the details. But either way it’s never been tested in court, so it’s still unknown if it’s actually incompatible. Certainly the spirit of both GPL and CDDL licenses are compatible.

                                            Plus CDDL is an interesting license as it’s file based, i.e. it’s attached to individual files, not to a project as a whole. Which makes it unique in the OSS license tree. So you could only make new files in the repository/project dual-licensed. You can’t really change a CDDL licensed file unless you also happen to own the copyright(s) to the entire file, which in the case of OpenZFS is now quite broad, and not limited to Oracle alone.

                                            Basically there is OpenZFS which everyone uses (across multiple different platforms), except Oracle, which nobody uses (unless forced, for non-technical reasons). Oracle can not import any of the OpenZFS changes back into their tree (legally speaking) because the Oracle version is no longer CDDL licensed.

                                            OpenZFS has a lot of awesome features that Oracle can’t import into their version. The latest new feature Oracle can’t import is data encryption on disk.

                                          2. 1

                                            That the GPL and CDDL are incompatible is mostly legal opinion at this point. Certainly the Conservancy has an opinion and the FSF has an opinion, which coincides with your statement of “fact”, but it’s never been tested in courts, and plenty of other lawyers have an opposing viewpoint to yours, so much so that Canonical is willing to bet their business on it. More about the various opinions can be found on the CDDL wikipedia page: https://en.wikipedia.org/wiki/Common_Development_and_Distribution_License

                                            I think most people can agree that in spirit, both are compatible, to some degree, but there is a difference in that GPL is a project based license, and the CDDL is a file-based license(which makes it unique).

                                            I don’t think either perspective can be called fact until the various court systems have ruled one way or another, and I don’t really see anyone itching to find out enough to dump a team of lawyers in front of the court.

                                            I’m certainly not going to say you are wrong, and Linus has made it very clear he has no intention of incorporating OpenZFS into the Linux tree anytime soon, but I think even if everyone on the planet agreed legally that it could be incorporated I would like to think he(and many others) would hesitate anyway. The Linux tree is already pretty giant, and OpenZFS’s codebase is no slouch either (it’s in the millions of LoC). Plus, there isn’t really a huge benefit in incorporating OpenZFS into the kernel tree, since OpenZFS is cross-OS (Unix, BSD, macOS, Windows, Linux, etc) and the Linux kernel … isn’t.