In der Diskussion des Task-Schedulers brachte ein Teilnehmer ein Beispiel an, dass trotz der Aussagen über die Notwendigkeit der Wahrung der Kompatibilität bei der Entwicklung des Linux-Kernels, jüngste Änderungen im Kernel die korrekte Funktion des Moduls "" beeinträchtigten. Linus Torvalds , dass das Prinzip " " die Erhaltung der externen Schnittstellen des Kernels betrifft, die von Anwendungen im Nutzerraum verwendet werden, sowie den Kernel selbst. Es umfasst jedoch nicht separat entwickelte externe Schichten über dem Kernel, die nicht im Hauptkern aufgenommen wurden, deren Autoren auf eigenes Risiko die Änderungen im Kernel selbst verfolgen müssen.
Was das Projekt "ZFS on Linux" betrifft, so riet Linus davon ab, das zfs-Modul aufgrund der Lizenzunverträglichkeit zwischen CDDL und GPLv2 zu verwenden. Die Situation ist so, dass aufgrund der Lizenzpolitik von Oracle die Chancen, dass ZFS jemals in den Hauptkern aufgenommen wird, sehr gering sind. Die vorgeschlagenen Lösungen zur Umgehung der Lizenzunverträglichkeit, die den Zugriff auf Funktionen des Kernels für externen Code übertragen, sind eine fragwürdige Lösung – Juristen streiten weiterhin , ob die Re-Exportierung von GPL-Funktionen des Kernels durch Wrapper eine abgeleitete Arbeit schafft, die unter der GPL-Lizenz bereitgestellt werden muss.
Die einzige Möglichkeit, unter der Linus zustimmen würde, den ZFS-Code in den Hauptkernel aufzunehmen, besteht darin, eine offizielle Genehmigung von Oracle zu erhalten, die von dem Chefjuristen und besser noch von Larry Ellison selbst unterzeichnet ist. Zwischenlösungen, wie Schichten zwischen dem Kernel und dem ZFS-Code, sind aufgrund der aggressiven Politik von Oracle zum Schutz des geistigen Eigentums an Programmierschnittstellen (zum Beispiel das mit Google über die Java-API) nicht zulässig. Darüber hinaus betrachtet Linus den Versuch, ZFS zu verwenden, eher als einen Modeerscheinung und nicht als technische Vorteile. Die Leistungstests, die Linus untersucht hat, sprechen nicht für ZFS, und das Fehlen einer umfassenden Unterstützung garantiert keine Stabilität auf lange Sicht.
Erinnern wir uns daran, dass der ZFS-Code unter der freien CDDL-Lizenz veröffentlicht wird, die mit GPLv2 nicht kompatibel ist, was eine Integration von ZFS on Linux in den Hauptzweig des Linux-Kernels verhindert, da die Mischung von Code unter GPLv2 und CDDL nicht zulässig ist. Um diese Lizenzunverträglichkeit zu umgehen, wurde im Projekt "ZFS on Linux" beschlossen, das Produkt vollständig unter der CDDL-Lizenz als separat ladbares Modul bereitzustellen, das separat vom Kernel geliefert wird.
Die Möglichkeit, ein fertiges ZFS-Modul in die Distributionen zu integrieren, führt zu Rechtsstreitigkeiten unter Juristen. Die Juristen der Software Freedom Conservancy (SFC) , dass die Bereitstellung eines binären Kernelmoduls in der Distribution ein kombiniertes Produkt mit GPL darstellt, das die Bereitstellung des Endprodukts unter GPL fordert. Juristen von Canonical und argumentieren, dass die Bereitstellung des zfs-Moduls zulässig ist, wenn die Komponente als eigenständiges Modul, getrennt vom Kernel-Paket, bereitgestellt wird. Canonical weist darauf hin, dass Distributionen seit langem diesen Ansatz zur Bereitstellung proprietärer Treiber, wie z.B. NVIDIA-Treiber, verwenden.
Die andere Seite erwidert, dass das Problem der Kompatibilität mit dem Kernel in proprietären Treibern durch die Bereitstellung einer kleinen Schicht gelöst wird, die unter der GPL-Lizenz bereitgestellt wird (im Kernel wird ein GPL-Modul geladen, das dann die proprietären Komponenten lädt). Für ZFS kann eine solche Schicht nur bereitgestellt werden, wenn Lizenzausnahmen von Oracle gewährt werden. In Oracle Linux wird die Unverträglichkeit mit GPL durch die Bereitstellung einer Lizenzausnahme durch Oracle gelöst, die die Anforderung zur Lizenzierung der kombinierten Arbeit unter CDDL aufhebt, jedoch gilt diese Ausnahme nicht für andere Distributionen.
Eine Umgehung besteht darin, in der Distribution nur den Quellcode des Moduls bereitzustellen, was kein Binding erzeugt und als Bereitstellung zweier separater Produkte betrachtet wird. In Debian wird hierfür das DKMS (Dynamic Kernel Module Support) System verwendet, bei dem das Modul als Quelltext bereitgestellt und auf dem Benutzer-System direkt nach der Installation des Pakets kompiliert wird.
Quelle: opennet.ru
