Linus Torvalds explained the problems with implementing ZFS for the Linux kernel

During the discussion tests task scheduler, one of the discussion participants gave an example that despite statements about the need to maintain compatibility when developing the Linux kernel, recent changes in the kernel disrupted the correct operation of the module "ZFS on Linux". Linus Torvalds answeredthat the principle "do not break users" refers to preserving the external kernel interfaces used by user space applications as well as the kernel itself. But it does not cover separately developed third-party add-ons over the kernel that are not accepted into the main composition of the kernel, the authors of which must monitor changes in the kernel at their own peril and risk.

As for the ZFS on Linux project, Linus did not recommend using the zfs module due to the incompatibility of the CDDL and GPLv2 licenses. The situation is that due to Oracle's licensing policy, the chances that ZFS will ever be able to enter the main kernel are very small. The layers proposed to bypass licensing incompatibility, which translate access to kernel functions to external code, are a dubious solution - lawyers continue argue about whether re-exporting GPL kernel functions through wrappers results in the creation of a derivative work that must be distributed under the GPL.

The only option in which Linus would agree to accept the ZFS code into the main kernel is to obtain official permission from Oracle, certified by the main lawyer, or better yet, Larry Ellison himself. Intermediate solutions, such as layers between the kernel and ZFS code, are not allowed, given Oracle's aggressive policy regarding intellectual property of programming interfaces (for example, proceedings with Google regarding the Java API). In addition, Linus considers the desire to use ZFS only a tribute to fashion, and not technical advantages. The benchmarks that Linus examined don't support ZFS, and the lack of full support doesn't guarantee long-term stability.

Let us remind you that the ZFS code is distributed under a free CDDL license, which is incompatible with GPLv2, which does not allow ZFS on Linux to be integrated into the main branch of the Linux kernel, since mixing code under the GPLv2 and CDDL licenses is unacceptable. To circumvent this licensing incompatibility, the ZFS on Linux project decided to distribute the entire product under a CDDL license in the form of a separately loaded module that is supplied separately from the kernel.

The possibility of distributing a ready-made ZFS module as part of distribution kits is controversial among lawyers. Lawyers from the Software Freedom Conservancy (SFC) count them.that the delivery of a binary kernel module in the distribution forms a product combined with the GPL with the requirement that the resulting work be distributed under the GPL. Canonical Lawyers do not agree and state that delivery of a zfs module is acceptable if the component is supplied as a self-contained module, separate from the kernel package. Canonical notes that distributions have long used a similar approach to supply proprietary drivers, such as NVIDIA drivers.

The other side counters that the problem of kernel compatibility in proprietary drivers is solved by supplying a small layer distributed under the GPL license (a module under the GPL license is loaded into the kernel, which already loads proprietary components). For ZFS, such a layer can only be prepared if license exceptions are provided from Oracle. In Oracle Linux, incompatibility with the GPL is resolved by Oracle providing a license exception that removes the requirement to license combined work under CDDL, but this exception does not apply to other distributions.

A workaround is to supply only the source code of the module in the distribution, which does not lead to bundling and is considered as the delivery of two separate products. In Debian, the DKMS (Dynamic Kernel Module Support) system is used for this, in which the module is supplied in source code and assembled on the user’s system immediately after installing the package.

Source: opennet.ru

Add a comment