A incrível página de SCHWARZ, A. L.

também conhecido como "O FODA"


Página inicial

Desenvolvimento de software livre

Aqui deixarei algumas notas sobre desenvolvimento de software livre e a matéria de mesmo nome, cursada na USP.


23 de abril

Apresentações e revelações

Hoje foi a primeira aula de apresentações que todos os grupos fizeram para o Linux. Foi muito interessante ver como outos grupos lidaram com problemas semelhantes aos nossos, bem como constatar que muitos apresentaram o patch de maneira mais detalhada do que eu fiz neste blog.

Também foi interessante ver como colegas também tiveram problemas parecidos com os primeiros tutoriais. É realmente difícil escrever uma documentação que preveja perfeitamente todo caso de implementação, e como o procedimento deveria ser realizado em cada distribuição.

Mais especificamente, vi que usuários do Arch também tiveram problemas parecidos para subir uma máquina virtual no ambiente deles. Muito embora meu sistema doméstico seja mais experimental, é tentador dizer que distribuições "rolling-release" parecem ter maior predisposição a certos problemas...


Nove de abril

Nem parece verdade

Foi a melhor aula até agora. Aprendemos como funcionam as listas de email dos desenvolvedores do Linux e como enviar nossas contribuições.

Ao final, ficamos encarregados de escolher dentre uma lista de problemas constatados no subsistema de IIO no Linux e enviar uma correção.

Acabamos por escolher um problema de duplicação de função no módulo adc/ad7091r-base.c, por nos parecer mais simples. E realmente o Arthur, meu colega de equipe, conseguiu prontamente detectar como elas funcionam e inserir um macrho de precompilador que facilitaria o retorno do resultado.

Juntos, conseguimos ainda na mesma aula implementar a modificação em nosso kernel, iniciar nossa máquina virtual com ele, carregar o módulo afetado com o comando modprobe e inspecionar a saída do dmesg para ver se deu tudo certo. Realmente tudo pareceu em ordem e ficamos felizes com o resultado!

Durante a semana de feriado, enviamos as modificações para a lista de emails do Linux. Um mantenedor reclamou que elas deixariam o código menos legível. No entanto, estamos confiantes de que elas diminuem o inchaço do código fonte e também do binário compilado, que passaria a ser mais eficiente nos sistemas embarcados amplamente utilizados no ambiente industrial.


Segundo de abril

Parece até mentira

Hoje a aula foi eminentemente teórica. Palestraram Paulo Meirelles e Nelson Lago. Discorremos bastante sobre o que viria a ser Liberdade de Software. É um princípio muito caro para os dias de hoje. Com predecessões na antiguidade clássica, o princípio de liberdade alcançou se tornou politicamente preponderante no mundo ocidental com as revoluções francesa e americana nos séculos 18 e 19. Alcançou seu ápice material na revolução industrializadora dos Estados Unidos: o cidadão comum, em gozo de seus direitos podia adquirir seu Ford T na cor que quisesse, desde que fosse preto. Cabia, logicamente, aos grandes conglomerados industriais o fardo de garantir essa liberdade a todos.

Mais de um século mais tarde, essa liberdade se despiu de suas vestes materiais, alcançando a própria sexualidade humana. Desta vez se alicerçando não na antiguidade clássica, mas na luta pelos direitos civis dos negros dos EUA, os sidadões (JANJA, 2024) se mobilizaram para lograr a verdadeira liberdade sexual. Consolidou-se o direito de sentar onde quiser, com restrição parecida com à da época de Ford, citada acima. Logicamente coube e cabe aos grandes conglomerados tecnológicos e partidos políticos o grande fardo de garantir essa liberdade essencial de tomar no cu a todos nós, simples e ignorantes mortais.

No entanto, tudo isso é mera verborragia e encheção de linguiça. O assunto da aula, na verdade, foi a liberdade de software. Em letra minúscula mesmo. Desta vez os precedentes foi a luta contra os ladrões de patente do século 20, que levou à criação da Linux Foundation, da Free Software Initiative e um monte de outras organizações inúteis que só servem para sugar dinheiro do contribuinte. Embora muitas vezes sejam patrocinadas por filantrópicos conglomerados empresariais, como a Microsoft, são reconhecidas como instituições de interesse público em múltiplos países ocidentais, sempre preocupados em garantir a liberdade de seus sidadões. Um exemplo primordial é o Ladybird, emblemático para mostrar como qualquer um hoje consegue adentrar e competir no mercado dos navegadores de internet, restrito à nobreza monárquica até o século 19 e, posteriormente, a uma elite empresarial e industrial bastante restrita.

Hoje é tida como um direito fundamental universal. Por conta disso, todas as cláusulas de todas as licenças mencionadas, sejam derivadas da MIT-BSD, da GPL ou da WTFPL, são amplamente válidas internacionalmente, com as autoridades brasileiras tendo imenso respeito por suas cláusulas e pela propriedade intelectual como um todo. Isso é tão verdade que essas cláusulas são rotineiramente modificadas em pequena monta por diversos advogados estado-unidenses, sempre sem nenhum atrito ou problema de aplicação resultante.

No entanto, nem tudo são rosas e houve certas digressões contra a Liberdade™. Mais especificamente, contra a Liberdade™ de Expressão™. Lamentavelmente Nelson Lago não soube medir suas palavras. No Install Fest que ocorreu no sábado seguinte, zombou a inconveniência das atualizações automáticas do Windows. Embora até não discordassem em essência, até mesmo alunes de outras turmas compareceram para fazer valer toda essa Liberdade™ recém-conquistada via redes sociais. É um absurdo realmente haver sistemas operacionais com atualizações automáticas. O Linux é superior justamente porque não temos disso. Na verdade, na USP e na Rede Linux há diversas máquinas que funcionam há anos sem serem atualizadas, sem haver qualquer problema de funcionamento ou brecha de segurança.


26 de março

Leve como uma folha no outono

A sessão teórica de hoje foi uma continuação dos slides apresentados na aula passada. O foco foram a evolução do software livre e marcos históricos relevantes. Foi interessante rever tudo isso, e perceber como certos eventos no Brasil surtiram um revés na adoção do software livre. Algo que me chamou a atenção foi o visionarismo do funcionário público brasileiro: com a pretensão de fornecer acesso a internet aos rincões mais profundos do cuzil, estavam anos à frente do Elon Musk. Faltou, obviamente, a vontade de trabalhar e verba suficiente para enfiar no próprio cu.

Comoveu-me a desilusão do professor Paulo com a evolução da política bostílica: em 2010 e 2014, o país quase tivera duas mulheres competindo no segundo turno das eleições presidenciais. Como todos sabemos, é um ledo engano. O Brasil tem várias mulheres talentosas, devidamente reconhecidas pela sociedade. Tanto é verdade que em breve novamente teremos eleições presidenciais a serem competidas por duas das mentes mais brilhantes da história da humanidade: Simone e Tabata Janja e Michelle! Não apenas o talento feminino, mas a própria excepcionalidade humana em si é generosamente recompensada na Bananônia!

A sessão prática, por sua vez, girou em torno de dispositivos de caractere. O tutorial foi mais explicativo do que prático, mas mesmo assim muito elucidativo e pavimenta muito bem o caminho para quem deseja se tornar desenvolvedor de módulor do cerne Linux. Eu já tive a oportunidade de inserir um módulo externo ao meu próprio cerne com a edição de arquivos KConfig e Makefile em um subdiretório da árvore. No entanto, foi muito bom ver como as funções e macros de bibliotecas e cabeçalhos feitas justamente para desenvolvimento e operação de módulos do Linux funcionam.

Contudo, tive a oportunidade de acompanhar um colega que estava ocupado com alguns tutoriais anteriores. Ele não aparentava ter dificuldades na prática. No entanto, a demora para compilar o cerne repetidas vezes foi um fator desencorajador. Creio que os tutoriais mandam rodar make clean diversas vezes. Muitas delas pareceram desnecessárias e contribuiram para o procedimento ser muito mais demorado em um computador antigo.


XIX de Março

Uma escola

O verão dava seus últimos suspiros, sem derrubar nenhuma árvore. De fato, o clima estava bem ameno lá fora. É válido que a aula também correu bastante calma, sem nenhum solavanco na correção de erros das aulas passadas e no seguimento das novas instruções.

Como de costume, tudo começou com sessão teórica. Seguindo diretrizes consagradas do Direito Internacional, o arquivo utilizado is licensed under a Creative Commons Atribuição 2.5 Brasil License. Graças a Odin temos professores antenados com os direitos individuais, utilizando serviços de empresas profundamente comprometidas com a defesea deles para compartilhar e projetar as lâminas de apresentação.

O conteúdo em si não foi nenhuma novidade. Debruçamo-nos sobre o conceito de Software Livre, sua evolução e o significado prático dele nos dias atuais. Uma das vantagens apontadas é que o uso do software livre não implica infringimento de propriedade intelectual e, por conseguinte, de crime contra a economia popular. Portanto, seus adeptos não correm o risco de serem visitados rotineiramente pela polícia federal brasileira por causa do consumo e distribuição de produtos piratas. Certamente veremos nas próximas aulas o conceito de Software como Serviço!

A sessão prática transcorreu bem melhor do que nas últimas aulas. Foi fácil criar o módulo novo e fazê-lo imprimir uma mensagem personalizada no log do kernel. No entanto, depurar os erros acumulados das aulas passadas demandou um pouco mais de tempo, e por causa disso saímos um pouco mais tarde do que programado. Apesar dos monitores dos professores terem devidamente depurado as instruções das aulas passadas, foi-nos possível constatar que diversas equipes diveram problemas, por diversas causas. Minha suspeita de que se tratava de um erro de nomeação de dispositivo de disco não se confirmou. Prestamos atenção que os monitores disseram e percebemos que erramos ao transferir a saída do lsmod da máquina hóspede à virtual. Ao tentar seguir essas instruções em outra máquina, percebemos que nem todas as dependências estavam listadas. Em uma máquina Ubuntu, precisamos instalar o pacote libssl-dev para compilar o cerne. Além disso, vários problemas teriam sido evitados se tivessem sido incluídas instruções de instalação do daemon do SSH na máquina virtual, ou se um procedimento menos esotérico, como copiar e colar, tivesse sido empregado.

Depois da correção, contudo, tudo correu muito bem e conseguimos concluir rapidamente o terceiro tutorial. Pode ter sido mais fácil para mim porque ano passado participei de algumas sessões do FLUSP sobre personalização do kernel, e esse procedimento foi mencionado. Mal podemos esperar pelas próximas aulas! Ao que tudo indica, vamos fazer modificações ainda maiores no Linux e, por conseguinte, no próprio funcionamento de nossas máquinas!


Águas de doze de março

Uma só ventania não faz verão

Hoje foi nossa primeira aventura em aula com customização do cerne Linux. É algo que já fiz diversas vezes com o Gentoo. No entanto, devo reconhecer que a compilação cruzada para uma arquitetura diferente, a ARM, é novidade para mim. Não utilizamos o KW, desenvolvido por alunos e ex-alunos da USP, mas mesmo assim o tutorial foi bastante claro e fácil de seguir.

No entanto, não nos foi possível inicializar nossa máquina virtual com o novo cerne por nós compilado. Vários de nossos colegas também foram afetados por isso. Não conseguimos encontrar uma solução nem determinar a causa. No entanto, levando em conta minhas experiências passadas com gestão de servidores virtuais remotos, creio que o novo cerne dava um nome diferente para o dispositivo de disco que continha a raiz do sistema. Com isso, não pôde encontrá-lo com as configurações que funcionavam com o cerne anterior, fornecido com o qcow do Debian. Muito provavelmente teríamos contornado esse problema se esse disco tivesse sido referenciado por sua UUID, e não por seu nome tipo /dev/vdaX. Esse foi um problema com que deparei ao compilar um cerne personalizado para um servidor remoto rodando o Gentoo, e suponho que a mesma coisa tenha acontecido durante essa sessão experimental.

Eu tentei seguir os dois primeiros tutoriais em casa, em minha distribuição doméstica baseada no Gentoo, montada inteiramente com o Clang e o Musl. Por incrível que pareça, não consegui ir muito longe por causa de um bug do Gentoo, de vários anos, afetando o hivex. Nem consegui chegar na parte em que deveria montar uma VM com o Void ou o Alpine para conseguir fazer a compilação cruzada. Aliás, nem sequer cheguei a encontrar qcows para esses sistemas ou algum outro similar. A propósito, eu duvido que um cerne compilado com o Musl conseguiria operar num sistema Debian totalmente baseado no glibc, mas seria muito engraçado se tal fosse realmente o caso.


Memórias Póstumas de 26 de fevereiro

escritas em nove de março

Neste dia houve a apresentação da disciplina e uma breve apresentação sobre A catedral e o Bazar, de Eric Raymond. Trata-se de uma obra escrita antes de 1999, com viés para o modelo de desenvolvimento do Linux, muito provavelmente o mesmo desta disciplina. É um tema controverso porque projetos como o BSD seguem mais o modelo catedrático do que o da feira. Como a obra foi escrita nos Estados Unidos, um país de maioria protestante, colonizado por pessoas que fugiam da opressão religiosa, a escolha de termos pode ter uma profundidade a mais a ser explorada.

Depois houve uma oficina sobre o Linux. A premissa foi seguirmos um tutorial para implementarmos uma máquina virtual para modificarmos o código do Linux -- entendido como o cerne, e não um sistema operacional como um todo, como leva a crer aquela manifestação erroneamente atribuída a Stallman. O procedimento se deu de maneira rápida e tranquila, pois o artigo estava devidamente testado e atualizado. Portanto, não estava apenas com uma ligação para a qcow do Debian mais recente (como todos sabemos, sempre é importante manter o sistema operacional da máquina atual), mas também com todos os scripts de acordo com a sintaxe momentânea dos comando utilizados, como o virt-install e o parâmetro os-query, e todos os comandos relevantes correta e pertinentemente indicados se deveriam ser executados ou não com superusuário (ou seja, mediante a consagrada ferramenta sudo, pré-instalada na distribuição Ubuntu do Linux).

Além do mais, como monitor da Rede Linux ingresso no começo de 2024, e não no final de 2023, tenho a dizer que tive uma vantagem. Como todos sabemos, o ingresso na Rede Linux tradicionalmente se inicia com implementação de novas máquinas virtuais para cada sistema utilizado, entre outras coisas, seguido por uma pizzada. Ou seja, mais um conhecimento passado de geração e geração, com todos os integrantes cooperando entre si, com plenos conhecimentos do ecossistema envolvido e saindo felizes com toda a vivência e aprendizado adquiridos.


Seis de março de 2025

Não tive aula hoje. No entanto, deixei esta seção aqui porque eu criei este site hoje. E também porque é cópia integral de meu site para outra matéria que curso na USP. :)

Espero me divertir e aprender bastante. Pretendo também adquirir experiência profissional relevante com isso em futuro próximo, talvez até mesmo ressuscitando meu projeto de software livre para o qual este estilo de website foi criado. ^^

Tenham todos uma ótima noite e tomem bem no fundo de seus cus.


Agradeço imensamente à USP e à Rede Linux pela hospedagem.