During the discussion of the task scheduler, one of the participants in the discussion provided an example that despite statements about the need to maintain compatibility when developing the Linux kernel, recent changes to the kernel broke the proper operation of the module "". Linus Torvalds , stating that the principle of " " applies to maintaining the external interfaces of the kernel used by applications in user space, as well as the kernel itself. However, it does not cover separately developed third-party layers over the kernel that are not included in the main kernel, the authors of which must independently track changes in the kernel at their own risk.
Regarding the project "ZFS on Linux," Linus did not recommend using the zfs module due to the incompatibility of the CDDL and GPLv2 licenses. The situation is such that due to Oracle's licensing policy, the chances of ZFS ever being included in the main kernel are very low. Proposed layers to bypass licensing incompatibility that translate access to kernel functions for external code are a questionable solution—lawyers continue to about whether re-exporting GPL functions of the kernel through wrappers creates a derivative work that must be distributed under the GPL license.
The only option under which Linus would agree to accept ZFS code into the main kernel is obtaining official permission from Oracle, certified by the chief attorney, or preferably from Larry Ellison himself. Intermediate solutions, such as layers between the kernel and ZFS code, are unacceptable given Oracle's aggressive intellectual property policies regarding software interfaces (for example, against Google concerning the Java API). Additionally, Linus views the desire to use ZFS as a trend rather than a technical advantage. The performance tests Linus studied do not support ZFS, and the lack of full support does not ensure stability in the long term.
It is important to note that the ZFS code is released under the CDDL open-source license, which is incompatible with GPLv2. This prevents the integration of ZFS on Linux into the main branch of the Linux kernel, as mixing code under GPLv2 and CDDL is not permissible. To circumvent this licensing incompatibility, the 'ZFS on Linux' project has decided to distribute the product entirely under the CDDL license as a separate downloadable module, provided separately from the kernel.
The ability to distribute a ready-made ZFS module within distributions is a subject of controversy among lawyers. Lawyers from the Software Freedom Conservancy (SFC) , that supplying a binary kernel module in a distribution forms a combined product with GPL requirements for distributing the final work under GPL. Lawyers from Canonical and assert that it is permissible to supply the ZFS module as long as the component is provided 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 opposing side argues that the compatibility issue with the kernel in proprietary drivers is resolved by providing a small layer distributed under the GPL license (a GPL module is loaded into the kernel, which then loads proprietary components). For ZFS, such a layer can only be prepared if licensing exceptions are granted by Oracle. In Oracle Linux, incompatibility with GPL is resolved by Oracle providing a licensing exception that removes the requirement for licensing the 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 binding and is regarded as supplying two separate products. In Debian, this is achieved through the DKMS (Dynamic Kernel Module Support) system, where the module is supplied in source code form and compiled on the user's system immediately after the package is installed.
Source: opennet.ru
