No início da minha carreira, perdi boa parte do meu tempo investindo em freelancing. Ainda não tinha descoberto, ou apenas realizado a importância da colaboração em projetos Open Source. Talvez por falta de incentivo, ou até mesmo por precisão financeira.
Sempre utilizei GIT para versionar meus projetos. A pouco mais de 1 ano comecei a embarcar nesse mundo, fiz novos amigos, conheci pessoas incríveis, aprendi muito. Passei a perceber que consegui adquirir tanto conhecimento lendo e revisando código de outros desenvolvedore.
Após participar de vários projetos. Incrivelmente a quantidade de contribuidores vem crescendo muito, e alguns que querem ajudar não sabem bem como começar, ou como contribuir da forma correta. Resolvi então criar este tutorial com algumas dicas que utilizo no dia-a-dia.
O termo Open Source (Código aberto em português), diz respeito a software de com código aberto, transparente e de forma colaborativa. Significa que você pode ter um executável final do projeto e também ter acesso ao código fonte de como esse executável foi produzido. Uma vez tendo acesso ao código fonte, é possível compreender como o software foi produzido e o mais importante, é possível modificar, solucionar problemas e adicionar novas funcionalidades. Um grande exemplo é o Kernel do Linux, que teve a contribuição de milhares de desenvolvedores.
A maioria das vezes se resume no sentimento de solucionar um problema, publicar e ver sua solução sendo utilizada por centenas, milhares, ou até milhões de pessoas. Isso é realmente incrível! Mas não é só isso, contribuindo você pode:
Atualmente enquanto escrevo esse post, o Github na minha visão é a maior rede de projetos open-source do mundo. São mais de 5 milhões de projetos abertos crescendo a cada dia e esperando ajuda de novos desenvolvedores.
Não basta saber a existência dessa vasta quantidade de projetos. É preciso se identificar com algum. A primeira etapa é procurar um projeto interessante para você. Um projeto que talvez você use diáriamente, e que possivelmente tenha achado algum bug. Talvez até algo que lhe traga interesse e que você queira se aperfeiçoar mais. Geralmente um outro desenvolvedor pode pedir sua ajuda por achar o seu conhecimento o suficiente para resolver determinados problemas. Essa é a magia em ter uma grande comunidade.
Após escolher um projeto, caso não saiba por onde ajudar, alguns projetos tem uma espécie de ROADMAP (Lista de funcionalidades desejáveis). Nessa lista você pode identificar o que está faltando ser implementado no projeto.
Existem algumas formas de procurar um projeto interessante no qual você possa se identificar:
Atualmente sou mais ativo na comunidade ruby e javascript, ao longo do tempo conversando com outros desenvolvedores e usando vários projetos Open Source, percebi algumas características que me fazem perceber quais projetos são mais seguros e tendem a evoluir melhor como requisito para utilização em meus projetos.
Um projeto tende a crescer adequadamente quando possui uma boa comunidade, desenvolvedores, designers, formadores de opinião. Todos são bem-vindos e cada um contribui como pode, o importante mesmo é ajudar e fazer com que o projeto cresça da melhor forma possível.
Existem algumas divisões no processo de colaboração:
Após um certo nível de maturidade, os Owners de projetos geralmente criam organizações. Tirando assim o vínculo direto do projeto ao seu perfil de usuário no Github e criando uma organização para representar todos os repositórios relativos ao projeto. Ex:
Além das divisões normais, cada Organização pode ter sua própria nomenclatura para os tipos de Contribuidores do projeto, veja o exemplo abaixo:
Um bom projeto permite que novos usuários tomem conhecimento facilmente das funcionalidades e requisitos para utilização. Utilizamos vários recursos de documentação para essa finalidade.
Geralmente quando você cria um projeto no Github ou Bitbucket eles sempre oferecem a criação inicial do arquivo README.md. O .md representa a sintaxe markdown, se você não sabe como utilizar, sugiro ler o post “Adicionando Markdown ao seu kit de sobrevivência na web”. O readme oferece a descrição básica do projeto com detalhes de como usar, compilar ou até como contribuir e acompanhar o projeto.
O arquivo CONTRIBUTING lista uma breve documentação de como contribuir com o projeto. Recentemente o Github criou uma funcionalidade que integra este arquivo ao processo de Pull Request e criação de Issues. Ao iniciar a criação de uma issue, será possível ver um alerta sugestionando uma leitura no guia de contribuição do repositório:
O arquivo LICENSE representa o tipo de licença do projeto. Geralmente projetos Open Source informam aos usuários e contribuidores o que eles podem e não podem fazer no projeto (usar, modificar, redistribuir, etc). Existem vários tipos de licenças, você pode descobrir qual se encaixa melhor no perfil do seu projeto no site choosealicense.com.
Geralmente projetos iniciam apenas com sua documentação no arquivo README. A medida que o projeto cresce é necessário criar outras formas de documentação. Geralmente incluindo em uma pasta /doc. Ou criando páginas WIKIs. WIKIs são recursos providos pelo Github ou Bitbucket para que se possa criar documentações simples e navegáveis.
Até então você conseguiu aprender bastante coisa sobre o mundo Open Source. Em breve tem mais novidades, acompanhe o blog! Nos vemos logo mais.