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 solicitação de recurso Angular sobre uma API de formulário para entender melhor como as formas angulares funcionam, o gerenciamento do tamanho do pacote, etc.
Um projeto de código aberto é como um projeto em qualquer empresa em que você possa trabalhar; haverá um estilo de codificação de casa, cultura de equipe e fluxos de trabalho para fazer as coisas. A diferença é que os projetos de código aberto podem e terão um grupo muito diferente de pessoas trabalhando neles.
Encontrar projetos para trabalhar
Uma maneira de encontrar projetos para trabalhar é procurar software de código aberto que você usa com frequência e gosto. Existe uma ferramenta, pacote, estrutura ou uma linguagem com a qual você trabalha regularmente e gosta de usar? Descubra se é um projeto de código aberto verificando sua licença e se aceita contribuições e está ativo. Trabalhar em coisas que você já usa lhe dá uma vantagem ao contribuir, porque você já está bastante familiarizado com como funciona e tem experiência em usá-lo. Como bônus, você pode resolver problemas que têm incomodado você ou sugerir recursos que você deseja no software. Se você vai contribuir com o código para o projeto, certifique-se de que você pode trabalhar na linguagem em que está escrito.
Se a abordagem acima pode não funcionar para você, tente usar a página de explorar o Github para encontrar projetos que estejam aceitando contribuições ou queiram ativamente ajuda. O Github sugere projetos que você pode gostar com base em pessoas e repositórios que você segue, estrela e assista. Outra maneira de encontrar projetos é usar a ferramenta de pesquisa do Github inserindo tags de contribuição amigáveis para iniciantes, como boa primeira edição, bom primeiro-bug, iniciante, fácil, baixo-hanging-fruit, first-timers-only, etc. Filtrar os resultados da pesquisa para retornar problemas em estados abertos e nos idiomas em que você gostaria de trabalhar. Existem toneladas de outras ferramentas, plataformas e programas onde você pode encontrar projetos de código aberto que eu vou listar no final deste artigo para ajudá-lo com sua pesquisa.
Para ter uma experiência de contribuição positiva, tente evitar comunidades hostis aos iniciantes e geralmente problemáticas. Se, por exemplo, ao tentar fazer perguntas legítimas depois de fazer sua pesquisa, você recebe comentários ou insultos depreciativos e combativos, é melhor ficar longe. Outro sinal a ser observado é um padrão de comportamento não profissional dentro de uma comunidade. Alguns projetos de software de código aberto têm sido infames para este tipo de coisa. Então faça sua pesquisa antes de contribuir.
Escolher questões para trabalhar e fazer contribuições
Os projetos podem listar o trabalho que precisa ser feito em tarefas, bugs e rastreadores de problemas. Por exemplo, a Angular usa o recurso de gerenciamento de projetos do Github para delinear e atribuir tarefas e acompanhar seu progresso. Se um projeto tem um, tenha acesso a ele.
Como regra geral, comece com as contribuições mais fáceis e menores primeiro que tomam o menor número de trabalho para aumentar sua confiança e credibilidade antes de tentar contribuições mais difíceis. Escrever documentação e corrigir erros de digitação é um bom lugar para começar. Procure por problemas marcados para iniciantes com as tags mencionadas anteriormente.
Depois de escolher uma tarefa que você acha que pode terminar, faça sua pesquisa. Leia documentação, código e discussões relacionadas à tarefa para entender melhor o que fazer. Se você está preso em algo mesmo depois de pesquisado, entre em contato com a comunidade e peça ajuda, esclarecimento ou mentoria. No entanto, certifique-se de discutir questões relacionadas à tarefa publicamente para que o resto da comunidade possa se beneficiar do que você aprende. Por exemplo, discuta um assunto publicamente no Github versus em uma mensagem direta privada no Slack. Uma vez que você sente que tem contexto suficiente em uma tarefa e sabe como fazer isso, escreva algum código e envie um RP. O Github tem uma ótima lista de verificação sobre o que verificar antes de contribuir para um projeto para que seu esforço não seja desperdiçado.
Enviando seu trabalho
Depois de concluir o trabalho sobre sua contribuição, envie-a de acordo com as diretrizes de contribuição. Às vezes, sua submissão pode não receber uma resposta mesmo depois de uma quantidade razoável de tempo ter passado. Nesses casos, solicite respeitosamente uma revisão ou entre em contato com outros contribuintes para assistência. Alterações pós-revisão podem ser solicitadas. Tente fazê-los o mais rápido possível para que sua contribuição seja integrada prontamente e não fique desatualizada ou esquecida. Se sua contribuição for rejeitada, peça feedback para entender o porquê. Quando os revisores fizerem perguntas, fizerem comentários ou derem feedback, respondam e verifiquem seu trabalho para obter atualizações regularmente. Trate isso como qualquer outro trabalho e seja profissional, cortês e respeitoso.
O que você está esperando?
A contribuição de código aberto pode ser uma experiência de aprendizado incrível. Ele permite que você devor e fazer parte de comunidades que constroem valiosos softwares de código aberto. Ele permite que você faça um software que você usa melhor. Embora possa ser difícil começar, uma vez que você pega o jeito dele, é imensamente gratificante. Você não precisa saber tudo sobre um projeto para fazer uma contribuição. Escolha um projeto e uma comunidade que apoie novos colaboradores, encontre mentores e faça suas contribuições. Você pode encontrar algumas comunidades infames. Fique longe deles, pois eles podem colocá-lo fora de código aberto inteiramente.
O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.