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.
Respostas:
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:
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.
fonte
Aqui o que eu sugiro fazer para encontrar a combinação perfeita:
Se você tem um projeto de código aberto que já utiliza, conhece e se preocupa, deve ser o seu primeiro candidato a tentar. Caso contrário, pense no que você gostaria de fazer em geral e procure um projeto nessa área.
Quando você encontrar um projeto em potencial, não se apresse. 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 na área em que está interessado.
Antes de começar a investir muito tempo no projeto e aprender seus 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 ficar por aqui, 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 se junta a uma equipe errada. Essa experiência pode potencialmente 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 começar pelas funções de suporte, como testes, 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 você 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 só lugar, siga em frente; não desista.
Espero que ajude.
fonte
Eu recomendo fortemente que você encontre um projeto de código aberto que tenha seu interesse sincero e que use ativamente .
O motivo é simples: faz a diferença entre uma tarefa e um hobby.
Dê uma olhada no seu computador. Qual 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 há algo minúsculo que você gostaria de mudar se pudesse?
Se houver, agora é a hora de fazer algo a respeito.
fonte
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 parecer trivial para você, mesmo que simplificado demais. 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; tenho certeza de que ninguém os desejaria além de mim, e provavelmente seria forçado a passar por uma avaliação psiquiátrica se algum outro hacker competente do kernel os visse. Mas ainda gosto de minha implementação,
piglatin_printk()
que começou como uma piada 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 Ohloh para encontrar o software que você possa estar interessado em usar 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 encontrando bugs interessantes e corrigindo-os, já que precisaríamos fazer isso de qualquer maneira. Eles também não se importam com os funcionários que participam de coisas como RFCs e especificações de rascunho, já que usaremos o resultado.
fonte
O OpenHatch foi criado especificamente para isso.
Citar:
Você pode procurar projetos por tipo, tecnologia, nível de habilidade necessário etc. e encontrar o que corresponde ao seu nível.
fonte
Uma coisa que notei repetidamente quando se trata de pessoas que desejam iniciar o desenvolvimento de código aberto é que ficam impressionadas com a complexidade e magnitude dos 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 poderia gostar, 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 apenas 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.
fonte
Existe um novo site específico para este código chamado 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, também se sentirá mais inclinado a se envolver em outros projetos de OSS.
fonte
Eu recomendo a leitura: http://open-advice.org/ .
O objetivo é ajudar aqueles que criam e mantêm comunidades, e aqueles que não estão confiantes sobre qual deles deseja ingressar ou como fazê-lo.
Caso contrário, encontre um projeto que tenha uma missão que ressoe com você, ou garfo e contribua para um que já seja útil para você.
Boa sorte.
fonte
Quando comecei, pesquisei opções on-line e provou ser difícil encontrar algo em que você possa se interessar como iniciante.
É difícil contribuir para 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 apoiar sem processos estressantes. Aqui está o link para usar:
Dez projetos para iniciantes para apoiar e aprender com
Espero que você ache útil e você sempre pode adicionar mais, se achar legais!
fonte
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.
fonte
Sou o proprietário do projeto no código do google e estou procurando colaboradores. (No entanto, não utilizarei mal esta resposta para publicidade.) Portanto, minha opinião pode ser interessante para você.
Primeiro você terá que descobrir em que está interessado. Em seguida, desenvolva algum conhecimento em alguns campos relacionados aos seus interesses. 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 é perícia.
fonte