⏰ de 5 a 10 min de leitura

Que época para vivermos meus amigos! Uma coisa é fato: nunca fui um cara Microsoft. Sempre gostei de saber o que acontece por de baixo dos panos, de ter o código fonte disponível e poder customizar meu sistema. Apesar da instituição de ensino no qual me formei, na época, ter fortes influências com tecnologias Microsoft eu sempre tentava resolver os problemas propostos, também, com tecnologias abertas. Com o tempo, utilização, aprendizado e aprofundamento nas tecnologias que as comunidades de código livre disponibilizam, cheguei a conseguir, ano passado, também a contribuir de volta no projeto do Kernel Linux. Fiquei muito feliz e orgulhoso de ter o código que escrevi sendo utilizado por várias pessoas no mundo todo que utilizam a Raspberry Pi (as modificações entraram na versão 4.18 do Kernel, hoje o Raspbian já utiliza o 4.19)

Mas o mundo dá voltas, e que época para estar vivo! Quem diria que a Microsoft se tornaria membro PLATINUM da Linux Foundation? Ou que iria ter seus funcionários contribuindo com o Kerner Linux? E que disponibilizaria seu principal framework, que antes só rodava no Windows, para multiplataformas e não só isso, mas open source?  O .NET Framework, a versão que só roda no windows, ainda está vivo mas a ideia da Microsoft é mante-lo apenas para sistemas legados, sem novas features, e vamos ter novidades apenas no .NET Core (que a Microsoft vai começar a seguir outra nomenclatura) open source. Que época para estar vivo!

Hoje no meu setup de desenvolvimento eu posso integrar Windows ou uma distribuição Linux, uso o Debian atualmente, desenvolvendo minhas aplicações com o Visual Studio Code, não só para .NET Core mas utilizo bastante para projetos de embarcados com C/C++. O VS Code (para os íntimos 😘) é uma ferramenta fantástica com uma comunidade de desenvolvedores muito ativa que disponibiliza inúmeras extensões ( até mesmo algumas de gosto duvidoso ). E tudo isso ainda sendo facilitado com a utilização de imagens Linux em containers Docker, tanto para o desenvolvimento quanto para deploy. Eu tenho a liberdade de escolher as ferramentas e tecnologias que vou utilizar nos meus projetos, e hoje tenho a liberdade de utilizar as ferramentas da Microsoft de forma livre sem ter que ficar preso a uma plataforma ou sistema operacional.

Contribuições ao .NET Core

Bom mas nada disso é novo. É apenas um desabafo desse que vos escreve, porque eu ainda fico um pouco surpreso aonde chegamos. Para exemplificar recentemente aonde trabalho tivemos um problema aonde tínhamos que dar suporte a um projeto que usa .NET Core para Linux Embarcado. E em sistemas embarcados um uso de caso clássico é o acesso à GPIO (general purpose input output), ou os pinos de entrada e saída, aqueles aonde se liga os LEDs para piscar 😛.

O .NET core não tem as interfaces e APIs de acesso a GPIO  “built-in” no seu core padrão. Então eu tinha duas opções, escrever uma API acessando as interfaces nativas de GPIO ou com sorte achar uma API pronta na comunidade. E para minha sorte o que achei? O projeto .NET IoT da .NET Foundation. O projeto resolveu o meu problema inicial de ter uma API para acesso as GPIOs, mas logo vi que estavam faltando algumas funcionalidades para suporte ao meu hardware. Os módulos da Toradex (empresa aonde trabalho) tem um processador com vários bancos de GPIO, enquanto a API do dotnet/iot só me dava acesso a um banco (projetado e testado para funcionar na Raspberry Pi). O que eu fiz 🤔? Deitei em posição fetal em choro no chão? Não, contribui com um pull request adicionando essa funcionalidade para acesso de múltiplos bancos de GPIO:

E aí que está a beleza dos projetos open source. Além de você ter a liberdade de utilizar e customizar, você também tem a liberdade de participar e ajudar do desenvolvimento das tecnologias que você e toda uma comunidade estão usando. Agora não só eu, mas toda a comunidade que utiliza processadores com múltiplos bancos de GPIO, podem utilizar o .NET Core IoT em seus projetos de Linux Embarcado.

Minhas contribuições pro projeto dotnet/iot não acabaram por aí, tive a oportunidade de contribuir em um bug fix, também por causa de múltiplos acessos a pinos, mas na parte de PWM agora:

Esse pull request foi bem louco notem o número 🎃!

NERDZÃO + CÂMARA MUNICIPAL

No Sábado dia 24/08 estarei na Câmara Municipal de São Paulo no evento NERDZÃO + CÂMARA MUNICIPAL mostrando na prática, em placas de desenvolvimento, o dotnet/iot e a facilidade de deploy de uma aplicação IoT utilizando containers. Também vou entrar um pouco mais a fundo nos aspectos técnicos do pull request que fiz pro projeto. Então se você curte .NET, Linux, sistemas embarcados e tecnologias livres te espero lá! Serão duas trilhas com 16 palestras durante o dia, link do evento: https://nerdzao.netlify.com/day/

Conclusão

QUE ÉPOCA PRA ESTAR VIVO MEUS AMIGOS! Aonde que eu pensaria que um dia eu ia contribuir com código para um projeto open source da  Microsoft, para o seu principal framework, e para a plataforma Linux!?? Vida longa ao open-source e as comunidades. Se a Microsoft ama o Linux, eu também amo o Linux, então em reação eu também amo a Microsoft! Que essa relação seja duradoura e útil para todos.

Obrigado por ficar comigo até aqui e ler essas palavras jogadas à internet, te vejo no Nerdzão + Câmara Municipal!

Abraços, Matheus Castello