ZFS FreeBSD moving to ZFS-on-Linux

I do not have high hopes of this happening. The velocity of change in Linux is too drastic, and they've had a track record of unwillingness to take in account the needs of other platforms, or to maintain interoperability of software.

There will be a culture clash - because we (FreeBSD) have different values and approach to software development. I suspect a scenario where the Linux commits will be more frequent (which have been - due to a larger developer base). These commits will assume Linux interfaces or have fundamental changes to the inner-pinnings of ZFS, which will hamper FreeBSDs ability to merge improvements with the least of amount of friction. Or code quality will suffer. Linux's response will be "Sorry bro!, this is how we work - take it or leave it", and it all goes down from there.

Maybe I'm just being pessimistic about the situation - but i do not trust Linux to be fair and handle a project of such magnitude and prestige. Their culture just doesn't permeate reasonable values.

As one of the ZoL developers, I must say that these remarks are rather hurtful. It is bad enough having to deal with this attitude from mainline Linux, but being accused of it is rather nasty.

I will admit that there was an instance where I complained about bashisms in the code and my complaints were overruled, but with FreeBSD support being added to the tree, getting those bashisms fixed will be fairly easy. That is trivial in comparison to the ZTS that was added long after those complaints, but Matt Macy is working on that and myself and others are available to him to answer questions and give advice.

Aside from those issues with some scripts, we make an effort to have platform independent code (to support as many Linux user lands as possible) and that effort will only become stronger after FreeBSD is added. While I do not maintain the test infrastructure, I expect that FreeBSD will be integrated into the buildbot such that anything that causes a regression on FreeBSD will prevent a patch from being merged. It is like this for all of the Linux distributions that are part of the builbot.

Anyway, I am thrilled to see the codebase being unified with the incoming addition of FreeBSD support to the repository. After FreeBSD is added, it will be easier to add Mac OS X, Windows, Illumos, FUSE, NetBSD, etcetera as targets, I am looking forward to that. Also, doing unification with FreeBSD’s ZFS driver will allow for the ZoL packaging to be reused for the FreeBSD kernel + FreeBSD userland on Gentoo when they are used in place of Linux and GNU. As the person responsible for the Gentoo ZFS packaging, I find that awesome,

Lastly, nothing prevents people from doing distribution specific stuff outside of the repository. Before someone points out the differences between FreeBSD and Linux distributions, I would like to state that BSD stands for the Berkeley Software Distribution. It would be best for everyone if we unified the codebase so that patches can go back and forth, but if we are moving too slowly at merging something, it need not block that from being in FreeBSD’s ZFS code.
 
These are just my observations; certainly not representative of the entire FreeBSD community. Please don't take it as such. It is not our fault your community is toxic. You may not represent the general attitude of your community - but it exists and it's problematic for others in the open source world.
 
Before someone points out the differences between FreeBSD and Linux distributions, I would like to state that BSD stands for the Berkeley Software Distribution.
I would like to point out that Linux is not part of that distribution and, to be clear, that distribution is not even remotely similar to the Linux "distro" if that's what you are implying.

16 years ago, when I started with FreeBSD, we always considered Linux to be a friendly cousin. Over the years, there has been significant bashing by coming from the Linux camp and a divergence away from the UNIX philosophy and all things UNIX and BSD stand for. The tension came from the LInux camp.
 
[...] but with FreeBSD support being added to the tree, getting those bashisms fixed will be fairly easy.
[...] After FreeBSD is added, it will be easier to add Mac OS X, Windows, Illumos, FUSE, NetBSD, etcetera as targets
As I said, a very clear and simple way to close the discussion is to rename ZoL in ZoX(s) (better name needed here...)

The goal is clearly not to port a linux version of OpenZFS in all other OSes but is to have an agnostic ZFS implementation.
The name "ZoL" is confusing for me. (and I think the move is very pragmatic and win-win, don't panic people with just a bad project name :) )

And the choice of the licence is a point of attention too, no ?
 
The goal is clearly not to port a linux version of OpenZFS in all other OSes but is to have an agnostic ZFS implementation.

This is exactly the idea behind OpenZFS but never really worked in practice, and probably would never work. The OpenZFS code was the Illumos code.
 
It is not our fault your community is toxic. You may not represent the general attitude of your community - but it exists and it's problematic for others in the open source world.

It is important, I think, to not conflate Linux (kernel developers) behavior/attitudes and those of the ZFS-on-Linux community. I’ve never seen anything but a desire to have a great piece of software that works well for everyone from the latter. There’s been loads of listening, debug guidance, and helpful resolutions on the issues tracker. As for the former, observe the current kerfuffel over the FPU entry/exit functions.

I’m cautiously optimistic, and looking forward to having more developers pull together. I use both implementations, so having feature parity between them (well, FreeBSD has an opportunity to speed past with vectorized checksums and compression, if they can sieze it) will be welcome, likewise if all the user space flags on the zfs and zpool commands unify...
 
As one of the ZoL developers, I must say that these remarks are rather hurtful.

Thank you for coming here and explaining. And as a FreeBSD user, I'd like to apologize for the toxic aspects of the community here. Unfortunately, the FreeBSD community has its share of haters: Linux haters, OpenBSD haters, MacOS haters, Windows haters, GUI haters, command line haters, and so on. A lot of the negativity I see here comes from lack of knowledge, combined with too strong opinions; not an uncommon thing in online communication. And we have to unfortunately admit that many technical communities contain people who cause division.

I for one welcome anything that improves the tools I use everyday (be it FreeBSD or Linux or whatever other tools), and in particular hope to enjoy better ZFS, on all platforms.
 
These are just my observations; certainly not representative of the entire FreeBSD community. Please don't take it as such. It is not our fault your community is toxic. You may not represent the general attitude of your community - but it exists and it's problematic for others in the open source world.

People using Linux are not a homogenous group. People with hostility toward FreeBSD tend to be involved solely with GPL code, while ZFSOnLinux is under the CDDL (a few bits are under other licenses, such as the BSD license). We are often on the receiving end of the “general attitude” you mention. Here is a recent example:

https://marc.info/?t=154689899000003&r=1&w=2

Honestly, these assumptions are a great way of alienating friends. I am a part of Gentoo (a downstream for both Linux + the GNU userland and FreeBSD’s kernel+userland). I have been rather adamant that our user base maintain good relations with FreeBSD. If you are going to accuse me of being part of a toxic community, please at least provide evidence.

Several years ago, I wrote a patch (really a one liner) to a SCSI driver that ealder committed after a FreeBSD user came to the #zfsonlinux IRC channel to ask for help. Basically, his drives would not be recognized because a driver was overzealously attaching to devices that it did not support. Some quick research found the solution, and the one liner turned off that functionality. I also went out of my way to inform the FreeBSD developers that our drive quirks list was more comprehensive than theirs, which led to FreeBSD committing improvements. Then when I was dabbling with FreeBSD within Gentoo, I found a way to improve the build time of a virtio driver that was in ports and submitted the information to the ports maintainer. I can’t say I do much for FreeBSD, but I am certainly not an enemy and I can say that the people around me aren’t either. For what it is worth, I currently use FreeBSD (through pfSense) for my home router and I rather like it.
 
As I said, a very clear and simple way to close the discussion is to rename ZoL in ZoX(s) (better name needed here...)

The goal is clearly not to port a linux version of OpenZFS in all other OSes but is to have an agnostic ZFS implementation.
The name "ZoL" is confusing for me. (and I think the move is very pragmatic and win-win, don't panic people with just a bad project name :) )

And the choice of the licence is a point of attention too, no ?

The name ZFSOnLinux is for historical reasons and given that we can only build support for Linux at this time, the name is still appropriate. I imagine at some point it will be renamed to something more appropriate, but that discussion feels premature until the FreeBSD support is merged. That will likely happen after the 0.8 release. We would probably have the organizational things in place long before a name change is considered. As far as getting things done, what we call it for now is not very important though.

WRT license, I actually proposed a change a few days ago as part of an attempt to make peace with mainline, but that was a switch to a dual CDDL/GPL for the kernel code, with the assumption that we would somehow phase out or have alternative implementations of all of the Oracle owned kernel code over several years, subject to legal review and agreement among all of the OpenZFS developers (including those from FreeBSD).

Others have doubts that the plan would pass legal review and some suggested using a BSD/CDDL instead. Maintaining the original CDDL codebase in certain key locations would be a must for patent protection (especially on FreeBSD) and plenty of research would be needed to find out what those locations are. Unless the FreeBSD foundation can negotiate with Netapp and a few others for patent grants independent of the CDDL, the ZFS code on FreeBSD absolutely must remain under the CDDL to be covered by the agreement that Oracle made with Netapp.
 
I would like to point out that Linux is not part of that distribution and, to be clear, that distribution is not even remotely similar to the Linux "distro" if that's what you are implying.

16 years ago, when I started with FreeBSD, we always considered Linux to be a friendly cousin. Over the years, there has been significant bashing by coming from the Linux camp and a divergence away from the UNIX philosophy and all things UNIX and BSD stand for. The tension came from the LInux camp.

Not every Linux user is like that. I am also involved with Gentoo and Gentoo never got on board with that stuff (beyond offering those guys’ code as a choice). Gentoo has always been about choice and the UNIX philosophy is very compatible with that.
 
People using Linux are not a homogenous group. People with hostility toward FreeBSD tend to be involved solely with GPL code, while ZFSOnLinux is under the CDDL (a few bits are under other licenses, such as the BSD license).

Not every Linux user is like that. I am also involved with Gentoo and Gentoo never got on board with that stuff (beyond offering those guys’ code as a choice). Gentoo has always been about choice and the UNIX philosophy is very compatible with that.

Thanks for acknowledging that. I still don't trust these shared goals to be abided by ZoL - but that's my issue. If you and the greater mainline Linux community have such polarizing values and attitude - then why use Linux to begin with? I'm curious.
 
Thanks for acknowledging that. I still don't trust these shared goals to be abided by ZoL - but that's my issue. If you and the greater mainline Linux community have such polarizing values and attitude - then why use Linux to begin with? I'm curious.

Software compatibility, driver support, plus familiarity. Linux also is flexible in many ways that others are not. The build system lets you add/remove entire subsystems via a cursive interface. The number of supported platforms is very high. The number of options for CPU schedulers, IO elevators, congestion avoidance algorithms and filesystems is high. It supports running foreign binaries via userspace interpreters (e.g. qemu-user) through binfmt_misc. Linux supports rebooting by using the running kernel as a bootloader. Linux tends to have many runtime alterable tunables whose equivalents are set at build time in FreeBSD. All of the little things that give Linux flexibility are hard to enumerate, but those are a few. Third party software support is also a thing on Linux such that we have skype and signal applications, among others.

In theory, I could switch to Gentoo FreeBSD, although the amount of work that needs to be done to get the desktop that I get right now is fairly large due to packaging issues. The amount of effort that goes into Gentoo FreeBSD is rather small and it often lags behind, especially for desktop usage. On a laptop, you have highly efficient power usage on Linux and Network Manager to allow easy network configuration on the go. It is just very convenient.

That being said, I am rather happy with my current setup and don’t want to spend a bunch of time to get the same thing. I already went through that once when going from Windows to Linux. I don’t feel like doing that again.
 
Hi ryao,

just to explore you a bit, sometime ago I had one of those random ideas in that case about P2P. That didn't evolve but someone replied with the idea of implementing P2P capabilities to zfs send | zfs recv. He indeed pointed the PPSP (Peer-to-Peer Streaming Protocol) which could be a good one for that.

Do you think that would be viable?

Cheers!
 
Hi ryao,

just to explore you a bit, sometime ago I had one of those random ideas in that case about P2P. That didn't evolve but someone replied with the idea of implementing P2P capabilities to zfs send | zfs recv. He indeed pointed the PPSP (Peer-to-Peer Streaming Protocol) which could be a good one for that.

Do you think that would be viable?

Cheers!

My first thought is that doing zfs recv on an arbitrary send stream is a security risk. The code does not do validation of the data because everything that makes up a filesystem is stored in a layer above where the send stream operates. I do not see this working unless you devise a way to sign send streams. It probably is possible to normalize them for the purpose of generating a checksum that you can sign, but you would also need to be very certain that the format does not change across FreeBSD versions such that the checksum would become invalid. This also requires buffering the stream in a file before receiving it. You would probably want to talk to Andriy Gapon about this. He is more familiar with the send stream internals than I am.

Also, there was a filesystem independent incremental send/recv that we were developing at ClusterHQ that was not exactly finished, but went into flocker before ClusterHQ went under. The last version had the issue that hardlinks were not properly handled (properly handling them requires a state machine that was difficult to construct). It would be more secure than ZFS send/recv and would work well for something like this. There was a provisional patent filed for it that I believe was supposed to be turned over to the Open Invention Network though.
 
As I said, a very clear and simple way to close the discussion is to rename ZoL in ZoX(s) (better name needed here...)

The goal is clearly not to port a linux version of OpenZFS in all other OSes but is to have an agnostic ZFS implementation.
The name "ZoL" is confusing for me. (and I think the move is very pragmatic and win-win, don't panic people with just a bad project name :) )

The name you are looking for is OpenZFS, which is what this project will become. :)

For now, it's called ZFS-on-Linux, with the FreeBSD "port" called ZFS-on-FreeBSD (ZoF). Once the transition from Illumos-based OpenZFS to ZoL-based OpenZFS is done, it'll all just be called OpenZFS.

And the choice of the licence is a point of attention too, no ?

The code is under the CDDL, and will remain under the CDDL. Would be extremely hard to change that.
 
I know I'm only one person, but I use FreeBSD for a number of reasons, and ZFS has never been one of those reasons.

Like most here, I suspect, I came because of the well-designed base system and excellent documentation. But the one feature I'm loath to lose at this stage is boot environments -- which require ZFS. So if ZFS starts to suffer, so does the best feature on FreeBSD. But ultimately, I don't trust Linux. systemd is all the evidence you should need to not trust them either.
 
I vaguely remember that we discussed that article on this forum already. I can't remember what conclusion (if any) we reached. Search for it please.
 
I vaguely remember that we discussed that article on this forum already. I can't remember what conclusion (if any) we reached. Search for it please.

I didn’t see it but I didn’t read every message. Was it this thread?

I remember a guy who seemed too intelligent to be a Linux developer, but he wrote, he was one. And he said his life was already difficult due to the typical Linux developers, and it makes it worse if we bash Linux for its typical developer-culture. I rarely see a statement so sad and so funny at the same time as his portray of Linux was.

I don’t know whether the ZoL developers had access to commit their work to upstream. Maybe they didn’t have. But if they had, and they did not use it, I’m not sure why anyone thinks they would start caring about anything else in the future. OpenZFS was not only for Linux and FreeBSD. It’s the only fs for Mac that’s reliable and supports compression and checksums too. Right now I’m not using it only because Google’s Backup and Sync thinks it knows it better what fs I should use than I do. A funny detail is that OpenZFS made me sure it wasn’t my USB SSD that corrupted my files but it was DropBox. That’s why I switched to Google Drive. And now they don’t let me mount it on ZFS.

If Linux becomes the upstream, ZFS on Mac is dead.

I’m not Thor but the only thing I can say when it happens: Where is my Hammer?
 
I don’t know whether the ZoL developers had access to commit their work to upstream. Maybe they didn’t have. But if they had, and they did not use it, I’m not sure why anyone thinks they will start caring about anything else in the future.

Key ZFS developers from the FreeBSD are happy to support this move. The project (soon to be formerly) called ZFS on Linux will be taking on board automated FreeBSD tests so that changes made by Linux devs don't break ZFS for FreeBSD and vice versa - I believe this isn't something the original OpenZFS project ever offered.
This information is, I understand, available via the OpenZFS Leadership meeting videos - though I tend to get a condensed version via Allan Jude on the BSDNow podcast.

If Linux becomes the upstream, ZFS on Mac is dead.

Checking out the OpenZFS on Mac forums, there are a couple of threads (here and here) that say that the Mac port was originally based off of ZoL and so switching back should not be too hard. So, potentially if ZoL are open to having FreeBSD automated tests so things work across the two systems, they would likely be open to having Mac tests too.

I’m not Thor but the only thing I can say when it happens: Where is my Hammer?

Lookout for Dragonflies ;)
 
Back
Top