Minha primeira contribuição de código aberto foi para uma biblioteca que eu já havia usado (e teria sofrido muito sem) em um projeto pago anterior. Durante meu uso inicial, vi um bug no código, então criei um patch, ingressei no projeto e enviei-o para revisão.
Cerca de 8 meses depois, quando eu tinha algum tempo livre, decidi que iria retribuir (e trabalhar em minhas habilidades de desenvolvimento) contribuindo mais para o projeto. Então, eu clonei o repositório e comecei a me familiarizar com a base de código. Depois de algumas semanas enviando pequenas correções de patch para a base de código e monitorando as solicitações de recursos, peguei uma solicitação de recurso para adicionar um módulo bastante substancial ao projeto.
Como gerar muitas correções de patches individuais é bastante tedioso para qualquer desenvolvimento significativo, eu clonei o repositório em uma ramificação no git hub e comecei a perfurar o código. Algumas semanas e vários milhares de linhas de código depois, o líder do projeto e eu trabalhamos para integrar e testar minhas correções na biblioteca de uma maneira que funcionasse de maneira consistente com o restante da base de código.
Foi um processo inestimável que eu aprendi muito com:
- Quando comecei, não sabia como usar o Git. No final, eu poderia criar ramos de rastreamento remoto com proficiência e mesclá-los ou transformá-los no ramo mestre sem suar a camisa.
- Comecei no VS 2008 e acabei migrando para o Linux e o Monodevelop para trabalhar na escrita de código (porque o VS é retardado por Unicode e as terminações de linha são uma dor de cabeça no git). Acontece que não há muito que você não possa fazer no * nix que você possa fazer no * nows.
- Eu nunca tinha feito nenhum teste de unidade antes, Nunit é um pedaço de bolo para usar e escrever testes de unidade é uma coisa bastante elementar.
- Eu tive que aprender a engolir a língua e ouvir, além de praticar paciência. Não faz sentido manter uma posição firme em sua posição em um projeto de código aberto, porque todos os envolvidos são conhecedores (provavelmente mais do que você) e capazes de aceitar / rejeitar suas idéias com base na substância e não na entrega. É extremamente humilhante e gratificante ao mesmo tempo.
- Apenas ter os olhos de um outro desenvolvedor habilidoso em uma grande base do meu código apontou falhas no meu estilo que eu nunca havia considerado antes (assim como apontei falhas no código). Para mim, aprendi que é mais fácil / melhor definir constantes do que usar um monte de números mágicos com comentários detalhados.
Esse projeto em particular foi baseado na geração e decodificação de pacotes de rede em todos os níveis de protocolos de rede. Eu tenho um interesse pessoal em redes de nível inferior, por isso foi ótimo ter discussões com outro desenvolvedor com interesses e conhecimentos compartilhados no domínio.
Se você quiser apenas molhar os pés: encontre um projeto que você já use; clonar o repositório; e comece a ver se você pode corrigir alguns bugs e / ou adicionar alguns testes de unidade. Parece intimidador olhar a base de código de outra pessoa com novos olhos, mas é uma habilidade extremamente valiosa para aprender. Envie alguns patches. Você pode esperar que seu código seja minuciosamente examinado primeiro. Não se preocupe, é uma parte normal do processo ganhar a confiança dos administradores do projeto.
Após estabelecer uma base de mérito com o (s) administrador (es) do projeto, comece a buscar mais responsabilidades, como propor novos recursos ou solicitar a atribuição de implementar solicitações de recursos.
Se você não conseguir encontrar um projeto já existente em uma das principais redes de repositórios de código aberto (github, sourceforge, google code), pense em um aplicativo que você realmente gostaria de usar que ainda não existe e comece o seu próprio.
Esteja preparado para ser humilhado e esperar que o trabalho seja rejeitado em favor de novas revisões. O mito de que qualquer pessoa pode adicionar código a um projeto de código aberto é completamente falso. Sempre há um porteiro entre você e o acesso por push. Quanto melhor o seu código, menos ele será examinado a longo prazo à medida que você ganhar confiança dos administradores do projeto. Se for o seu projeto, você será o porteiro.
Atualizar:
Eu apenas pensei sobre isso e percebi que não me incomodei em mencionar qual projeto que muitas das minhas respostas estão referenciando. Para quem quer saber, é o SharpPcap . O desenvolvedor líder Chris Morgan é muito profissional e pontual. Ele faz um ótimo trabalho gerenciando o projeto e me ensinou muito sobre o que é necessário para amadurecer um projeto OSS.
Devido a restrições de tempo pessoal, não sou capaz de contribuir com código há mais de um ano, mas ainda tento retribuir espreitando o Stack Overflow e respondendo às perguntas sobre o SharpPcap ocasionalmente.