Módulos de kernel binários e liberdade

Eu sei que não deveria estar escrevendo sobre isso sob pena de gerar infindáveis discussões e sei que o post que eu vou citar pode ser incluso como parte da guerra entre a Red Hat e a Novell que se iniciou após o acordo entre Novell e Microsoft vir a público, mas, deixando o fato de que ambas Red Hat e Novell estão cada uma tentando defender o seu peixe, é interessante citar o último post de Dave Jones, kernel hacker da Red Hat que mantém o kernel da distribuição Fedora.

Ele toca em um assunto importante, que é a liberdade, e critica o Ubuntu por aparentemente ter decidido incluir módulos binários por padrão no kernel da próxima versão do Ubuntu. Tente deixar de lado o fato que existe sim uma briga por trás dos bastidores e que, como funcionário da Red Hat, é improvável que ele defenderia as ações de um concorrente, mas tenha em mente que, antes de ser um funcionário da Red Hat, ele tem razão em relação a questão da liberdade.

Apesar de já ser algo bastante antigo, Dave foi astuto em notar um documento já antigo escrito por Arjan van de Ven há algum tempo atrás sobre módulos binários sendo incluídos no kernel Linux e os resultados futuros que isso poderia gerar.

Eu já havia lido esse documento na época que Arjan o tornou público, mas devido ao asunto parecer ter voltado à tona novamente e a pessoas já terem me perguntando várias vezes sobre drivers (módulos de kernel, na verdade) binários para Linux e porque os mesmos não são incluídos no kernel de uma vez para “facilitar” a vida dos usuários, resolvi traduzí-lo aqui.

É importante deixar claro que é uma tradução não oficial e feita de forma rápida e, como tal, pode conter erros. Conto com a ajuda de quem encontrá-los pra relatá-los e permitir que eu os corrija para tornar esse post o mais correto possível. Segue abaixo a tradução do documento do Arjan, antigo mais ainda bastante atual :

Linux em um mundo binário
=========================

O que aconteceria se … o que aconteceria se os desenvolvedores do kernel
Linux amanhã aceitassem que módulos de kernel binários estivessem OK e que os mesmos fossem essenciais para o progresso do Linux.

Um cenário hipotético do final dos tempos por Arjan van de Ven

A hipótese primária nesse cenário obviamente não vai acontecer, mas todas as hipóteses que a seguem são coisas que possuem uma base e que são verdadeiras em uma forma ou outra, mas é claro que nomes de “inocentes” foram omitidos.

Em 6 de Dezembro de 2005 os desenvolvedores do kernel decidem em massa que módulos binários são legalmente aceitos e também essenciais para o progresso do Linux e, dessa forma, são algo desejável. Em um primeiro momento, o processo de desenvolvimento do kernel Linux não muda muito além do fato de que alguns símbolos a mais são exportados, e o símbolo EXPORT_SYMBOL_GPL é removido.

Dentro de 3 semanas, distribuições como o Red Hat Linux Enterprise e o SuSE SLES começam a incluir uma ampla variedade de módulos binários em seus CDs de instalação. O Debian renuncia a isso e continua puro a sua causa, como o fazem outras distribuições abertas como o Fedora Core e o
openSuSE.

As distribuições corporativas (enterprise) só não incluem os módulos da nVidia e da ATI, mas incluem todos os módulos de distribuidores OEM de “fakeraid” (RAID falso, ou pseudo-RAID) e diversos módulos wireless, winmodem, winDSL e TCP-offloading. Porém, ao contrário da nVidia e da ATI, a maioria dos distribuidores de módulos binários não fornecem seus drivers em um formato de “camada de cola” (glue layer) : eles fornecem somente os binários finais.

Diversos distribuidores de hardware que foram amigáveis ao movimento de código aberto até então vêem seus competidores fornecer somente drivers binários e internamente começam a sofrer pressão para também manter sua propriedade intelectual (IP) privada e eles sabem que não usaram alguns recursos de seu hardware porque seus departamentos legais não queriam sua propriedade intelectual se tornando pública.

Como resultado eles acham que os drivers binários de seus competidores estão em vantagem teórica, ou que pelo menos seus próprios drivers poderiam estar em vantagem caso eles também fossem fechados, porque nesse caso eles poderiam utilizat aqueles outros recursos extras para
se manter a frente de seus competidores.

Em Fevereiro de 2006, por volta da metade dos distribuidores de hardware refocaram seus esforços internos para drivers Linux para criar valor agregado em drivers binários que lançarão além dos drivers abertos que já existem. Alguns distribuidores até mesmo pararam de suportar seus drivers abertos porque não possuem recursos suficientes para fazê-lo.

1 de Março. Todas as ntícias dos maiores distribuidores de hardware saem com a próxima geração de hardware de armazenamento e rede. Esse hardware é distribuído com drivers binários para as últimas 2 versões das distribuições RHEL e SLES e esses drivers já estão integrados nas atualizações de Fevereiro dessas distribuições

Um desses distribuidores de hardware lançam seu driver em um formato .o mais um formato de camada de cola, os outros não se importam e lançam somente versões binárias para essas duas distribuições. Dois dos fabricantes de placas de rede lançam uma atualização para seus drivers de código aberto para suportar minimamente as novas placas, os outros nem isso o fazem. Hardware destinado ao público em geral não é amplamente afetado : a maioria dos chipsets destinados ao público em geral padronizaram em AHCI para armazenamento SATA e mantiveram o conjunto de recursos existente em chipsets de rede.

1 de Abril. 2 dos fabricantes de chipsets destinado ao consumo geral atualizam seus chipsets para que os mesmos incluam novos e excitantes recursos de áudio que oferecem reprodução de DVD melhorada, mas infelizmente isso os levou a desviar da interface de hardware de áudio i810 ‘padrão’. Um deles lança um driver binário para algumas distribuições e o outro não considerou o Linux relevante para o desktop e ainda não se preocupou em desenvolver um driver para Linux.

1 de Maio. Todo hardware para servidores que você pode comprar requer pelo menos um, mas normalmente 2 ou 3 módulos binários para funcionar. Apesar de alguns desses módulos estarem disponíveis no formato BLOB+cola, diversos estão somente disponíveis para RHEL3, RHEL4 e SLES9 e em alguns casos o recém-lançado SLES10.

Usuários Linux terão a sua escolha 4 kernels para esses servidores ao mesmo tempo, mas nenhuma esperança de poder usar um kernel oficial do kernel.org nesses servidores. O pessoal do Ubuntu está bem desapontado e trabalhando duro, com sucesso variado, conseguir disponibilizar drivers para sua
distribuição. Devido ao sucesso desse lobby, por volta de 50% desses servidores tambpem podem ser usados com o kernel do Ubuntu.

1 de Junho. Uma grande discussão (flamewar), a quarta sobre esse assunto desde Janeiro, acontece na lista de discussão linux-kernel. Usuários e alguns desenvolvedores estão querendo que o kernel do site kernel.org adote a ABI de módulos do RHEL ou do SLES. Investigações mostram que isso não é possível, e a discussão se torna uma discussão sobre o design de uma nova ABI versus congelar a ABI existente.

Muitos desenvolvdores do kernel acham que que a ABI ad-hoc existente não é adequada para congelamente e que uma nova ABI e uma nova API, criada para que possam ser tornadas estáveis de forma mais fácil é o caminho certo a ser seguido, enquanto outros dizem que isso iria requerer muito tempo e que isso não ajudaria pelos próximos 2 anos até que o RHEL e o SLES tenham adotado essa ABI, e pelo menos demandaria um congelamento imediato da ABI do kernel do site kernel.org de forma que o futuro RHEL5 talvez a utilizasse, o que levaria a drivers serem desenvolvidos para a mesma. Usuários normalmente usam o RHEL ou o SLES para servidores de produção e clones como o CentOS, que lançaram kernels compatíveis binariamente.

1 de Julho. É crescemente difícil rodar Linux sem módulos binários na maioria do novos PCs destinados ao público em geral. Enquanto que um ano atrás as pessoas teriam que abdicar da aceleração 3D para isso rotineiramente, agora até mesmo suporte a 2D não funciona sem drivers
binários, nem rede (ambos rede cabeada e wireless) ou som. Para metade das máquinas não existe suporte a Linux disponível de forma geral, enquanto 20% utilizam camadas de tradução como o ndiswrapper para rodar os drivers de som e rede do Windows.

O Debian, incapaz de rodar na maioria das máquinas atuais, está perdendo quantidades massivas de usuários para o Ubuntu e os híbridos Ubuntu-Debian. A lista de discussão debian-legal e outras listas do projeto Debian são impossíveis de serem lidas por pessoas não interessadas nesse tópico
inflamatório em particular. A maioria dos distribuidores que mantinham seus drivers de código aberto ao menos parcialmente atualizados pararam de fazê-lo.

14 de Julho. Linus declara a ABI do kernel estável mas também inicia a série 2.7 do kernel e declara que o kernel 2.8 terá uma ABI diferente. Na prática, somente pessoas que mantiveram suas máquinas antigas podem ajudar o desenvolvimento da série 2.7, uma vez que nenhum dos distribuidores
de drivers, nem mesmo aqueles que ainda possuem uma construção BLOB+cola, se importa com a árvore de desenvolvimento que se move de ‘muito rápida’.

21 de Agosto. Uma série falha de segurança é encontrada na série 2.6, que finalmente se dscobre ser uma falha de design em uma API sysfs chave. Corrigir essa falha iria requerer que a ABI de módulos e que praticamente todos os módulos fossem quebrados, e não corrigir essa falha deixaria uma falha que poderia ser explorada com privilégios de root aberta.

Uma correção rápida é disponibilizada sob a forma de uma opção CONFIG_ no kernel, mas usuários que precisam de drivers binários não tem outra escolha a não ser deixar seus sistemas vulneráveis. Diversas discussões na lista linux-kernel aparecem novamente, dizendo que Linus cometeu um
erro em congelar a ABI ao invés de criar uma nova desenhada para ser congelada. O desenvolvimento da série 2.7 estagnou quase que totalmente e um patch para que a série 2.7 utilize a ABI da série 2.6 novamente é proposto, revertendo diversas melhorias em subistemas chave de memória
virtual e os patches de tempo-real do Ingo.

26 de Agosto. Um exploit pré-deenvolvido para a falha de segurança aparece na lista de discussão bugtraq e o mesmo passa a atuar sendo usado por diversos rootkits. Um exploit PHP utiliza-o para se tornar root a partir do usuário httpd. Usuários estão colocando pressão nos distribuidores de
módulos para que os mesmos lancem módulos para a nova ABI e diversos deles na verdade fazem isso nas três semanas que se seguem. Outros, a maioria no mercado do público em geral, dizem que o hardware em questão não é mais vendido e que eles não vão mais gastar tempo algum em esforços para escrever drivers para o mesmo.

Esse cenário pode parecer irreal para você. E, felizmente, é improvável que a hipótese principal (o evento de 6 de Dezembro) aconteça.

Porém, e isso infelizmente, diversos outros “saltos” não são assim tão improváveis. De fato, alguns dos resultados provavelmente acontecerão independente do evento inicial : observe as discussões acaloradas na lista de discussão linux-kernel sobre quebrar a API/ABI de módulos.

Observe o efeito do ndiswrapper em distribuidores que agora dizem “nós suportamos o Linux porque o ndiswrapper pode usar nosso driver Windows.” Eu espero que nada disso aconteça. Algumas dessas esperanças serão esperanças perdidas, mas eu acredito que as vantagens da liberdade no final são fortes o bastante para suplantar as forças opostas.

Ok, acho que minha posição sobre o assunto é bem clara a esse ponto 🙂

Anúncios

15 comentários sobre “Módulos de kernel binários e liberdade

  1. Olá semente,

    Obrigado pelo apoio 🙂 É desse tipo de apoio que eu preciso para continuar a escrever. Saber que existem pessoas que lêem o que eu escrevo e gostam disso é o que me motiva a continuar.

    Novamente, obrigado.

    P.S.: Se achar que o post merece, que tal clicar no ícone do Rec6 no final dele para dar um ponto de confiança ao mesmo ?

  2. Um cenário bem negro, mas já que foi imaginado por alguém do próprio desenvolvimento do kernel, não deixa de ter certa validade. Ainda bem que as coisas parecem não caminhar por esse lado. Ótimo texto, boa tradução!

  3. Olá Walter,

    Obrigado pelo comentário. Realmente, se um kernel hacker da calibre do Arjan chegou a se dar ao trabalho de escrever um texto desses é porque tem uma ponta de verdade nessa história.

    O fato do Ubuntu ter decidido começar a distribuir drivers binários em seu kernel a partir da próxima versão é algo preocupante, já que essa distribuição possui muitos usuários novatos e ter tais “facilidades” limitadoras de liberdade pode levá-los a crer que tais “facilidades” sejam algo com o qual podem contar em qualquer distribuição GNU/Linux, o que é claramente um erro.

    O ponto é que quando os usuários se acostumarem a ter tais “facilidades” não vão aceitar ficar sem as mesmas em momento algum futuramente. Sei que é algo difícil, mas cercear a liberdade em prol da facilidade nunca leva a resultados bons e no futuro poderemos nos arrepender disso tudo.

  4. O fato do Ubuntu ter decidido distribuir drivers binários em seu kernel a partir da próxima versão so mostra o quao VAGABUNDA eh esta distribuicao. Ainda bem que ainda temos o Debian!

    Se alguns usuarios preferem facilidades a liberdade. Que usem a merda do windos.

    Acho que oque devemos fazer eh divulgar que existem muitas distribuicoes melhores que o umbuntu.

  5. Seu blog já foi adicionada em meu RSS =].

    Interessante este texto, eu em particular também sou contrario ao uso do sistema sem as liberdades de se poder entender como ele funciona ou alterar ele (inclusive até gosto de compilar meus programas, ( mas também não sou um gentoo maniáco ) ) . Morte as DLL heheh . Ainda bem que se o Linux morre pensando em uma hipotese futura como a do texto, ainda teremos o freebsd =] =] e os BSDs da vida. Se isso acontecer é que de vez vou para eles.

    Ótimo artigo…

  6. Nota : Resposta ao segundo comentário do semente.

    Olá semente,

    Fico contente que ache que o assunto seja importante para estar na primeira página do Rec6. Ainda não apareceu na primeira página, mas ao menos apareceu na seção de novos artigos na categoria Tecnologia.

    Quem sabe com mais pessoas votando, a pontuação sobe e o post possa chegar a aparecer na primeira página, o que ajudaria ainda mais pessoas a terem o conhecimento sobre esse tópico deverás importante.

    Agradeço sua ajuda na divulgação e a quem mais votou no post, que já tem 4 pontos no Rec6, segundo vi há poucos minutos atrás.

  7. Nota : Resposta ao primeiro post do Luis.

    Olá Luis,

    Eu concordo que a decisão de distribuir drivers binários talvez não tenha sido uma decisão acertada do Ubuntu, mas não é por isso que devemos classificá-la como uma distribuição “vagabunda”.

    Apesar de não ser usuário do Ubuntu, é importante lembrar que a mesma é uma das distribuições derivadas do Debian mais conhecidas, senão “a” mais conhecidas atualmente. O sucesso do Ubuntu significa ao menos um sucesso parcial do Debian.

    Outro ponto importante é que, apesar de existirem algumas diferenças de pensamento entre os desenvolvedores do Ubuntu e do Debian, é fato que o Ubuntu é a distribuição derivada do Debian que mais contribuiu suas modificações de volta ao Debian.

    Lógico que muitas modificações não são incluídas pelo Debian, mas em muitos casos a cooperação entre os desenvolvedores de ambas as distriuições é bastante proveitosa e isso auxilia a todos, tanto o Debian, o Ubuntu e, principalmente, os usuários das duas distribuições.

    O importante é que o Debian incorpora as modificações que julgam ser interessantes e que não causam problemas que vão de encontro a sua filosofia e o fato do Ubuntu conseguir devolver ao Debian essas modificações já é algo a ser comemorado.

  8. Nota : Resposta ao primeiro comentário do Demoncyber.

    Olá Demoncyber,

    Antes de mais nada, obrigado por ter acrescentado meu blog 🙂 Tenha certeza que o que me motiva a continuar escrevendo é o fato de saber que existem pessoas lendo e que as mesmas gostam do conteúdo.

    A questão da liberdade é o ponto chave, e o Dave Jones tem toda razão no que diz em seu post em seu blog. Ele parece estar chateado, com razão, devido a diversos “revirews” do Fedora Core 6 saíndo pr aí e reclamando exatamente sobre isso.

    Segundo ele, esses “reviews” comparam o Fedora Core 6 ao Ubuntu e, como o Ubuntu contém algumas “facilidades” a mais devido a conter conteúdo considerado impróprio para ser distribuído pelo projeto Fedora, as pessoas que escrevem tal material acabam não recomendando o Fedora e sim recomendando o Ubuntu.

    Isso ajuda a aumentar a quantidade de usuários do Ubuntu e cria um efeito perigoso, pois os usuários passam a não ter a consciência de que existem problemas relacionados a esse conteúdo somente binário (sem fontes disponíveis), por isso não pressionam os fabricantes de hardware a liberar seus drivers e, com isso, os fabricantes de hardware não consideram um problema ter drivers somente fechados, já que ninguém reclama sobre isso.

    Trata-se de uma pequena comodidade que é oferecida aos usuários, mas que pode levar a problemas bem mais sérios e a um futuro sombrio.

  9. Hehehe só um comentário fiz minha parte neste quisito uma vez, ao pedir para projeto BROffice que não tinha a versao do source do 2.0.3 nos repositórios, pelos mesmos já que isto é o padrao não. E parece que isso surtiu efeito, fico feliz por isso.

    . Outros formatos de pacotes para instalação genérica(tar.gz), Slackware e derivados(tgz) e outros, serão providenciados em breve. — Site do http://www.openoffice.org.br/download.

    Se cada um perdir

  10. Se cada um pedir para publicarem os fotnes dos proejtos estaremos continuando a manter o estilo hacker no mundo anarquista da internet.

    Já basta os arquivos do tipo .doc, terem dominado o mercado -.-, nem a faculdade que curso libera documentos em extensões abertas e olha que ela é publica . Mas isto é escopo para um outro post.

    Hum responder aos posts das pessoas que visitam o seu blog acaba semeando a vontade para que elas voltem a ler ele =] =]

  11. Olá Demoncyber,

    Respondendo os dois últimos comentários seus com apenas um meu 🙂

    Seu exemplo é bom, se não formos “chatos” e solicitarmos aos responsáveis pelos projetos o que queremos, eles não terão como saber o que seus usuários realmente querem, podendo simplesmente assumir como verdade algo diferente do que os usuários realmente querem.

    Sobre a questão das faculdades liberar material para alunos e muitas vezes até exigir documentos escritos em formatos proprietários, realmente é uma lástima. Mas, como você citou, é assunto para outro post.

    Em relação a minhas respostas para os comentários dos leitores, creio que não faça nada mais do que eu esperaria de um autor para o qual deixei um comentário. É interessante a troca de idéias, experiências e pontos de vistas e escrever algo em meu blog é a forma que encontrei de fazer isso.

    Se eu simplesmente deixo minha opinião e não me importo com os pontos de vista dos leitores, creio que poderia simplesmente guardar minhas opiniões para mim mesmo e não compartilhá-las com mais ninguém.

    O barato da coisa toda está exatamente no fato de você conseguir ter acesso às opiniões e pontos de vistas de outras pessoas e, quem sabe, até mesmo mudar o seu próprio ponto de vista.

    Isso é liberdade de compartilhamento do conhecimento e liberdade, como bem sabemos, é importante em todos as formas, tamanhos e frascos 🙂

  12. Olá

    Estou tendo que trabalhar com o SUSE OES. A distribuição é 32 bits.
    Decidi recompilar o kernel para 64 bits. Pesadelo é pouco. Os serviços
    Novell necessitam de módulos binários no Kernel. A maioria deles é
    possível colar no novo kernel gerado. MENOS UM! É um módulo do
    serviço de backup. Sem ele o serviço não roda. Mas, para tê-lo, tive
    de abrir mão do kernel 64 bits…

    E aí? De que adianta gastar uma fortuna investindo numa baita
    máquina, se depois os recursos dela são deperdiçados?

    Enfim, foi só para desabafar um pouco e contribuir mais um pouco acerca do problema dos módulos binários…

    Há braços
    Luis Otávio

  13. Calma pessoal !!! liberdade é isso mesmo, é direito de escolha, mesmo que contrarie a própia natureza(GNU), isso significa mais um ponto para os sistemas propietários é menos um ponto para o Ubuntu, quando o pessoal da Ubuntu ver que está perdendo usuários por causa da sua decisão poderá ser tarde demais.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s