The only thing I currently run on FreeBSD is my storage box. ZFS is absolutely amazing, and FreeBSD supports it fully and without any of the "jank" you'd get running ZFS on Linux. It Just Works (tm), bottom to top. Anything else, I want what I'm familiar with on Linux, like containers and systemd services. I know some people really love pf, but I've been using iptables for so long it would be annoying to switch at this point. So really, it comes down to what you're familiar and comfortable with, and using the right tool for the job.
> ZFS is absolutely amazing, and FreeBSD supports it fully and without any of the "jank" you'd get running ZFS on Linux.
This is why I use FreeBSD as well for my home server, first class ZFS support out of the box. Void Linux musl on my desktop.
I had an old 2TB ZFS array that was part of a trunas setup kicking around for years. I needed to recover some files from it so I hooked all the disks to a motherboard and booted FreeBSD live. I didn't have to do anything, the array was already up and running when I logged in. ezpz.
ZFS is a first-class citizen on Void Linux, too. There's a lot of care and consideration put into the kernel packages to ensure compatibility with ZFS. ZFSBootMenu is 'native' to Void as well, and the features it provides are quite far ahead of what FreeBSD's bootloader has.
I prefer OS variety and have a mix of Plan 9, Linux, FreeBSD and OpenBSD running my personal stuff.
> without any of the "jank" you'd get running ZFS on Linux.
What jank? Compile it in the kernel of load the module, install the zfs utils, then it's done. Very simple, no complications, where is the jank?
Ostensibly DKMS can be interpreted as jank, for situations where you upgrade your kernel, zfs integration fails or blocks that, and now you are in limbo. At least, I can imagine this being a complaint from someone.
I can see that. I compile ZFS directly into the kernel so I've never really dealt with DKMS issues.
I certainly would qualify having to compile it for your kernel as jank.
It's not a different step to have to compile it for my kernel. I patch it in and after that it's a transparent part of compiling a kernel in total.