Linus Torvalds menerangkan masalah dengan melaksanakan ZFS untuk kernel Linux

Semasa perbincangan ujian penjadual tugas, salah seorang peserta perbincangan memberikan contoh bahawa walaupun terdapat kenyataan tentang keperluan untuk mengekalkan keserasian semasa membangunkan kernel Linux, perubahan terkini dalam kernel mengganggu operasi modul yang betul "ZFS di Linux". Linus Torvalds jawabbahawa prinsip "jangan pecah pengguna" merujuk kepada memelihara antara muka kernel luaran yang digunakan oleh aplikasi ruang pengguna serta kernel itu sendiri. Tetapi ia tidak meliputi alat tambah pihak ketiga yang dibangunkan secara berasingan ke atas kernel yang tidak diterima ke dalam komposisi utama kernel, yang mana pengarangnya mesti memantau perubahan dalam kernel atas bahaya dan risiko mereka sendiri.

Bagi projek ZFS pada Linux, Linus tidak mengesyorkan menggunakan modul zfs kerana ketidakserasian lesen CDDL dan GPLv2. Keadaannya ialah disebabkan dasar pelesenan Oracle, kemungkinan ZFS akan dapat memasuki kernel utama adalah sangat kecil. Lapisan yang dicadangkan untuk memintas ketidakserasian pelesenan, yang menterjemahkan akses kepada fungsi kernel kepada kod luaran, adalah penyelesaian yang meragukan - peguam meneruskan berhujah tentang sama ada mengeksport semula fungsi kernel GPL melalui pembungkus menghasilkan karya terbitan yang mesti diedarkan di bawah GPL.

Satu-satunya pilihan di mana Linus bersetuju untuk menerima kod ZFS ke dalam kernel utama adalah untuk mendapatkan kebenaran rasmi daripada Oracle, yang diperakui oleh peguam utama, atau lebih baik lagi, Larry Ellison sendiri. Penyelesaian perantaraan, seperti lapisan antara kernel dan kod ZFS, tidak dibenarkan, memandangkan dasar agresif Oracle berkenaan harta intelek antara muka pengaturcaraan (contohnya, perbicaraan dengan Google mengenai API Java). Di samping itu, Linus menganggap keinginan untuk menggunakan ZFS hanya sebagai penghormatan kepada fesyen, dan bukan kelebihan teknikal. Penanda aras yang Linus periksa tidak menyokong ZFS, dan kekurangan sokongan penuh tidak menjamin kestabilan jangka panjang.

Biar kami ingatkan anda bahawa kod ZFS diedarkan di bawah lesen CDDL percuma, yang tidak serasi dengan GPLv2, yang tidak membenarkan ZFS pada Linux disepadukan ke dalam cawangan utama kernel Linux, sejak mencampurkan kod di bawah lesen GPLv2 dan CDDL tidak boleh diterima. Untuk memintas ketidakserasian pelesenan ini, projek ZFS pada Linux memutuskan untuk mengedarkan keseluruhan produk di bawah lesen CDDL dalam bentuk modul yang dimuatkan secara berasingan yang dibekalkan secara berasingan daripada kernel.

Kemungkinan untuk mengedarkan modul ZFS siap sedia sebagai sebahagian daripada kit pengedaran adalah kontroversi di kalangan peguam. Peguam dari Software Freedom Conservancy (SFC) mempertimbangkanbahawa penghantaran modul kernel binari dalam pengedaran membentuk produk yang digabungkan dengan GPL dengan keperluan bahawa kerja yang terhasil diedarkan di bawah GPL. Peguam Kanonik tidak setuju dan nyatakan bahawa penghantaran modul zfs boleh diterima jika komponen dibekalkan sebagai modul serba lengkap, berasingan daripada pakej kernel. Nota kanonik bahawa pengedaran telah lama menggunakan pendekatan yang sama untuk membekalkan pemacu proprietari, seperti pemacu NVIDIA.

Bahagian lain menyatakan bahawa masalah keserasian kernel dalam pemacu proprietari diselesaikan dengan membekalkan lapisan kecil yang diedarkan di bawah lesen GPL (modul di bawah lesen GPL dimuatkan ke dalam kernel, yang sudah memuatkan komponen proprietari). Untuk ZFS, lapisan sedemikian hanya boleh disediakan jika pengecualian lesen disediakan daripada Oracle. Dalam Oracle Linux, ketidakserasian dengan GPL diselesaikan dengan Oracle menyediakan pengecualian lesen yang mengalih keluar keperluan untuk melesenkan kerja gabungan di bawah CDDL, tetapi pengecualian ini tidak digunakan untuk pengedaran lain.

Penyelesaian adalah dengan membekalkan hanya kod sumber modul dalam pengedaran, yang tidak membawa kepada penggabungan dan dianggap sebagai penghantaran dua produk berasingan. Dalam Debian, sistem DKMS (Dynamic Kernel Module Support) digunakan untuk ini, di mana modul dibekalkan dalam kod sumber dan dipasang pada sistem pengguna sejurus selepas memasang pakej.

Sumber: opennet.ru

Tambah komen