O outro lado do BR-Linux

Wednesday, November 09, 2005

Interface binária no kernel

Como primeiro notícia a ser comentada aqui, escolhi essa, sobre o que foi traduzido como "Drivers com código fechado para o kernel".


Na notícia original, o assunto era "a binary kernel driver layer", o que deveria ter sido traduzido como "uma camada binária para drivers do kernel", e não "uma camada para drivers binários do kernel".


A tradução, embora não seja tão diferente, dá a entender que o que está proposto é simplesmente para permitir drivers fechados, como pode-se ver no título da mensagem postada no BR-Linux.


Não é. Essa camada serviria para permitir que desenvolvedores de drivers, abertos ou fechados, pudessem distribuir seus drivers independemente do kernel, sem maiores esforços. Hoje, a maior parte dos drivers para Linux são distribuídos em um enorme pacote, que é o kernel. Hoje ele tem algo em torno de 40 MB, compactado.


Com essa camada estável, um desenvolvedor de driver poderia distribui-lo sem depender do kernel. Independemente da versão do kernel que estiver usando, você poderia baixar a versão mais recente do driver, e utilizá-lo, sem ser necessáriao atualizar o kernel, ou mesmo recompila-lo.


Isso trás vantagens até para os desenvolvedores de drivers abertos, e livres.


Mas, eu concordo, também trás vantagens para desenvolvedores de drivers fechados, como a NVidia. O driver da NVidia, hoje, é muito chato para ser instalado em kernels diferentes. Com uma interface binária estável, a NVidia vai poder lançar uma versão do seu driver, que será independente da versão do kernel.


Outras empresas poderão fazer o mesmo, lançando drivers para linux dos seus hardwares, ainda que sejam drivers fechados. Isso, de forma alguma poderá ser ruim. Para os usuários puristas, que só utilizam software livre, será possível continuar a não utilizar o driver, ou então utilizar as alternativas abertas. Para os outros, será possível utilizar o driver fechado. Sem problemas, cada um escolhe a sua opção.


Muitos usuários reclamam de empresas que não oferecem drivers para Linux. Muitas, pasmem, não podem abrir o código dos seus drivers. O da NVidia, por exemplo, é cheio de código patenteado por outras empresas. A NVidia licencia esses códigos, para poder utilizar em seus drivers, e não pode distribui-los com o código aberto. Simples assim. Muitas outras empresas também estão na mesma situação. Além disso, outras empresas podem simplesmente, por opção comercial, não querer distribuir seus códigos-fonte. É a opção delas, e deve ser respeitada.


Oferecendo um driver fechado, essas empresas vão estar oferecendo algo a mais. Elas não vão tirar nada de ninguém. Quem quiser, vai poder ignorar completamente esse driver. Só quem quiser usar vai precisar usá-lo. Quando eu vejo alguém criticando a proposta, parece um caso de "Eu não gosto, não quero usar, e também não quero que ninguém use". Se você não quer usar, ótimo, não use. Mas deixe outros utilizarem. A proposta não é de colocar código fechado dentro do kernel, e sim de estabelecer uma API estável para que o kernel POSSA utilizar drivers fechados com mais facilidade.


Por último, é importante observar que quem está propondo isso são as empresas da OSDL, que, entre outros, emprega o Linus Torvalds, Andrew Morton e Andrew Tridgell.

14 Comentários:

  • Teste de comentário.

    By Blogger Ananias O'Troll | 1:49 AM  

  • Comentário anônimo...

    By Anonymous Anonymous | 1:50 AM  

  • This comment has been removed by a blog administrator.

    By Blogger Leonardo L. | 9:50 AM  

  • Esses tempos vi alguém reclamando que o Linux "mudava de interface a cada 3 releases" e que "não dava pra fazer drivers para ela" pois era "muito instável". Um professor universitário, inclusive, que não conseguiu usar o exemplo (que tinha feito no semestre passado) em uma aula. Depois de ver o driver mais de perto, pude entender o motivo principal: má abstração (da parte das funções do kernel) que foi corrigida. Isto está sendo resolvido aos poucos, e logo logo as interfaces vão "naturalmente" se tornar estáveis. E como você mesmo já disse, exportar uma API fixa ou padronizada seria interessante para todos. Eu reforço este argumento. Empresas de hardware que contratam empresas de software fechado para desenvolver os drivers vão continuar a fazê-lo, independente de uma API definida ou não.

    Sobre a nVidia: faz alguns meses que não uso mais os drivers desta. Desisti, visto a vários problemas de compatibilidade. Fiquei feliz de ver que os drivers GPL estão à todo vapor, e a maior parte dos problemas que eu enfrentava já foram eliminados. Não pretendo mais voltar a usar os antigos; ainda mais agora que estou compilando o kernel com a opção REGPARM ativada. :-)

    E é isso.

    By Blogger Leonardo L. | 10:17 AM  

  • exatamente. Não só este post em especial, mas toda a idéia por tras deste blog =D

    parabéns pela iniciativa.

    By Blogger glauber_ananda | 10:58 AM  

  • A declaração está errada. Não são "as empresas da OSDL", mas algumas poucas empresas da subsidiária japonesa.

    OBS.: Quanto ao captcha, e os cegos que acessarem sua página usando terminais braille? Restringir acesso usando de técnicas anti-acessibilidade é uma grande covardia.

    By Anonymous CCC | 12:56 PM  

  • Se o verbo é "trazer", então ele traZ vantagens, e não "trás".

    By Anonymous Anonymous | 10:17 AM  

  • Eu concordo com o Ananias...Uma camada no kernel que possibilitaria o load de drivers binários, independentes da versão (e recompilação) do kernel seria muito interessantes para administradores de sistemas (no meu caso, toda vez que preciso de um suporte novo no meu iptables, por exemplo, tenho que recompilar o kernel junto, ai atrasa e muito meu serviço) e, principalmente, para o BOOM do Linux como Desktop...Quem aqui nunca deixou de usar um hardware e optar por outro só porque não exsitia suporte ao primeiro? Sem essa possibilidade, o Linux demorará, e muito, a se consolidar como um sistema Desktop que possa atender a todas as classes (eu só uso linux como Desktop, mas de vez em quando fico privado de usar algum hardware específico, que não tem suporte...)

    By Anonymous Anonymous | 9:48 AM  

  • "É a opção delas, e deve ser respeitada" foi ótimo! É o cúmulo da falta de noção: um projeto livre (o Linux) que não ALMEJA ter partes proprietárias tem agora que "RESPEITAR" iniciativas comerciais que querem enfiar código proprietário nele? Puta que pariu, em que mundo você vive, Ananias?

    By Anonymous Malúcido | 12:37 PM  

  • claro que é uma opção. Se o linux desejar crescer e um dia, mesmo que distante, competir com um mercado de 90% de Windows - com milhões de drivers pra tudo - é bom que os fabricantes estejam apoiando.

    By Anonymous Anonymous | 8:34 PM  

  • Pra quem teve problema com o driver da NVIDIA: amiguinho, RECLAME. Você comprou a placa com um suporte oficial da empresa ao Linux, faça uso do seu direto.

    Eu uso os drivers da NVIDIA, não me arrependo e acrescento - GOSTARIA DE TODOS OS DRIVERS FORNECIDOS PELOS FABRICANTES - livres ou não, como usuário, não me importo. Eu quero é que seja funcional e que eu possa reclamar quando algo der errado. Ninguém melhor que o fabricante do hardware para saber o que precisa em software para tirar o máximo proveito do equipamento.

    Coloquei também lá no br-linux: dizer que possuir uma camada de suporte drivers fechados no kernel é ruim é o mesmo que dizer que possuir software proprietários rodando sob Linux é ruim.

    Coisinhas como Oracle, por exemplo. Isso parece estúpido, não?

    By Blogger Roberto | 9:14 PM  

  • Pra quem teve problema com o driver da NVIDIA: amiguinho, RECLAME

    De que adianta eu, o único que me importo com certos detalhes, reclamar? Não adiantou nem vai. Sem contar que o meu ponto principal para não ter escolhido os drivers proprietários é por eles não serem abertos. Só usei estes durante o tempo que os drivers GPL eram muito instáveis.

    Outra: as liberdades de um *desenvolvedor* são as que eu estou interessado. Se eu quiser usar minha placa para fazer processamento de imagens usando aceleração OpenGL da minha placa, por que não posso usar os drivers do fabricante para me basear no meu projeto? Vou ter que escrever tudo do zero *SEM ESPECIFICAÇÕES* ou encomendar uma solução pronta deles, provavelmente. E não é isso que eu quero, nem chamo isso de liberdade -- liberdade esta que me fez adotar o GNU/Linux, a propósito.

    Do seu ponto de vista, que é o de "mero usuário", realmente não faz diferença. Mas do meu faz.

    E é isso.

    By Blogger Leonardo L. | 5:53 PM  

  • Então nós dois podemos ser felizes utilizando o Linux: você usa um driver livre, que dá trabalho de manter por falta de especificações (também acho que podia ser melhor, mas não é. Isso é fato) e a gente deixa os fabricantes desenvolverem os seus drivers fechados de forma mais simples e uniforme com a nova camada.

    Não vai piorar pra quem desenvolve o driver aberto, mas vai melhorar muito para os usuários finais, que poderão utilizados os drivers dos fabricantes (que são muito mais em número que desenvolvedores). É por isso que do ponto de vista do "mero usuário" não é indiferente; faz muita diferença ter drivers bons (livres ou não).

    Não tenho absolutamente nada contra os drivers abertos (até gostaria que todos fossem, mas o fato é que não são).

    Se é para ter liberdade, que todos tenham.

    By Blogger Roberto | 10:43 PM  

  • Na verdade o buraco é um pouco mais embaixo.
    O kernel tem a função mais crítica de todoo sistema operacional, e se alguma parte do kernel der problema, provavelmente o sistema inteiro entrará em colapso.
    Assim, o kernel do Linus (sim, o kernel é dele. A GPL impõe 4 liberdades básicas, mas não impõe que você deve aceitar toda e qualquer exigência que alguém fizer a você, pegue o código e o faça então) foi feito pensando que todo código que entra no kernel deve passar pelo crivo do próprio Linus. Se ele não estiver de acordo, não entra. E essa decisão é muito sensata, porque quando aparecer algum problema, o nome dele estará em jogo.
    É muito fácil para mim, que tem um computador xexelento comprado no Paraguai, esperar um travamento ou outro. Mas quando você pensa em uma aplicação séria, não pode correr esse risco, e é nesse ambiente que o software livre faz todo sentido.
    A grande questão é a seguinte: o Linus não quer código fechado rodando no kernel. Ele não vai fazer isso. Se alguém quiser fazer , o faça, o kernel é livre exatamente para isso.
    Ninguém está perdendo liberdade alguma com a decisão do Linus.

    By Anonymous Anonymous | 12:53 PM  

Post a Comment

<< Home