Durante o FISL (Fórum Internacional de Software Livre) semana passada em Porto Alegre, conversei pessoalmente com nosso amigo Alexandre Oliva sobre algumas idéias.<br><br>Recentemente comecei a utilizar uma distro 100% livre (gNewSense com kernel Linux-Libre). Sinto que dei um passo importante rumo à liberdade de software. Mas isso me trouxe uma percepção mais clara sobre a problemática do hardware secreto e restrito. Em particular, a questão dos firmwares proprietários me levou a filosofar um pouco sobre o que é aceitável e o que não é. <br>
<br>E no momento em que concluí que hardware proprietário é quase tão problemático quanto firmware proprietário percebi que há 2 caminhos a se seguir: 1) aceitar o uso de firmwares proprietários da mesma forma que aceitamos o uso de hardwares proprietários ou 2) começar a correr atrás de hardwares livres que possam ser inspecionados, aprimorados, compartilhados.<br>
<br>Obviamente prefiro seguir pelo caminho da segunda opção.<br><br>Durante minha breve experiência universitária (os últimos 6 anos) tive contato com tecnologias de hardware reconfigurável, como as FPGAs. Trata-se de chips de hardware genérico que pode ser programado para se transformar em qualquer hardware que o designer especifique usando linguagens de descrição de hardware como VHDL ou Verilog, por exemplo. Há obviamente o limite de complexidade do circuito em função da quantidade de unidades lógicas disponíveis no chip de FPGA empregado. Para construir circuitos mais complexos é necessário utilizar chips de FPGA com um número maior de unidades lógicas.<br>
<br>Já existe uma certa quantidade de hardwares livres sendo distribuídos na Internet. Ou seja, hardwares cuja descrição ("código fonte") é disponibilizada sob alguma licença livre. Há, por exemplo, o site <a href="http://opencores.org">opencores.org</a> que é algo similar a um "<a href="http://sourceforge.net">sourceforge.net</a> para hardware".<br>
<br>Eu gostaria de propor um projeto. Algo como um "Projeto GNU para Harware". Ainda precisaríamos de um nome criativo, claro. Mas seria similar em princípio, só que voltado para a criação de uma plataforma de hardware 100% livre que sirva de infraestrutura para sistemas de software 100% livre. Sendo assim, uma das metas primárias do projeto seria a capacidade de hospedar uma distribuição GNU/Linux como a gNewSense, por exemplo.<br>
<br>Teríamos que pesquisar as placas de FPGA atualmente existentes e imagino que o mais provável seria projetarmos nossa própria placa, pois assim poderíamos publicar todo o esquemático sob uma licença livre. Apenas como referência, alguns exemplos de projetos que já divulgaram esquemáticos de eletrônica sob licenças livres são: x0xb0x, arduino e (f)uzebox. Precisaríamos fazer o mesmo para um projeto de placa-mãe contendo um chip de FPGA.<br>
<br>Outro caminho possível seria uma plataforma inicialmente mista contento tanto hardware proprietário quanto hardware livre. Esta estratégia seguiria o exemplo do próprio Projeto GNU, que foi criado por meio da substituição gradual de cada componente proprietário do sistema. Para tal, poderíamos projetar uma placa de extensão (PCI talvez?) contendo a FPGA na qual faríamos o desenvolvimento dos módulos de hardware livre e configuraríamos nosso sistema para gradualmente substituir seus drivers para que operem os dispositivos de hardware livre conforme estes forem sendo desenvolvidos. É possivel que placas desse tipo já existam. Precisamos pesquisar a viabilidade delas para nosso propósito.<br>
<br>Este projeto dependeria também em parte de alguns projetos de software livre. Por exemplo, hoje em dia não há (até onde sei) solução em software livre para carga de FPGAs. O único software desse tipo que roda em sistema GNU/Linux é o da Xilinx (fabricante de chips de FPGA) mas este é um software proprietário. Talvez seja o caso da FSF adicionar esta demanda à sua High Priority Projects List.<br>
<br>Uma meta a longo prazo seria especificar métodos para interação hardware-software. Ou seja, uma convenção de chamadas que permitisse ao linker vincular chamadas de função (feitas pelo software) a otimizações de algoritmos implementados em hardware e possivelmente instanciados dinamicamente na FPGA. Este seria um dos benefícios do uso de hardware reconfigurável. Precisamos pesquisar a viabilidade tecnológica dessa idéia.<br>
<br>Por fim, imagino que um princípio que deveríamos tentar seguir é a independência de fabricante. Ou seja, deveríamos adotar módulos de hardware portáveis que não nos tornem dependentes dos chips de FPGA fronecidos por um único fabricante, como acontece com os soft-cores NIOS II e MicroBlaze.<br>
<br>Seria muito interessante tentar criar uma distro de hardwares livres a partir duma seleção das descrições de hardware disponíveis hoje na internet (como no site <a href="http://opencores.org">opencores.org</a>) e como uma forma de medir qual estado de evolução nos encontramos no momento rumo a uma plataforoma de hardware 100% livre.<br>
<br>Caso eu lembre de mais algum detalhe eu envio um novo email. Por enquanto, eu gostaria de ouvir comentários e sugestões da comunidade.<br><br>até logo,<br>Felipe "Juca" Sanches<br>