"ZFS is licensed under the Common Development and Distribution License (CDDL), and the Linux kernel is licensed under the GNU General Public License Version 2 (GPLv2). While both are free open source licenses they are restrictive licenses. The combination of them causes problems because it prevents using pieces of code exclusively available under one license with pieces of code exclusively available under the other in the same binary. "
as others have said below. the CDDL or 'cuddle' license as some chose to pronounce it. Is incompatible with the GPL, which means two things.
1 - We can't just take the code and add it to the kernel.
2 - The patent and other legal grants in the licence won't apply if we try to reverse engineer a compatible GPL2 equivalent for the kernel to use, which will be a HUGE risk for the few companies that would probably consider the cost of reverse engineering worth it. And before you say it can be done without company support. I have 2 things to say, hows that going for the ReiserFS 4 fans who wanted to keep improving that, and in order to continue the work on ZFS effectively, the existing ZFS developers have 'ganged up' and now try to work on everything so that the openzfs project can be a single source of truth for the ZFS source code, and a reverse engineered version would be very unlikely to benefit from this, and would therefore require even more developer time just keeping up with the improvements 'upstream' in ZFS from the 'original' ZFS codebase.
In the case of the kernel, this prevents us from distributing ZFS as part of
the kernel binary. However, there is nothing in either license that prevents
distributing it in the form of a binary module or in the form of source code.
ZFS cannot be added to Linux directly because the CDDL is incompatible with the GPL.
ZFS can, however, be distributed as a DKMS package separate from the main kernel package.
"ZFS is licensed under the Common Development and Distribution License (CDDL), and the Linux kernel is licensed under the GNU General Public License Version 2 (GPLv2). While both are free open source licenses they are restrictive licenses. The combination of them causes problems because it prevents using pieces of code exclusively available under one license with pieces of code exclusively available under the other in the same binary. "