Buscando melhorar minhas habilidades como programador ruby, resolvi procurar algum projeto opensource no github, que fosse útil pra mim de alguma forma, e que fosse usado por um bom número de pessoas. Infelizmente, não encontrei nenhum projeto que não fosse tão grande quanto o Rails, ou tão pequeno que ninguém da comunidade ruby realmente usasse, então acabei desistindo da ideia. Um dia, acompanhando o canal de ruby do debian no irc, percebi que alguém havia empacotado o ruby-ghi para a unstable, e por curiosidade fui atrás do projeto usado como upstream para o pacote.
Ghi(https://github.com/stephencelis/ghi) é uma gem ruby, que se comunica com a api do github, e permite gerenciar várias features disponibilizadas pelo github, via terminal. Entre essas features temos:
- Listagem de issues
- Listagem de milestones
- Abrir/Fechar issues
- Abrir/Fechar milestones
- Editar issues existentes
- Assinar issues para alguém, ou para si mesmo
Achei o projeto muito interessante, com um código não tão grande assim, e várias issues relativamente fáceis de serem resolvidas.
A issue que eu escolhi para resolver foi, ao listar as issues de determinado repositório, filtrá-las por milestone:
O maior benefício de contribuir com projetos open source, além de você poder usar essas contribuições no seu currículo, é o ganho que você terá como programador. Uma issue simples como essa que eu peguei para resolver, me fez estudar vários conceitos de ruby que eu não dominava, ou usava sem saber muito o porque(blocks por exemplo). Além de estudar a própria linguagem, projetos open source te mostram outras maneiras de resolver um mesmo problema, ou seja, te trazem visão crítica e te permitem perceber que nem sempre apenas funcionar é o bastante, principalmente quando se trata de projetos com vários contribuidores, que constantemente vão ler o código de outros desenvolvedores. Manutenibilidade deve ser algo primordial em projetos open source.
O pull request que enviei https://github.com/stephencelis/ghi/pull/301
O ghi, apesar de ser um projeto com um tamanho de código fonte médio, não possui testes. Iniciei uma discussão(https://github.com/stephencelis/ghi/issues/302) no repositório sobre essa ausência de testes,e o quanto isso é prejudicial pra evolução do projeto. Espero que em breve possamos adicionar uma boa cobertura de testes para o ghi.
O meu objetivo é encontrar outros projetos opensource para contribuir, e sempre buscar melhorar minhas habilidades como programador.