Se você está fazendo transição de carreira ou acabou de se formar, provavelmente, já procurou por aquela mística da primeira oportunidade. Mas tem algo que praticamente 99,9% das vagas pedem: experiência.
Uma solução que você já deve ter ouvido pelo menos algumas vezes é: colabore com Open Source!
Simples. Você começa a pesquisar e as dúvidas começam a surgir:
Como eu escolho um projeto? O que é uma issue? Quem está começando pode contribuir? E se eu errar? Alguém vai me ajudar ou me responder? Afinal, o que é open source? Entre inúmeras outras perguntas…
E, de fato, talvez não seja tão simples assim. Mas estou aqui para tornar esse aprendizado um pouco mais fácil. Vamos lá?
Quem eu sou
Eu sou uma desenvolvedora júnior. Quando comecei a contribuir, eu não tinha experiência. Acredito que justamente por isso a minha perspectiva pode ser útil para outras pessoas que também estão começando ou mudando de área. Vale destacar que este texto é uma adaptação de um artigo que eu escrevi em inglês.
O que é Open Source?
De maneira simplificada: projetos Open Source são projetos de código aberto, que você pode estudar, modificar e distribuir. Esses projetos são compartilhados por meio de serviços como GitHub, GitLab ou Bitbucket.
O objetivo deste artigo é dar uma ideia de por onde começar a contribuir, então não vamos entrar na definição e história do open source (isso dá uma tese por si só). Se você quer saber mais sobre open source, dois bons lugares para começar são:
Antes de mais nada
Sim, dá para contribuir sem ter experiência na área e é uma ótima maneira de aprender. Porém, esses são projetos reais, e nós estamos aqui para ajudar, e não o contrário.
Antes de começar, é preciso ter um pouco de familiaridade com:
- Git: se você não sabe nada sobre git, eu recomendo começar por aqui. Você não vai precisar de nada muito avançado, o básico já resolve. Para começar:
- GitHub: você pode usar o serviço que preferir, mas o GitHub é o mais popular. Você pode achar a interface deles confusa, mas se acostumar é só uma questão de tempo. Para começar:
E mais duas sugestões para ganhar familiaridade com Git e GitHub:
- Se você tiver alguma amigue que possa fazer os code reviews do seu projeto, combine com ela e tente seguir o fluxo de um projeto real.
- Mesmo fazendo um projeto sozinhe, simule o fluxo de um projeto normal: crie um branch, faça um PR e faça o merge.
Importante: você não precisa ser uma pessoa desenvolvedora. É possível contribuir escrevendo documentação ou, talvez, com design etc. Precisamos considerar sempre que diferentes projetos têm necessidades diferentes.
Procurando por um projeto
Agora que você está pronte para ajudar, vem o próximo passo: encontrar um projeto! Como eu acho um?
Existem alguns recursos que podem ajudar. Mas não tem jeito, é trabalho braçal. Então, pense com o que quer trabalhar (linguagem, tecnologia, framework etc.) e você pode pesquisar usando algum desses links:
- GitHub First Contributions [EN]
- Code Triage [EN]
- Up for Grabs [EN]
- Good First Issues [EN]
- Good First Issue [EN]
Um pouco mais sobre como escolher o seu projeto: Picking the right repo(s) [EN]
Escolhendo o projeto
O que eu fiz: decidi passar uma semana só pesquisando. No fim dessa semana, eu escolheria três projetos. Para procurar por projetos, usei CodeTriage e Ruby for good.
Os três projetos escolhidos foram: Rubocop, CASA e openfoodnetwork.
E por que eles?
Rubocop é uma biblioteca de Ruby. Eu queria que um dos projetos escolhidos fosse um maior, queria ver como é o código de um projeto assim. Porém, era mais realista escolher projetos menores e menos complexos para esse começo.
Então como e por que eu escolhi os outros dois?
Primeiro porque eu gostei do objetivo dos projetos. Depois, eu me perguntei o seguinte:
- Eles têm issues que eu seria capaz de resolver?
- Eles têm muitas issues paradas – stale issues?
- O repositório é ativo?
- Eles têm comunidade no Slack ou Discord?
- Essa comunidade é ativa?
- Eles são receptivos a iniciantes?
- Eles têm uma documentação bem organizada e completa?
Então, essa é a minha sugestão: defina um tempo para passar procurando, escolha no máximo três e desses que você selecionou, inicialmente, escolha um. Se eles têm uma comunidade, junte-se a ela e se apresente.
Você achou o seu projeto, e agora?
Leve o tempo que for necessário lendo o README do projeto, ele costuma ser detalhado e explica como contribuir, como instalar etc. Siga as instruções e instale o projeto no seu ambiente local.
Depois que você instalou tudo, escolha uma issue e tente resolvê-la. Novamente, é trabalho braçal. Você vai precisar abrir e ler as issues até achar uma que faça sentido para você. Faça perguntas como:
- Alguém já está trabalhando nisso?
- Essa issue já foi resolvida?
- Eu entendo qual é o problema?
- Consigo resolver isso?
Se tiver dúvidas, deixe um comentário na issue. Em projetos colaborativos, é importante sempre se comunicar em público. Mesmo que você não trabalhe nela, sua pergunta pode ajudar outras pessoas colaboradoras.
Depois que você escolheu uma issue, cheque se o seu main branch está atualizado e faça um novo branch. Dê um nome que seja fácil de identificar. (Eu gosto de nomear com o número da issue e um nome bem descritivo, assim eu só preciso digitar o número e clicar o tab para ele autocompletar ― eu uso o terminal).
Agora que você tem o seu branch, já pode trabalhar, fazer testes, push, perguntar mais etc. Enquanto trabalha na sua feature, bug, chore, não esqueça de manter o seu branch atualizado em relação a main.
Quando terminar, é hora de fazer o seu PR (pull request): forneça uma descrição detalhada, elencando quais são as mudanças e, principalmente, o porquê delas. Imagens e vídeos curtos são bem-vindos. Quando terminar, publique e espere que alguém revise.
As pessoas mantenedoras do projeto, provavelmente, vão dar algumas sugestões, perguntar e pedir mudanças. Aproveite essa oportunidade de aprendizado, faça perguntas e atualize o seu código de acordo.
Se tudo der certo, o seu PR vai ser aprovado e merged. Quando isso acontecer: comemore! Você terminou o seu primeiro PR com sucesso! É um passo enorme!
Cri… cri… cri…
Às vezes, as pessoas mantenedoras não vão nem olhar o seu PR. O que é obviamente frustrante. Tenha em mente que todas as pessoas têm seus próprios problemas e prioridades. E lembre-se sempre: você está aqui para ajudar.
Hacktoberfest e programas de estágio
Depois que você deu seus primeiros passinhos no mundo do open source e decidiu que esse pode ser um caminho para você, comemore participando da Hacktoberfest! A Hacktoberfesté um evento anual, global (portanto, em inglês), e a ideia é contribuir com quatro PRs no mês de outubro.
Também vale a pena checar alguns programas de “estágio” em open source, como: Outreachy, Google Summer of Code e MLH Fellowship.
Esses programas são em inglês, aceitam tanto alunes universitários quanto pessoas em transição de carreira, são completamente remotos e fornecem uma pequena bolsa.
E se eu errar?
Honestamente? Você vai errar. Várias vezes. E está tudo bem. Você está aprendendo. Ninguém espera que você seja perfeite. Você tenta coisas novas, faz perguntas, erra, conserta e bola para frente. Não se preocupe, o repositório não vai explodir.
Beleza, e o inglês?
Não saber nada de inglês é um desafio. Mesmo projetos brasileiros costumam ser em inglês. Mas você não precisa ser fluente. A maior parte do tempo a sua comunicação com as pessoas mantenedoras e colaboradoras vai ser assíncrona e por texto.
Significa que você pode levar o tempo que precisar lendo e escrevendo, colocando texto no Google Translate, perguntando paro Chat GPT etc.
Além de ganhar experiência como pessoa desenvolvedora, ajudar com um projeto legal, ainda é uma ótima oportunidade de treinar seu inglês.
Para finalizar
Contribuir com open source é um pouco assustador, dá trabalho e não é fácil. Mas dividindo tudo em tarefas menores, levando o tempo que você precisar e sendo gentil consigo mesme, você consegue ir longe.
Terminar o seu primeiro PR e ver o seu trabalho fazendo parte de um projeto, mesmo que tenha sido uma coisa super pequena e simples, é muito legal! Saber que você está ajudando um projeto que você gosta, é super recompensador.
Força! Você consegue!
Se quiser saber mais:
- Esse guia é maravilhoso: Como Contribuir para o Open Source [PT]
- Um podcast: Ruby for All | How to Open Source with Richard Schneeman [EN]
Ficou com alguma dúvida? Compartilhe nos comentários!
Artigo escrito por Manu V., da Comunidade PrograMaria.
______________________________________________________________________________________
Glossário
- Git
- Open Source Software (OSS)
- Framework
- README
- Pair programming
- Issue
Eles são simples de criar e flexíveis para se adequar a uma variedade de cenários. Você pode usá-los para acompanhar o trabalho, dar ou receber feedback, colaborar com ideias ou tarefas e se comunicar eficientemente com outras pessoas.
- Branch
- Stale Issue/Branch etc
- Pull Request
- Review
- Merge
O Git merge vai combinar várias sequências de commits em um histórico unificado. Nos casos de uso mais frequentes, o git merge é utilizado para combinar dois branches.