It seems like a lot of your issues with zfs are a) specific to the linux port, which is in itself a work in progress and b) a lack of understanding of the filesystem. Granted ZFS requires more tuning and configuration than anything else out of the box.
I’d argue that mdadm + ext4 is the best linux specific raid solution on desktop at present, and the functionality that BcacheFS offers is better implemented than btrfs.
Regarding the ZoL specific issues, as this is an agnostic comparison (we don’t judge hfs performance based on the linux module, or other non-native systems based on their FUSE drivers, right?):
Not an issue on native systems, and even several distros ship with zfs in their default kernels
partly a lack of tuning on your part, partly an issue with the way linux handles vmalloc() – a flaw with the linux kernel, that the ZoL devs can’t fix by themselves, due to redhat’s influence and the FSF’s general hostility to the CDDL, there’s no way for them to make changes, or better integrate zfs on a lot of different levels. It’s unfortunate, but zfs may never run at full speed on linux.
again, though, not an issue on any of its native systems.
Boot environments have been a unix mainstay since the late nineties, available on solaris and other operating systems since before btrfs, or zfs existed, it’s actually really suprising that linux went this long without them.
That said, from what I understand of btrfs snapshotting (do they have checkpoints implemented yet?) there’s a performance overhead with their implementation similar to LVM snapshots, and that’s not desirable for someone who wants to manage boot environments often.
I’m not sure if boot environments are even on the ZoL roadmap, but it’s a feature that ZFS has natively supported for a very long time on its native operating systems.
as is native ZFS, if not tangibly better with proper configuration. Also, not the case with CoW enabled on btrfs.
this isn’t a feature. It is vital that this data structure not be user-editable for the integrity of the larger storage pool. Optional CoW is worse than no CoW
this will become a feature in btrfs as soon as they start fixing all of their architectural problems to enable feature completeness, I guarantee it.
Also, while it is an issue in native zfs, the time between incompatible versions is much greater, and there’s no zfs fuse branch to worry about.
that out of the way, I’d look into bcache if you want to support a linux CoW filesystem that actually has a chance at being feature complete AND stable/bug free. The way the btrfs devs treat their issues is just as bad as systemd/pulsaudio.