Линус Торвальдс пояснил, в чём проблемы реализации ZFS для ядра Linux
10 января 2020 года
В ходе обсуждения тестов планировщика задач, один из участников дискуссии привёл пример того, что несмотря на заявления о необходимости сохранения совместимости при разработке ядра 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), при которой модуль поставляется в исходных текстах и собирается на системе пользователя, непосредственно после установки пакета.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.