Esclarecendo a questão dos drivers: o problema do suporte a hardware
O dilema entre drivers de dispositivo livres e proprietários tem sido muito discutido ultimamente. Como minha primeira contribuição ao VOL, pretendo esclarecer de uma vez por todas este assunto que é mais complexo do que parece: por que a documentação do hardware é tão importante porém tão difícil de conseguir e o que podemos fazer quanto a isso?
Parte 2: O que isso tem a ver comigo?
O suporte a hardware é característica essencial em qualquer sistema operacional moderno. Com o advento de um mercado de computadores horizontal (isto é, compra-se hardware de diversas fabricantes distintas), a variedade de dispositivos existentes no mercado tornou-se gigantesca. Junte isso com a falta de padrões que regulem as especificações do hardware em geral e a comunidade de desenvolvedores de software livre acaba tendo um trabalho imenso para poder prover suporte amplo e de qualidade aos mais diversos dispositivos de hardware do mercado.
Estima-se, por exemplo, que mais da metade do trabalho realizado pelos desenvolvedores do projeto OpenBSD - o projeto que mais trabalha nesse sentido - seja apenas com foco no suporte a hardware. Como se trata de software livre, toda a comunidade se beneficia disso e esse esforço acaba sendo aproveitado por outros projetos como Linux, FreeBSD, etc.
Mas aí vem outra questão: como se trata de software livre, os drivers de dispositivo também precisam ser livres! Por quê? Alguns dos motivos:
Até aí, nada de novo. Do ponto de vista do usuário, essa é a principal questão: drivers precisam ser software livre também. Afinal, o usuário usa software livre por causa disso: é confiável e, afinal de contas, livre para distribuir e usar! Mas a comunidade do software livre não é feita apenas de usuários. Ela é formada principalmente por desenvolvedores. Eles são o ponto chave da comunidade. Pergunte para um usuário que utilidade tem o código-fonte para ele? A maioria deles vai responder que não tem nenhuma utilidade pois ele não entende de programação. Ou seja, o software livre só é efetivamente útil se houver uma comunidade de programadores por trás dele e ele puder ser mantido e desenvolvido por eles!
Os desenvolvedores são a peça mais fundamental da comunidade do software livre: eles a fundaram em primeiro lugar e eles a mantém. Não que o usuário seja insignificante (pelo contrário, ele é muito importante), mas se o desenvolvedor não puder desenvolver o software então ele não poderá dar aquilo que os usuários precisam, e por conseqüência o software não atenderá às necessidades do usuário. Sintetizando: as necessidades do desenvolvedor são primárias para as necessidades do usuário.
Ao analisarmos o ponto de vista do desenvolvedor, surgem mais motivos para que um driver de dispositivo seja livre:
Aí vem a raiz do problema: quando falamos de um driver de dispositivo, o código simplesmente não é o que o desenvolvedor precisa. Um driver de dispositivo é um pedaço de software especialmente complexo. Sem a documentação específica de determinado hardware, a tarefa de criar um bom driver ou mesmo corrigir problemas em um driver existente se transforma num desafio. E de que adianta o driver ser livre se nós não pudermos consertar os erros, continuamos dependentes da empresa ou do sujeito que o criou e não podemos melhorá-lo para atender ao usuário?
Portanto, podemos criar o seguinte quadro à partir desse raciocínio:
Assim, vemos que a questão dos drivers vai além daquilo que costumamos pensar. A raiz da questão está na documentação do hardware - qualquer driver só é realmente livre se a documentação também for. Por isso ela é tão importante. Não podemos ficar dependendo das fabricantes, pois elas descontinuam produtos a todo momento, e se nós não pudermos manter os drivers depois que elas não os mantiverem mais, nós acabamos ficando com uma peça de hardware quebrada nas nossas mãos - nossa liberdade vai por água abaixo.
Em último caso (se você ainda acha que isso não tem nada a ver com você), sem a documentação nós ficamos em desvantagem com relação a distribuidoras de software proprietário (Microsoft), que podem conseguir a documentação facilmente através de um NDA (falarei mais sobre os NDAs e o mal que eles representam depois). Já percebeu como cada nova versão do Windows trás novos drivers embutidos e melhor suporte a hardware?
Em outros setores do mercado, as fabricantes são obrigadas a dar as informações necessárias para a manutenção de um produto (indústria automobilística). Por que o mesmo não acontece na indústria de hardware de computadores? Isso é injusto e inaceitável.
E se não tivermos a documentação? Bem, então somos obrigados a fazer engenharia reversa. O problema é que ela é ineficiente (isto é, demorada e trabalhosa) e propensa a erros.
Estima-se, por exemplo, que mais da metade do trabalho realizado pelos desenvolvedores do projeto OpenBSD - o projeto que mais trabalha nesse sentido - seja apenas com foco no suporte a hardware. Como se trata de software livre, toda a comunidade se beneficia disso e esse esforço acaba sendo aproveitado por outros projetos como Linux, FreeBSD, etc.
Mas aí vem outra questão: como se trata de software livre, os drivers de dispositivo também precisam ser livres! Por quê? Alguns dos motivos:
- Os termos de distribuição de software proprietário em geral tendem a ser restritivos e não permitirem que as distribuidoras de sistemas os distribuam junto com o sistema em si;
- Software proprietário em geral não é confiável.
Até aí, nada de novo. Do ponto de vista do usuário, essa é a principal questão: drivers precisam ser software livre também. Afinal, o usuário usa software livre por causa disso: é confiável e, afinal de contas, livre para distribuir e usar! Mas a comunidade do software livre não é feita apenas de usuários. Ela é formada principalmente por desenvolvedores. Eles são o ponto chave da comunidade. Pergunte para um usuário que utilidade tem o código-fonte para ele? A maioria deles vai responder que não tem nenhuma utilidade pois ele não entende de programação. Ou seja, o software livre só é efetivamente útil se houver uma comunidade de programadores por trás dele e ele puder ser mantido e desenvolvido por eles!
Os desenvolvedores são a peça mais fundamental da comunidade do software livre: eles a fundaram em primeiro lugar e eles a mantém. Não que o usuário seja insignificante (pelo contrário, ele é muito importante), mas se o desenvolvedor não puder desenvolver o software então ele não poderá dar aquilo que os usuários precisam, e por conseqüência o software não atenderá às necessidades do usuário. Sintetizando: as necessidades do desenvolvedor são primárias para as necessidades do usuário.
Ao analisarmos o ponto de vista do desenvolvedor, surgem mais motivos para que um driver de dispositivo seja livre:
- Se algo der errado em um driver proprietário, não é possível consertar (e sempre algo dá errado);
- Não ficamos dependentes de uma determinada empresa;
- Poderemos dar ao usuário aquilo que ele quer/precisa.
Aí vem a raiz do problema: quando falamos de um driver de dispositivo, o código simplesmente não é o que o desenvolvedor precisa. Um driver de dispositivo é um pedaço de software especialmente complexo. Sem a documentação específica de determinado hardware, a tarefa de criar um bom driver ou mesmo corrigir problemas em um driver existente se transforma num desafio. E de que adianta o driver ser livre se nós não pudermos consertar os erros, continuamos dependentes da empresa ou do sujeito que o criou e não podemos melhorá-lo para atender ao usuário?
Portanto, podemos criar o seguinte quadro à partir desse raciocínio:
- Drivers oriundos da fabricante em forma binária são completamente inaceitáveis: não podemos confiar em software proprietário e não poderemos consertar se algo der errado (e vai dar). Chamamos esses drivers pejorativamente de "blobs".
- Drivers oriundos da fabricante em forma de código-fonte livre são mais-ou-menos aceitáveis: muito difíceis de consertar se algo der errado (e vai dar). Lembre-se: se trata daquilo que o desenvolvedor precisa para que ele possa dar ao usuário o que ele precisa.
- Drivers em forma de código-livre, sejam eles da fabricante ou da comunidade, acompanhados de documentação são perfeitos.
Assim, vemos que a questão dos drivers vai além daquilo que costumamos pensar. A raiz da questão está na documentação do hardware - qualquer driver só é realmente livre se a documentação também for. Por isso ela é tão importante. Não podemos ficar dependendo das fabricantes, pois elas descontinuam produtos a todo momento, e se nós não pudermos manter os drivers depois que elas não os mantiverem mais, nós acabamos ficando com uma peça de hardware quebrada nas nossas mãos - nossa liberdade vai por água abaixo.
Em último caso (se você ainda acha que isso não tem nada a ver com você), sem a documentação nós ficamos em desvantagem com relação a distribuidoras de software proprietário (Microsoft), que podem conseguir a documentação facilmente através de um NDA (falarei mais sobre os NDAs e o mal que eles representam depois). Já percebeu como cada nova versão do Windows trás novos drivers embutidos e melhor suporte a hardware?
Em outros setores do mercado, as fabricantes são obrigadas a dar as informações necessárias para a manutenção de um produto (indústria automobilística). Por que o mesmo não acontece na indústria de hardware de computadores? Isso é injusto e inaceitável.
E se não tivermos a documentação? Bem, então somos obrigados a fazer engenharia reversa. O problema é que ela é ineficiente (isto é, demorada e trabalhosa) e propensa a erros.
Eu tenho uma outra proposta: voltemos a usar as máquinas de escrever, no máximo as modernissimas máquinas de escrever elétricas.
Para que tecnologia? Para que computador? Para que software livre? Vamos voltar a enviar cartas, ouvir fitas K7 (CD's nunca mais!)
Sou usuário do Ubuntu e confesso que gostei mto da iniciativa da DELL.
A DELL simplesmente visualizou que existia uma nova demanda "PC's OEM com Linux (td configurado, instalado e funcionando perfeitamente)".
A Canonical tbm vende suporte!
Pelo seu artigo uma revolução anarquista seria a saída! Ninguém é dono de nada! Todo mundo faz o q quer! E blah blah blah blah...
Ideais politicos são para serem discutidos em outro local...
Saudações...