domingo, 13 de abril de 2008

Relatório do Linux Driver Project

Relatório do Linux Driver Project



Linux Driver Project Status Report as of April 2008

Autor original:
Greg Kroah

Publicado originalmente no: http://www.kroah.com/

Tradução: Roberto Bechtlufft

Este é o relatório de abril de 2008 sobre as atividades do Linux Driver Project, o Projeto de Drivers para Linux, que descreve nosso trabalho no ano que passou. O relatório foi postado originalmente na lista de discussão para desenvolvedores.

Resumo Executivo


O Linux Driver Project (LPD) está vivo e bem; ele conta com mais de 300 desenvolvedores dispostos a participar, já criou diversos drivers que foram aceitos na árvore do kernel e está desenvolvendo muitos outros. O maior problema é a falta de projetos. A verdade é que quase não existe hardware não suportado pelo Linux. Quase todo hardware lançado ultimamente já vem com um driver desenvolvido pelo fabricante, ou pela comunidade com o apoio do fabricante.

Há dois tipos de hardware que não são bem suportados no Linux, dispositivos de entrada de vídeo e placas de rede wireless, mas já há bastante trabalho nessas áreas e a questão dos drivers wireless já está praticamente resolvida, com poucas exceções.

Por isso, voltamos nossos esforços para a educação. Queremos ensinar aos fabricantes de hardware como eles podem se tornar membros da comunidade do kernel Linux, os padrões de código e procedimentos e como inserir seus códigos na árvore do kernel. Boa parte de nosso trabalho tem sido o de limpeza de código e sua incorporação aos lançamentos do kernel.org.

Estamos abertos ao desenvolvimento de drivers para qualquer dispositivo que precise deles. Vamos mudar nossa abordagem diante de novos projetos para refletir as lições aprendidas no ano passado. Com isso, esperamos facilitar a participação dos fabricantes e manter a comunidade mais informada sobre o que está se passando no projeto, oferecendo maneiras mais práticas para que ela colabore.

O Ano Passado




O Começo

O LDP nasceu há pouco mais de um ano, com um anúncio na lista de discussão do kernel e alguns posts em blogs. Ele nasceu das queixas de alguns usuários e empresas quanto ao "problema dos drivers no Linux". A impressão que se tinha era a de que o Linux não tinha um bom suporte a drivers, e que certos tipos de dispositivos já começavam a ser dominados por drivers de código fechado.

Eu percebi que se reduzíssemos as dificuldades das empresas em obter drivers para Linux a apenas alguns emails, um ou dois documentos e de preferência a doação de um equipamento para testes, esse problema desapareceria e nós poderíamos criar vários drivers de código aberto para esses equipamentos-problema, dos quais todo mundo parece reclamar.

Assim nasceu o LDP. Ele começou como um ponto de encontro para os fabricantes obterem de graça drivers para seus equipamentos. Oferecemos um termo de confidencialidade às empresas que que não gostariam divulgar as especificações de seus equipamentos. O termo de confidencialidade foi disponibilizado pela Linux Foundation, e é um documento legal em três vias, com toda a papelada necessária.

O engraçado é que eu esperava que o projeto fosse ser inundado por pedidos de empresas por drivers para seus equipamentos, mas isso não aconteceu.

Duas coisas que eu não esperava aconteceram:


  • A quantidade de desenvolvedores que se prontificaram a ajudar a criar os drivers foi incrível. Hoje contamos com mais de 300 desenvolvedores de drivers para Linux, que oferecem voluntariamente seu tempo e talento para ajudar o Linux. Esse numeroso grupo de desenvolvedores é um exemplo brilhante da força e do tamanho de nossa comunidade.

  • Poucas empresas solicitaram drivers.


É esse ponto que me preocupa. Sim, algumas empresas nos pediram drivers e nós os criamos, mas foram bem menos do que eu esperava. Nós estávamos escrevendo drivers para empresas e equipamentos interessantes, mas nada de muito destaque; a maior parte do trabalho era para o mercado vertical, que é bem restrito.

Afinal, onde estava todo esse hardware não suportado pelo Linux?


O Mito dos Drivers para Linux


Eu dei uma palestra no Ottawa Linux Symposium em 2006 sobre uma série de mitos que envolvem o kernel Linux. Um deles era o suporte a dispositivos e drivers. Eu disse na época, e repito:


O Linux é o sistema operacional que oferece suporte à maior quantidade de equipamentos na história da computação.

Posteriormente, um representante da Microsoft confirmou minha declaração, afirmando que as pesquisas deles estavam de acordo, logo essa não é uma declaração leviana.

Ainda assim, o "problema de drivers no Linux" persistia. Tanto a Linux Foundation quanto o Laboratório de Desenvolvimento de Código Aberto, o OSDL, tinham "drivers para Linux" como a segunda questão mais importante a ser resolvida. É óbvio que esses grandes fabricantes, que distribuem o Linux em seus equipamentos e lidam com os problemas dos usuários todos os dias, tinham lá os seus motivos.

Então o LDP foi criado.

E as empresas não vieram.

E eu fiz mais um pouco de divulgação.

E as grandes empresas ainda não tinham aparecido.

Fazer o quê.

Fiz o que eu podia, com um anúncio do tipo "Diga-me qual hardware você conhece que não funciona no Linux!" A resposta dos usuários foi enorme. Minha caixa de email foi inundada por centenas de mensagens, e foi criada esta página do wiki: http://www.linuxdriverproject.org/twiki/bin/view/Main/DriversNeeded

Essa é a melhor relação de hardware não suportado pelo Linux já feita pela comunidade.

Então eu decidi perguntar, uma a uma, às empresas que fazem parte do Conselho de Fabricantes da Linux Foundation de quais drivers elas precisavam.

O diálogo era quase sempre assim:


EU

"Quais equipamentos que vocês vendem não são suportados pelo Linux?"



FABRICANTE

"Todos são suportados."



EU

"Espera aí, por quê vocês dizem que "drivers para Linux" são a questão mais importante a ser resolvida no Linux?"



FABRICANTE

"Não sabemos."


Depois de muito bajular e encher o saco dos outros, fico feliz em dizer que o a lista de 10 necessidades primordiais do Linux elaborada pelo Conselho de Fabricantes da Linux Foundation já não menciona mais os drivers.

Então vamos enterrar esse mito de uma vez por todas.


Queixas dos Usuários


Mas espere, e quanto a todos esses emails que eu recebi? Eles podem ser divididos em quatro grupos:

Suporte a impressoras e scanners;

Hardware antigo que já não é mais fabricado e que as pessoas querem muito ver funcionando em seus PCs algum dia;

Suporte a hardware wireless;

Suporte a dispositivos de entrada de vídeo.

Do grupo 1 os projeto Linux Printing e SANE já estão cuidando muito bem. Os drivers para impressoras e scanners são programas em espaço de usuário e não têm nada a ver com o kernel. Se você tem problemas com esses tipos de hardware, entre em contato com os desenvolvedores desses projetos. Eles são muito bem informados, habilidosos e têm contatos entre os fornecedores, e podem ajudá-lo a resolver seus problemas. Essa área já está bem suprida por essas pessoas.

O grupo 2 é mais complicado. Seria ótimo que o Linux suportasse hardware ultrapassado, mas sem as especificações do hardware ou se seu fabricante já não existe mais fica muito difícil dar suporte. Engenharia reversa é uma coisa incrível, mas foi-se o tempo em que eu era bom nisso. É um trabalho enorme, e o LDP não foi criado para isso. Para nossa sorte, quase nenhum hardware moderno exige engenharia reversa.

Só faltaram os dispositivos de entrada de vídeo e os dispositivos wireless. Por sorte os dois grupos têm uma comunidade bastante ativa e produtiva de desenvolvedores.

O grupo de desenvolvedores Linux-Wireless fez um trabalho incrível no ano passado, adicionando uma pilha de protocolos wireless totalmente nova ao kernel, bem como diversos drivers diferentes, alguns criados inicialmente por fabricantes e outros criados por engenharia reversa sem o apoio ou a aprovação dos mesmos. Os últimos lançamentos do kernel.org têm um monte de hardware wireless que passou a ser suportado, e há um grande número de drivers em desenvolvimento na fila para serem adicionados num futuro próximo.

Ainda existem alguns fornecedores de dispositivos wireless que não apóiam o Linux diretamente. Para dois deles, a Atheros e a Broadcom, a comunidade já criou drivers por meio de engenharia reversa. Devido à falta de apoio do fabricante, esses drivers chegam ao kernel com um atraso de alguns meses. As duas empresas tem versões internas de seus drivers para esse tipo de hardware, mas até agora elas vêm resistindo aos apelos para que os lancem. Esperamos que isso mude no futuro.

Quanto aos dispositivos de entrada de vídeo, há uma comunidade ativa de desenvolvedores nessa área, mas parece que os progressos são prejudicados por um modelo de desenvolvimento diferente (árvores em repositórios Mercurial, externas ao fonte do kernel) e pela falta de desenvolvedores em tempo integral, sem falar nos freqüentes conflitos interpessoais que ocorrem por lá. O suporte a boa parte desse dispositivos vai lentamente pingando na árvore principal do kernel, sendo o driver de vídeo USB o mais importante, visto que ele oferecerá suporte a quase todos os novos dispositivos de vídeo USB no futuro, acabando com o maior problema encontrado pelos usuários ao comprar um novo dispositivo de vídeo.

O grupo LDP também está trabalhando ativamente em drivers para vários dispositivos de vídeo, e o código já está disponível para testes na árvore do linux-next. Esses drivers chegarão aos lançamentos do kernel.org em breve, assim que o desenvolvimento deles for concluído.


Educação


No ano passado várias empresas me pediram drivers para seus equipamentos, ou pediram ajuda para disponibilizar um driver já existente na árvore do kernel. Vários desses contatos resultaram numa tentativa de educar os fornecedores no sentido de como a comunidade do kernel funciona, esclarecer se há mesmo a necessidade de algum driver para o hardware em questão (muitas vezes não há) e explicar como deve ser feita a limpeza do código para que ele seja aceito.

Embora eu ache que o trabalho de desenvolvimento do kernel é muito bem documentado, e que também existam livros gratuitos que expliquem como desenvolver para o kernel, parece que ainda temos muito a fazer. Precisamos de ajuda para transmitir nossa mensagem para empresas que ainda estão engatinhando no desenvolvimento para o Linux. Talvez precisemos do departamento de marketing de algum grande distribuidor de Linux para nos ajudar nesse sentido.

No ano passado, dei diversas palestras em empresas de todo o mundo sobre o processo de desenvolvimento do kernel, e não pretendo encerrar esse trabalho tão cedo. Comecei a recrutar mais desenvolvedores para me ajudarem nesse processo educativo, e mais ajuda é sempre bem-vinda. Se alguém quiser participar, e souber explicar sem dificuldades os processos de desenvolvimento do kernel, me avise.

Esse tipo de trabalho educativo é o que tem se mostrado mais útil. Muitos drivers tiveram seu código limpo e foram incorporados à árvore do kernel graças a ele. Esse empenho vai continuar, e já inseriu muitos drivers na árvore principal do kernel.org.


Método de Desenvolvimento


Quando o projeto LDP foi iniciado, foi estabelecida uma estrutura na qual havia um gerente para cada projeto, e se estabelecia um grupo de desenvolvedores para trabalhar nele. Isso funcionou em alguns casos, e foi um fracasso em outros. Em algumas equipes, tanto o gerente quanto os desenvolvedores desapareceram. Isso é comum em projetos opensource, então precisamos de um modelo aberto de desenvolvimento que permita a participação de todos.

Para que isso aconteça eu passei a disponibilizar todo o código do LDP na forma de patches com o quilt. Você os encontra aqui:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/patches/ldp/

e agora eles são incluídos automaticamente nos lançamentos diários do linux-next. Os patches do quilt estão em uma árvore git

http://git.kernel.org/?p=linux/kernel/git/gregkh/patches.git

Essa é uma árvore na qual os desenvolvedores podem fazer mudanças, atualizações e ver onde podem ser úteis de maneira bem mais prática. Ela também dá às empresas uma maneira mais aberta de acompanhar o estado de seu código.


O Futuro


E agora? Estes são meus objetivos para o ano que vem:



  • Continuar a desenvolver drivers novos para as empresas que me pedirem. Todos esses drivers serão lançados sob a GPLv2 e incluídos árvore de código principal do kernel do kernel.org. A manutenção desses drivers será feita por membros da empresa ou da comunidade, de acordo com a vontade da empresa.

  • Continuar a ser um ponto de convergência para empresas que queiram aprender sobre o processo de desenvolvimento do Linux e que queiram se tornar parte da comunidade do kernel, se assim desejarem. Espero recrutar mais pessoas para nos ajudarem, mas mesmo que eu não consiga, continuarei viajando e dando palestras.

  • Trabalhar segundo um modelo mais aberto de desenvolvimento, hospedando todo o código experimental e de desenvolvimento em uma árvore git pública, testando-o diariamente em todas as arquiteturas na árvore do linux-next




Agradecimentos


Gostaria de agradecer ao meu patrão, a Novell, por me dar a oportunidade de trabalhar em tempo integral neste projeto. O apoio dela ao LPD é incrível e garante nossa sobrevivência, sendo responsável por nossos excelentes resultados em um período tão curto de tempo.

Também gostaria de agradecer a todos os desenvolvedores que se ofereceram para nos ajudar. O trabalho voluntário de vocês é incrível e mostra a força da comunidade de desenvolvedores do Linux.

Também gostaria de agradecer a Tomasz Grzegurzko por manter com tanta eficiência o domínio e os servidores do linuxdriverproject.org, apesar de todas as minhas eventuais tentativas de fazer besteira. Também agradeço ao Laboratório de Código Aberto da Universidade de Oregon pela ajuda com o domínio e a hospedagem do projeto.



Créditos a Greg Kroah - http://www.kroah.com/

Tradução por Roberto Bechtlufft









Fonte: GuiadoHardware.net

Nenhum comentário: