Линус Торвальдс пояснил, в чём проблемы реализации ZFS для ядра Linux
В ходе обсуждения тестов планировщика задач, один из участников дискуссии привёл пример того, что несмотря на заявления о необходимости сохранения совместимости при разработке ядра Linux, недавние изменения в ядре нарушили корректную работу модуля «ZFS on Linux». Линус Торвальдс ответил, что принцип «не ломать пользователей» относится к сохранению внешних интерфейсов ядра, используемых приложениями в пространстве пользователя, а также самого ядра. Но он не охватывает отдельно развиваемые сторонние надстроки над ядром, не принятые в основной состав ядра, авторы которых на свой страх и риск сами должны отслеживать изменения в ядре.
Что касается проекта «ZFS on Linux», то Линус не рекомендовал пользоваться модулем zfs из-за несовместимости лицензий CDDL и GPLv2. Ситуация такова, что из-за лицензионной политики компании Oracle шансы, что ZFS когда-нибудь сможет войти в основной состав ядра очень малы. Предлагаемые для обхода лицензионной несовместимости прослойки, транслирующие доступ к функциям ядра для внешнего кода, являются сомнительным решением — юристы продолжают спорить о том, приводит ли реэкспортирование GPL-функций ядра через обёртки к созданию производной работы, которую требуется поставлять под лицензией GPL.
Единственным вариантом, при котором Линус согласился бы принять код ZFS в основное ядро, называется получение от компании Oracle официального разрешения, заверенного главным юристом, а лучше самим Ларри Эллисоном. Промежуточные решения, такие как прослойки между ядром и кодом ZFS, недопустимы, с учётом агрессивной политики Oracle в отношении интеллектуальной собственности на программные интерфейсы (как пример, разбирательство с Google по поводу Java API). Кроме того, Линус считает стремление использовать ZFS лишь данью моде, а не техническими преимуществами. Тесты производительности, которые изучал Линус, не свидетельствуют в пользу ZFS, а отсутствие полноценного сопровождения не гарантирует стабильность в долгосрочной перспективе.
Напомним, что код ZFS распространяется под свободной лицензией CDDL, которая несовместима с GPLv2, что не позволяет добиться интеграции ZFS on Linux в состав основной ветки ядра Linux, так как смешивание кода под лицензиями GPLv2 и CDDL недопустимо. Для обхода данной лицензионной несовместимости проектом «ZFS on Linux» было решено распространять продукт целиком под лицензией CDDL в виде отдельно загружаемого модуля, который поставляется отдельно от ядра.
Возможность распространение готового модуля ZFS в составе дистрибутивов вызывает споры у юристов. Юристы организации Software Freedom Conservancy (SFC) считают, что поставка в дистрибутиве бинарного модуля ядра образует комбинированный с GPL продукт с требованием распространения итоговой работы под GPL. Юристы компании Canonical не согласны и утверждают, что поставка модуля zfs допускается, если компонент поставляется в виде самодостаточного модуля, отдельно от пакета с ядром. Canonical отмечает, что дистрибутивы давно используют подобный подход для поставки проприетарных драйверов, таких как драйверы NVIDIA.
Другая сторона парирует, что проблема совместимости с ядром в проприетарных драйверах решается поставкой небольшой прослойки, распространяемой под лицензией GPL (в ядро грузится модуль под лицензией GPL, который уже загружает проприетарные компоненты). Для ZFS подобную прослойку можно подготовить только в случае предоставления лицензионных исключений от компании Oracle. В Oracle Linux несовместимость с GPL решается подоставлением компанией Oracle лицензионного исключения, снимающего требование по лицензированию комбинированной работы под CDDL, но это исключение не действует для других дистрибутивов.
Обходным манёвром является поставка в дистрибутиве только исходных текстов модуля, которая не приводит к связыванию и рассматривается как поставка двух отдельных продуктов. В Debian для этого задействована система DKMS (Dynamic Kernel Module Support), при которой модуль поставляется в исходных текстах и собирается на системе пользователя, непосредственно после установки пакета.
Источник: http://www.opennet.ru/opennews/art.shtml? num=52164
© OpenNet