Re: Thought Experiment
The problem is not that distribution of ZFS binaries is forbidden, per se.
The problem is that if you modify a GPL work (such as the Linux kernel) by merging in some outside code, then under the terms of the GPL, the whole combined work must be distributable under the terms of the GPL. But the ZFS source code is not.
Distributing the ZFS source separately and compiling it locally gets around the problem, because you are creating the combined work locally and not distributing it any further (in either source or binary). This has been done with ZFS for a long time, but it's a pain - it means every system needs a full toolchain installed, and every kernel update is dog slow as modules need to be recompiled.
Now, there is a huge grey area as to whether loading a third-party module into a running Linux kernel, which communicates with it via a defined ABI, is creating a single combined work or is two separate pieces of software.
I note that if you unload the zfs module, the Linux kernel continues to run happily; and you don't need to make a single change to the Linux kernel itself to unplug ZFS from it. But according to some people, the law makes a distinction between calling code via a dynamic linking interface, versus (say) calling code using fork/exec and a pipe or socket.
If so, it seems the law is more technically advanced than most of us.