ti-enxame.com

Como posso encontrar um bom projeto de código aberto para participar?

Comecei a trabalhar há um ano e quero ingressar em um projeto de código aberto pelos mesmos motivos que qualquer outra pessoa: ajudar a criar algo útil e desenvolver minhas habilidades ainda mais.

Meu problema é que não sei como encontrar um projeto em que me encaixarei.

Como posso encontrar um projeto para iniciantes? Quais atributos devo procurar? Quais são os sinais de alerta de que um projeto pode não ser o ajuste certo? Existem ferramentas disponíveis para ajudar a combinar pessoas com projetos de código aberto?

Há uma pergunta semelhante aqui , mas essa pergunta tem a ver com emprego e é limitada ao PHP/Drupal.

152
Pops

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 o enviei 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 fundi-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 nunca havia considerado antes (assim como apontamos falhas no código). Para mim, aprendi que é mais fácil/melhor definir constantes do que usar vários 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 (s) 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 gatekeeper entre você e o acesso 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.

Atualização:

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, é 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.

111
Evan Plaice

Aqui o que eu sugiro fazer para encontrar a combinação perfeita:

  1. Se você tem um projeto de código aberto que já usa, conhece e se preocupa, esse deve ser o seu primeiro candidato a tentar. Caso contrário, pense no que você gostaria em geral e procure um projeto nessa área.

  2. Quando você encontrar um projeto em potencial, não se apresse para ele. Tente usar você mesmo. É tão bom em ação quanto parecia na descrição e nos comentários? Caso contrário, não é uma parada completa; talvez seja uma oportunidade para você entrar e realmente fazer a diferença. Afinal, ninguém precisa de outro desenvolvedor para um produto perfeito. Mas isso lhe dará uma visão importante se você deseja fazer parte deste projeto, enquanto ganha experiência em primeira mão com as novas tecnologias em uma área na qual está interessado.

  3. Antes de começar a investir muito tempo no projeto e aprender os detalhes, considere ficar nas listas de discussão, nos fóruns e até no sistema de rastreamento de bugs por algumas semanas. Se você começar a contribuir com o projeto regularmente, passará muito tempo lá.

Descobrir: você gosta de andar por aí ou é uma chatice para você? Parece que este projeto tem uma comunidade boa e enérgica ou está morrendo lentamente? As pessoas do núcleo parecem encorajar e orientar os recém-chegados ou você estará por sua conta?

Execute estas etapas para vários projetos, potencialmente em áreas diferentes e é menos provável que você sinta decepções quando você ingressa em uma equipe errada. Essa experiência pode desencorajá-lo a fazê-lo novamente no futuro.

Mais alguns pensamentos:

Se o projeto no qual você está realmente interessado é de alto nível, com muitos desenvolvedores e atividades ao seu redor, provavelmente você terá dificuldade em estabelecer uma reputação suficiente para obter, digamos, comprometer direitos ou um papel interessante na comunidade. Nesse caso, considere ingressar em um projeto de spin-off relacionado com menor visibilidade. Por exemplo, em vez de tentar começar a contribuir com o jQuery, tente encontrar o plug-in do jQuery que será adequado para você. Mais tarde, você pode considerar "subir".

Se você gosta de um projeto, mas se sente intimidado por seus requisitos de tamanho, complexidade ou qualidade de código, considere iniciar a partir de funções de suporte, como teste, manutenção de documentação ou verificação de erros. Se você perguntar na lista de discussão do projeto que tipo de ajuda eles precisam mais no momento, eles ficarão felizes em guiá-lo até lá. :)

Dessa forma, você aprenderá o projeto e construirá sua reputação lá, contribuindo muito mais para ele do que se começasse a enviar patches abaixo do padrão que seriam rejeitados várias vezes até que estivessem prontos.

O último e o mais importante: se você se queimar em um lugar, siga em frente; não desista.

Espero que ajude.

28
kdubinets

Eu recomendo fortemente que você encontre um projeto de código aberto que tenha seu sincero interesse e que você ativamente se.

O motivo é simples: faz a diferença entre uma tarefa e um hobby.

Dê uma olhada no seu computador. Que software você colocou nele que é Open Source? Um palpite seria Chrome ou Firefox, ou talvez o Open Office ou um cliente do Instant Messenger. Eles são perfeitos ou existe apenas uma pequena coisa que você gostaria de mudar, se pudesse?

Se houver, agora é a hora de fazer algo a respeito.

9
user1249

Eu sugeriria encontrar (ou iniciar) um projeto, como as pessoas fazem há anos, começar a usar o software de código aberto para fazer as coisas. Isso pode lhe parecer trivial, talvez até simplificado. No entanto, é realmente difícil descrever a satisfação de usar algo, encontrar um bug, pegar a fonte e corrigi-la. Ou, talvez, alterá-lo para que funcione da maneira que você deseja.

Além disso, não hackie apenas para se envolver. 95% dos meus patches no kernel do Linux nunca verão a luz do dia, eu sei com certeza que ninguém os desejaria além de mim, e eu ' provavelmente seria forçado a passar por avaliação psiquiátrica se algum outro hacker competente do kernel os visse. Mas ainda gosto da minha implementação de piglatin_printk() que começou como uma mordaça de 1º de abril há vários anos :)

Embora sim, colocar seu código e seu processo de pensamento na frente de muitas outras pessoas competentes não tem preço, assim como aprender a se comunicar e colaborar. Um projeto solo é uma ótima maneira de mostrar o que não fazer. Dica, há mais do que apenas usar software de controle de versão, listas de discussão e um rastreador de erros.

Para começar, sugiro que procure em Ohloh para encontrar o software em que você possa estar interessado usando , primeiro. Faça o download, construa e brinque com ele. Então vá pegar outra coisa. Eventualmente, você começará a querer melhorar algo ou perceberá que tem o desejo de implementar algo completamente diferente do que encontrou.

A outra coisa que ajuda é trabalhar para uma empresa aberta e amigável. Minha empresa usa o Xen extensivamente, então eles não têm nenhum problema comigo para encontrar bugs interessantes e corrigi-los, pois precisamos fazer isso de qualquer maneira. Eles também não se importam com os funcionários que participam de coisas como RFCs e rascunhos de especificações, já que usaremos o resultado.

8
Tim Post

OpenHatch foi criado especificamente para isso.

Citar:

O OpenHatch é uma organização sem fins lucrativos dedicada a combinar potenciais colaboradores de software livre com comunidades, ferramentas e educação.

Você pode procurar projetos por tipo, tecnologia, nível de habilidade necessário etc. e encontrar o que corresponde ao seu nível.

7
phw

Uma coisa que notei repetidamente quando se trata de pessoas que desejam iniciar o desenvolvimento de código aberto é que elas ficam sobrecarregadas com a pura complexidade e magnitude de grandes projetos. Eu enfrentei o mesmo problema há alguns anos e, pela minha experiência, é melhor não olhar para os projetos maiores imediatamente.

Depois de passar algum tempo olhando para os projetos que eu gostaria, percebi que eles ainda estavam fora do meu alcance e comecei a trabalhar em projetos muito pequenos por conta própria. Faço questão de liberar o código no Github, independentemente de ser realmente relevante ou se outras pessoas começarem a usá-lo. Eventualmente, as pessoas podem começar a se interessar pelo que você faz. Mesmo assim, você ganhará confiança e capacidade técnica para avançar lentamente para projetos maiores e mais populares.

4
Checksum

Quando comecei, procurei on-line por opções e provou ser difícil encontrar algo em que você possa se interessar como iniciante.

É difícil contribuir com alguns projetos, não porque sejam muito avançados, mas porque a comunidade não é acolhedora. Portanto, não desanime quando você bate em uma parede.

Durante a pesquisa, decidi montar uma lista de 10 projetos de código aberto que os iniciantes podem começar a dar suporte sem processos estressantes. Aqui está o link para usar:

Dez projetos para iniciantes apoiarem e aprenderem

Espero que você ache útil e você sempre pode adicionar mais, se achar legais!

3
Eenvincible

Eu recomendo a leitura: http://open-advice.org/ .

O objetivo é ajudar aqueles que criam e mantêm comunidades, e aqueles que não confiam em qual deles deseja ingressar ou em como fazê-lo.

Caso contrário, encontre um projeto que tenha uma missão que ressoe com você, ou bifurque-se e contribua para um que já seja útil para você.

Boa sorte.

3
user549213

Existe um novo site específico para este chamado Código 52 que incentiva novos desenvolvedores a se envolverem em código aberto iniciando um novo projeto OSS toda semana.

A idéia é que parecerá muito menos assustador para as pessoas que nunca estiveram envolvidas em código aberto antes e, com sorte, se sentirá mais inclinado a se envolver em outros projetos de OSS também.

3
Marcus Swope

Sugiro iniciar um projeto por conta própria sobre um tópico do seu interesse.

Muito pode ser aprendido trabalhando em um projeto em geral. Não é necessário ver como alguém codifica para aprender a codificar melhor. E, às vezes, você realmente vê o que não deve fazer, pois as outras pessoas geralmente não são mais experientes do que você.

Geralmente, ajuda a ver o código de outras pessoas, mas você encontrará o código de outras pessoas em seu próprio projeto apenas através das bibliotecas e componentes que você usa.

A experiência ensinará o que é boas e más práticas.

2
Brian R. Bondy

Sou o proprietário do projeto no código do google e estou procurando colaboradores. (No entanto, não utilizarei esta resposta incorretamente para publicidade.) Portanto, minha opinião pode ser interessante para você.

Você primeiro terá que descobrir em que você está interessado. Em seguida, desenvolva algum conhecimento em alguns campos relacionados aos interesses seus. Em seguida, encontre um projeto em que sua experiência seja exigida e necessária.

Quanto menor o projeto, menos contribuintes já existem, maiores as chances de os contribuidores serem procurados e você pode entrar em contato diretamente com os autores/proprietários do projeto. Diga-lhes a) qual é o seu conhecimento b) onde você vê que ele pode ser aplicado no projeto c) o que você acha que pode conseguir.

Lembre-se: apenas conhecer uma ou duas linguagens de programação convencionais é não experiência.

2
Ingo