Linus Torvalds explicou os problemas com a implementação do ZFS para o kernel Linux

Durante a discussão Testes agendador de tarefas, um dos participantes da discussão deu um exemplo de que apesar das afirmações sobre a necessidade de manter a compatibilidade no desenvolvimento do kernel Linux, mudanças recentes no kernel atrapalharam o correto funcionamento do módulo "ZFS em Linux". Linus Torvalds respondeuque o princípio "não quebre usuários"refere-se à preservação das interfaces externas do kernel usadas pelos aplicativos de espaço do usuário, bem como pelo próprio kernel. Mas não cobre complementos de terceiros desenvolvidos separadamente sobre o kernel que não são aceitos na composição principal do kernel, cujos autores devem monitorar as alterações no kernel por sua própria conta e risco.

Quanto ao projeto ZFS no Linux, Linus não recomendou o uso do módulo zfs devido à incompatibilidade das licenças CDDL e GPLv2. A situação é que, devido à política de licenciamento da Oracle, as chances de o ZFS conseguir entrar no kernel principal são muito pequenas. As camadas propostas para contornar a incompatibilidade de licenciamento, que traduzem o acesso às funções do kernel em código externo, são uma solução duvidosa – continuam os advogados discutir sobre se a reexportação de funções do kernel da GPL através de wrappers resulta na criação de um trabalho derivado que deve ser distribuído sob a GPL.

A única opção em que Linus concordaria em aceitar o código ZFS no kernel principal seria obter permissão oficial da Oracle, certificada pelo advogado principal, ou melhor ainda, pelo próprio Larry Ellison. Soluções intermediárias, como camadas entre o kernel e o código ZFS, não são permitidas, dada a política agressiva da Oracle em relação à propriedade intelectual de interfaces de programação (por exemplo, julgamento com o Google em relação à API Java). Além disso, Linus considera o desejo de usar o ZFS apenas uma homenagem à moda, e não vantagens técnicas. Os benchmarks examinados por Linus não suportam ZFS, e a falta de suporte total não garante estabilidade a longo prazo.

Lembramos que o código ZFS é distribuído sob uma licença CDDL gratuita, incompatível com GPLv2, que não permite a integração do ZFS no Linux ao ramo principal do kernel Linux, pois mistura código sob as licenças GPLv2 e CDDL é inaceitável. Para contornar essa incompatibilidade de licenciamento, o projeto ZFS no Linux decidiu distribuir o produto inteiro sob uma licença CDDL na forma de um módulo carregado separadamente e fornecido separadamente do kernel.

A possibilidade de distribuição de um módulo ZFS pronto como parte de kits de distribuição é polêmica entre os advogados. Advogados da Software Freedom Conservancy (SFC) considereque a entrega de um módulo binário do kernel na distribuição forma um produto combinado com a GPL com a exigência de que o trabalho resultante seja distribuído sob a GPL. Advogados Canônicos não concordo e declare que a entrega de um módulo zfs é aceitável se o componente for fornecido como um módulo independente, separado do pacote do kernel. A Canonical observa que as distribuições há muito usam uma abordagem semelhante para fornecer drivers proprietários, como drivers NVIDIA.

O outro lado afirma que o problema de compatibilidade do kernel em drivers proprietários é resolvido fornecendo uma pequena camada distribuída sob a licença GPL (um módulo sob a licença GPL é carregado no kernel, que já carrega componentes proprietários). Para ZFS, essa camada só poderá ser preparada se exceções de licença forem fornecidas pela Oracle. No Oracle Linux, a incompatibilidade com a GPL é resolvida pela Oracle fornecendo uma exceção de licença que remove a exigência de licenciar trabalho combinado sob CDDL, mas esta exceção não se aplica a outras distribuições.

Uma solução alternativa é fornecer apenas o código-fonte do módulo na distribuição, o que não leva ao agrupamento e é considerado como a entrega de dois produtos separados. No Debian, para isso é utilizado o sistema DKMS (Dynamic Kernel Module Support), no qual o módulo é fornecido em código-fonte e montado no sistema do usuário imediatamente após a instalação do pacote.

Fonte: opennet.ru

Adicionar um comentário