Group chat: GT-Anti-Blobs
Membros iniciais nesse grupo: Kretcheu, Madruga e Edu Filipe
e eu (Felipe "Juca" Sanches)
A tabela é meio enfadonha de editar. As datas e versões do kernel eu editei algoritmicamente
escrevi um script para fazer o parsing do wiki-code, pegar o nome do driver, baixar o HTML de duas páginas que têm essas infos de data de cada release do Linux, fazer o parsing dos HTML pra extrair as infor, enxertar no wiki-code e salvar num arquivo de output que eu copiei e colei de volta pro wiki
acho que seria o caso de ter esses dados todos armazenados em JSON em um repositório git junto com ferramentas para gerenciar os dados, assim como para gerar visualizações
mas por enquanto o que a gente tem é o wiki mesmo
Pensei em adicionar mais campos nessa tabela
hoje ela nos mostra as seguintes informações:
Nome do driver
em qual modelo de CPU o firmware roda
qual foi a primeira versão do kernel contendo um driver para o dispositivo
qual foi a data de release desse primeiro driver
qual a relevância desse dispositivo (aqui podem entrar observações, evidências de popularidade, algum uso importante, notório do dispositivo, etc)
quais são os termos de licenciamento do firmware (vou falar mais sobre esse campo depois)
e a descrição do driver (essa é a string de descrição oferecida no log de deblobbing do Linux-Libre que, por sua vez, provavelmente vem da descrição escrita pelo próprio autor do driver no kernel)
Os campos atualmente incompletos nessa tabela são: CPU, relevância e status legal/licenciamento
Descobrir qual é a CPU de um dispositivo não é trivial, então esse campo vai muito provavelmente continuar incompleto pra sempre. Gradualmente podemos ir anotando o que formos descobrindo.
Mas é importante lembrar que sem saber qual é a CPU, é absolutamente impossível escrever um novo firmware para o dispositivo.
Às vezes constam no driver comentários sobre a arquitetura do hardware. Às vezes podemos inferir por meio do algorítmo de carga de firmware implementado no hardware qual é a CPU do dispositivo (cruzando com informações de datasheets, foi isso que eu fiz no caso dos EzUSB dessa lista). E às vezes uma análise do binário do firmware pode prover evidências de qual arquitetura de CPU foi usada (dá pra fazer isso, por exemplo, com binários compilados para processadores ARM - há um padrão numérico bem evidente, posso explicar em mais detalhes esse exemplo depois se quiserem)
A coluna "relevância" também será preenchida gradativamente, com base em pesquisas online e coleta de relatos de usuários.
Talvez caiba aqui uma pesquisa de popularidade desses dispositivos. Essa é uma parte importante para vocês me ajudarem a planejar/executar.
(tudo é importante, na real ! Mas acho que o campo "relevância" é muito estratégico, então vale uma atenção maior)
Por fim, temos a coluna de "status legal / licenciamento do firmware". A lógica por trás da coleta desse tipo de info é que em alguns casos os fabricantes se acharam espertinhos aplicando a licença GPLv2 nos blobs para mascarar o fato de não serem software livre. Mas o tiro saiu pela culatra pra eles, pois para firmwares não livres licenciados sob GPLv2 podemos fazer um disassembly e o código resultante pode servir de base para iniciar um projeto de firmware livre (depois de umas boas massagens, é claro)
Pensei também em adicionar mais colunas nessa tabela como, por exemplo, informações sobre "onde comprar" listando links para lojas online onde produtos que dependam do firmware não livre em questão possa ser comprado. O objetivo não é induzir a compra. Pelo contrário, seria para servir de maior evidência sobre a relevância do dispositivo. E também para evitar trabalho à toa: Se é impossível de comprar, então por que gastaríamos neurônios tentando dar suporte ?
Uma última observação inicial: A funcionalidade de ordenação da tabela no wiki da LibrePlanet parece estar com problemas de lidar com essa tabelona que eu fiz. Não estou conseguindo ordenar por data de release do primeiro driver, o que seria extremamente importante para visualizar as informações.
Bom, é isso aí! Está enunciado o desafio :-D Happy Hacking!
Felipe "Juca" Sanches added Raphael Thaumaturgo Molnar
kretcheu ☭ added Alexsandro Carvalho
Alexsandro Carvalho:
Pode fazer um script que busca no stack overflow e nos sites de suporte das sistros por perguntas sobre o hardware. Considerando que muitas perguntas maior interesse
boa!
Seria um crawler. Você quer tentar escrever um script desses ?
ou talvez simplesmente consultar os resultados de busca do próprio Google
Alexsandro Carvalho:
Google serve
vou abrir um repo no gitlab pra botar scripts auxiliares
Nesse repo eu coloquei o script que escrevi ontem para automaticamente alimentar as colunas "data" e "versão" da introdução de novos drivers no kernel
kretcheu ☭:
Os firmwares saindo da árvore principal do Linux, ainda sobram blobs sendo distribuídos ni tarball ?
não sei dizer
Tem um repo Anti-Blobs que precisa ser atualizado. Alguém aqui está a fim de fazer a atualização dessa vez ?
Precisaríamos ir passo a passo atualizando a lista do wiki (https://libreplanet.org/wiki/LinuxLibre:Devices_that_require_non-free_firmware) da versão 4.12.7 até a versão atual que, se não me engano, é a 4.13.5
E descobrir quais novos firmwares não livres apareceram como dependência de drivers do kernel nesse meio tempo (e se algum foi embora)
hoje em dia o trabalho é mais ou menos manual ainda. Entretanto, tem um pequeno script no repo git do Anti-Blobs, que ajuda um pouquinho nessa tarefa.
Mas o que mais ajuda é meramente fazer o diff (usando o git) entre o log do linux-libre de uma versão antiga e os logs mais atuais.
Felipe "Juca" Sanches added Aurelio Heckert
Mateus Baptista:
Muito interessante, eu pagaria a mais por isso, mas tem como aferir q o intel me está realmente "inoperante" ?
não tenho idéia!
Mateus Baptista:
Vindo inoperante da Dell, será que facilita o porte do coreboot?
acho que é irrelevante
mas não sei
Mateus Baptista:
O comportamento de rebootar de 15 em 15 minutos não era culpa do intel me ? Talvez inoperante ele não cause esse efeito.
Mateus Baptista:
Só suposições