Salve terraqueos, tudo em ordem?
Atrasei um pouco o artigo dessa semana, mas foi por uma boa causa. Além de estar trabalhando bastante, ando passando por um momento de grandes revoluções pessoais e vou falar um pouco sobre isso também hoje. O artigo será divido em duas partes, a primeira onde vou falar um pouco sobre alguns acontecimentos e mudanças de atitude e a segunda com um exemplo prático bem legal!
Open-Source
Eu sempre fui declaradamente apaixonado por Open Source. Pra quem não é familiarizado com o termo, este é um modelo colaborativo de desenvolvimento, que permite a livre consulta, modificação e distribuição do código-fonte de um software sem a necessidade de pagar por uma licença comercial. Eu acho incrível o poder que uma comunidade com um interesse comum possui de construir coisas realmente grandiosas. E assim como eu sempre me beneficiei de tudo que é oferecido gratuitamente, também sempre tive uma grande vontade contribuir para que outras pessoas sintam o mesmo. E aí entra uma questão bastante comum: Como eu posso contribuir com a comunidade? Vou tentar abordar um pouco sobre o assunto em cima de algumas experiências recentes.
Eu sempre fui muito perfeccionista (no sentido ruim mesmo), onde eu acho que nada nunca tá perfeito e se não tiver perfeito não serve. E esse "perfeito" muitas vezes nunca chega. Eu também sempre gostei de fazer muita coisa ao mesmo tempo e essas duas características em conjunto, fizeram com que eu tivesse um certo bloqueio durante algum tempo. Eu estava sempre fazendo muitas coisas e nenhuma delas estava perfeita o suficiente, logo, não serviam.
Iniciando a revolução
A primeira coisa que fiz foi mudar meu mindset em relação a essas questões. Eu entendi que a perfeição que eu buscava era algo impossível e que eu precisava direcionar meu foco para terminar projetos de forma mais simples. Então eu comecei a planejar meu tempo de uma forma inteligente, colocando data e horário pra tudo que eu desejava fazer com antecedência. E a primeira coisa que eu decidi fazer na prática, foi começar a escrever aqui no dev.to, que também é uma forma de contribuir com a comunidade compartilhando conhecimento. Vale lembrar que existem diversas formas de contribuição, como escrever artigos, participar de talks, eventos, ajudar membros da comunidade e claro, escrevendo muito código! E assim, iniciei a fase dois do meu plano para dominar o mundo.
Hands-on
Bom, então vamos de hands-on! Eu sempre usei bastante nosso querido Github (a maior comunidade de código open-source do mundo), porém de uma forma muito pessoal, guardando projetos, templates, compartilhando com pessoas mais próximas e esse tipo de coisa. Então, o segundo passo após começar a escrever aqui, foi começar a contribuir também com projetos que possam ser relevantes para a comunidade. E como a primeira vez tem que ser especial (e dizem que a gente nunca essquece), decidi começar compartilhando algo relacionado a duas das minhas tecnologias favoritas: Javascript e Kubernetes <3.
O Kubernetes é uma ferramenta para orquestração e gerenciamento de containers extremamente poderosa. Quem trabalha com essa tecnologia provavelmente conhece o Helm, uma ferramenta para facilitar o gerenciamento de aplicações em Kubernetes. Em um projeto que ando trabalhando recentemente, surgiu a uma necessidade de utilizar o Helm, que é uma ferramenta CLI, através do NodeJS e foi assim que surgiu meu primeiro pacote publicado no NPM (O gerenciador de pacotes do NodeJS). E claro, o código é totalmente open-source e está disponível no Github!
Helm Wrapper
Eu criei um wrapper para o Helm, permitindo utilizar as funcionalidades da mesmo via Node JS. Criei as funcionalidades mais utilizadas (install, upgrade, uninstall, list, history, rollback), com possibilidade de passar todas as flags suportadas. E caso seja necessário utilizar alguma função não implementada, também criei uma função que permite receber um comando custom, sendo possível executar outros comandos (sem o mesmo padrão nas respostas dos métodos). Vou demonstrar de forma breve como utilizar (para mais detalhes, basta acessar o repositório):
Instalando o pacote:
const helm = require('./index');
Utilizando algumas funcionalidades:
/**
* install a release
*/
helm.install('nginx', 'bitnami/nginx');
/**
* install a release with flags
*/
helm.install('nginx', 'bitnami/nginx', ['-n stage']);
/**
* upgrade a release
*/
helm.upgrade('nginx', 'bitnami/nginx');
/**
* rollback a release
*/
helm.rollback('nginx', 1);
/**
* list releases
*/
helm.list();
/**
* list release history
*/
helm.history('nginx');
/**
* uninstall release
*/
helm.uninstall('nginx');
/**
* custom command
*/
helm.custom('help');
Inicialmente minha ideia era criar uma interface HTTP para o Helm. Porém, decidi criar um wrapper um pouco mais genérico, permitindo que qualquer um pudesse fazer sua própria implementação de API, ou qualquer outra desejada. Ainda preciso fazer uma documentação mais rica e escrever testes, mas como citei anteriormente, isso será um trabalho contínuo e conto com a ajuda de vocês pra isso também!
Seguindo a ideia inicial, também fiz minha própria implementação de API utilizando o wrapper, que acompanha também uma imagem Docker, permitindo rodar todo o ambiente necessário sem nenhuma dependência local! Mas esse é assunto que ficará para o próximo post!
Conclusão
Então por hoje é isso. Estou muito feliz pelo início dessa nova jornada e no próximo artigo vou abordar a minha implementação de API utilizando o wrapper e também falar um pouco sobre alguns tópicos importantes para quem também deseja embarcar no fantástico mundo do open-source. Sendo assim, me contem o que acharam, suas experiências e contribuições com código open-source, principais dúvidas, sugestões e o que mais quiserem.
Espero que todos estejam bem, até a próxima e grande abraço!
Top comments (0)