Contribuir para o código aberto pode ser intimidante e confuso dependendo do projeto em que você está trabalhando. Para completar, a maioria dos grandes projetos de código aberto tem uma curva de aprendizado íngreme. No entanto, como evidenciado pelo quão difundido é o código aberto, há muitas oportunidades para inrro-lo e prosperar mesmo se você é novo.

O código aberto refere-se ao código-fonte que é disponibilizado ao público para visualizar, usar, modificar e distribuir sob uma licença. Geralmente é desenvolvido e mantido de forma colaborativa por uma comunidade de seus usuários. Alguns projetos de código aberto bem conhecidos incluem Django, Postgres, MongoDB, Vue, Go, Ruby, TypeScript, Git e muitos mais.

Embora o principal ponto dos projetos de código aberto seja criar softwares de código aberto valiosos e acessíveis, os contribuintes individuais podem obter muitos benefícios pessoais de contribuir para eles. Você ajuda a manter o software que você usa enquanto aprimora suas habilidades técnicas. Quando você está se candidatando a empregos, você pode apontar seu trabalho em software de código aberto como prova de suas habilidades.

Ao colaborar com outras pessoas em código aberto que você usa, você começa a se tornar parte de uma comunidade onde você pode praticar suas soft skills como comunicação, dar e receber feedback, inteligência emocional, etc. Essas comunidades também o apresentam a toneladas de pessoas com quem você pode se conectar, que por sua vez irão abri-lo para oportunidades valiosas.

Abaixo, vamos explorar algumas estratégias que você poderia usar para invadir o código aberto. Para fins de ilustração (e porque eu contribuí com alguns lá), vou usar o projeto Angular para explicar como você poderia contribuir para o software de código aberto. Embora a maioria dos exemplos seja do projeto Angular, todas essas estratégias descritas se aplicam a muitos projetos de código aberto.

 

Formas de contribuir para o código aberto

 

Há muitas maneiras de participar em código aberto. Como iniciante, você pode identificar e corrigir bugs em um projeto. Por exemplo, o projeto Angular aceita problemas apontando bugs e até mesmo solicitações que os corrijam. Nesses projetos, você pode propor, ajudar a projetar e trabalhar em novos recursos. Angular, por exemplo, aceita propostas para grandes recursos e solicita pedidos de recursos menores. Recursos maiores exigirão maior envolvimento da comunidade, e algumas comunidades exigem que você ganhe uma reputação corrigindo bugs antes de se mudar para o desenvolvimento de recursos.

Suas contribuições não devem ser exclusivas do código. Você pode ajudar um projeto fazendo comentários sobre códigos e APIs existentes para adicionar contexto e escrever documentação para o projeto. Como exemplo, a Angular tem dois projetos inteiros no Github dedicados à documentação, que você pode conferir aqui e aqui

 

Entender como um projeto funciona

 

Nem todos os projetos de código aberto operam da mesma forma. Alguns permitem contribuições de qualquer um. Alguns exigem que você trabalhe para obter privilégios de contribuição. Alguns têm várias pessoas envolvidas na gestão de um projeto. Outros têm uma única pessoa no comando, um ditador benevolente para toda a vida.

As diretrizes de contribuição ajudam você a entender como abordar sua participação em um projeto. Ele explicará como entrar em contato com uma contribuição, fornecer modelos para comunicar bugs e sugerir recursos, listar trabalhos necessários por mantenedores, metas de projeto, etc. Um exemplo incrível é o guia de contribuição Angular que lista todos os tipos de informações úteis para novos colaboradores, como suas diretrizes de mensagem de compromisso, regras de codificação, diretrizes de submissão, etc. em grande detalhe.

Além das diretrizes de contribuição, alguns projetos terão um código de conduta. Geralmente descreve regras da comunidade e expectativas de comportamento. É para ajudá-lo a saber como ser um colaborador amável e profissional e membro da comunidade. Angular, por exemplo, tem um incrível código de conduta que lista o que eles consideram conduta não profissional, suas responsabilidades com a comunidade e como entrar em contato no caso de alguém violá-la.

Grandes projetos podem ter políticas de governança e documentos de equipe que delineiam funções específicas na comunidade, equipes, subcomitês, fluxos de trabalho de contribuição, como as discussões são conduzidas e quem se compromete. Esses tipos de documentos são essenciais para entender como a comunidade opera. A página sobre angular.io, por exemplo, lista quem são todos os membros da equipe principal, seus papéis e outros colaboradores. No Github, eles também têm uma pasta de documentos contendo políticas relativas à contribuição.

Mesmo depois de passar pela documentação, você ainda pode precisar fazer perguntas aos membros ativos da comunidade. Apesar de fazer sua pesquisa, você ainda pode estar perplexo em um aspecto específico do projeto. Para interagir com outros colaboradores, junte-se a ferramentas de comunicação da comunidade como Slack, IRC etc., inscreva-se em boletins informativos e assine sua lista de discussão. A Angular usa o Gitter como sua ferramenta de comunicação comunitária e direciona os colaboradores com perguntas/problemas para o fórum, onde eles podem obter ajuda usando a tag angular Conecte-se com os membros da comunidade e desenvolva relacionamentos com eles, pois isso irá expô-lo a facetas do projeto que você pode desconhecer.

Ter uma boa compreensão dos aspectos técnicos do projeto e de como ele é organizado é essencial para fazer contribuições que atendam aos padrões do projeto. Para entender partes técnicas do projeto, consulte o projeto README, wikis, tutoriais e documentação. A Angular, por exemplo, tem documentos explicando seu processo de Github, construção e testes, seus padrões de codificação, depuração, revisões de RP,etc. Indo um passo adiante, veja as integrações de recursos passados e correções de bugs em pedidos de atração mesclados que estão cheios de discussões por outros contribuintes e podem ser uma rica fonte de contexto. À medida que o projeto evolui, preste atenção a ele, acompanhe frequentemente questões, recursos, discussões, pedidos de atração e correções de bugs para aprender continuamente como ele funciona. Por exemplo, um colaborador pode seguir este exemplo de uma discussão de s