пятница, 10 января 2020 г.

Линус Торвальдс пояснил, в чём проблемы реализации 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), при которой модуль поставляется в исходных текстах и собирается на системе пользователя, непосредственно после установки пакета.

Комментариев нет:

Отправить комментарий