Como contribuir com projeto open source e apoiar a comunidade
Tags: opensource, git, github, coding
Published: 2023-08-10 13:29:31

_Navegando no Universo Open Source do GitHub, Do Fork ao Merge_

Em um mundo cada vez mais conectado e orientado pela colaboração, contribuir para projeto open source no GitHub se tornou uma maneira empolgante e acessível de participar ativamente do desenvolvimento de software. E para quem está se perguntando o que é Open Source?

Eu lhe respondo com o seguinte, os sistemas de Código Aberto(Open Source) são repositórios que fornecem acesso ao código-fonte, permitindo que membros da comunidade contribuam, mantenham, corrijam, criem variações e compartilhem, com a condição de que suas modificações também permaneçam acessíveis como código aberto.

Neste artigo eu vou trazer o básico de como colaborar com algum projeto open source, com um exemplo de um projeto que colaborei, além de após ter feito o fork do projeto sempre deixar ele atualizado para novas atualizações dá master principal do projeto em questão.

#### 1. Escolha o projeto que ira contribuir, e faça um fork dele


![fork_project](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s2hzdlxl043yk46bwybz.png)

Eu vou dar um exemplo prático de um repositório que colaborei recentemente que é um repo, onde cataloga uma, variedades de recursos do front end como uma espécie de enciclopédia, seja libs, linguagens, termos entre outros, vou deixar aqui os devidos créditos ao [Zhu Liang](https://github.com/paradite), dono do repositório e também deixo o [link](https://github.com/paradite/frontend-encyclopedia) dele, caso vocês queriam colaborar, acho super valido.

Não esquece de deixar a estrela no repositório escolhido, que isso ajuda bastante como apoio para o criador ;)

Após você escolher qual projeto open source irá colaborar, é só fazer o fork dele e você será levado para outra tela de confirmação, onde ele irá fazer uma cópia desse repositório para os seus repositórios onde você poderá agora trabalhar nele.


![create_fork](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n96w2oa6fav1qrnhwz3d.png)

#### 2. Faça um clone do projeto forkado para sua máquina


![clone](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8p3xb8h0pxrzba2xv826.png)


Após isso você verá que o repositório já aparece como um dos seus repos, no seu perfil, ele acabou de fazer uma cópia dele através do fork. Feito isso você pode escolher de qual maneira irá clonar o repositório para sua máquina e mandar ver.

Já com o projeto em sua máquina é uma boa prática você criar uma branch para trabalhar nessa nova atualização que você irá fazer, respeitando as boas práticas do GitFlow, sem sujar a main ou master principal da sua aplicação.

`git checkout -b NOME_DA_NOVA_BRANCH`


#### 3. Após finalizar suas atualizações abra um Pr para o repositório original



![open pr](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gb4qjsitul17llzc50wm.png)

Após ter finalizado tudo que você tinha que fazer, faça seu _commit_ e logo em seguida o _push_ para seu repositório forkado e logo em seguida na interface do github, você ira escolher a opção de Abrir um novo Pr.

Ao clicar sobre essa opção é muito importante você verificar qual a base está sendo comparada e de qual branch elá e, feito isto, estando tudo certo, só clicar em _Create pull request_.


![pr open](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9hh2vgiqh7ajok3nvfo.png)

O resultado ficará assim, não precisa se preocupar com os revisores, pois o dono do repositório será notificado, assim como você também consegue ver todos os prs abertos para esse repo no canto superior, como na imagem abaixo.


![prs_opens](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qge93qs9bd2okhmqr1h8.png)

#### 4. Após esperar e ter seu Pr aprovado, agora é a vez de atualizar seu fork com as atualizações da branch principal do projeto


![closed mergead pr](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1cy8xh68v2rx80ko93tu.png)

Estando tudo ok, com seu Pr, muito provável que ele seja aprovado e consequentemente mergeado como foi o meu acima.

Após isso você já consegue ver seu nome como colaborador do projeto em questão na página inicial dele, ajudando contribuir com uma comunidade maior e melhor, sempre ajudando a crescer mais ainda.


![contributors](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tyt59n7dqdevesgh1oe4.png)

Após isso é interessante você deixar seu fork atualizado, com a branch principal do repositório original.

Na sua máquina vá para a branch principal na pasta do seu repositório, seja ela a master ou a main e rode os seguintes comandos:

Se você ainda não tiver adicionado o repositório original como um remote, esse comando fará exatamente isso.

`git remote add upstream URL_DO_REPOSITÓRIO_ORIGINAL
`
Após isso, certifique de estar na sua branch principal, e use o seguinte comando para, buscar as mudanças da branch principal do repositório original.

`git fetch upstream
`
Após buscar as mudanças, você pode mesclar as alterações da branch principal do repositório original na sua branch principal usando o seguinte comando:

`git merge upstream/master
`
Se houver conflitos entre as suas alterações na branch principal e as alterações do repositório original, o Git informará. Resolva esses conflitos manualmente, faça um novo commit e continue o processo.

E por último, após mesclar as alterações do repositório original na sua branch principal local, você precisará enviar essas alterações para o seu fork no GitHub usando o seguinte comando:

`git push origin master
`
ou se a sua principal for a main é só substituir pelo nome dá master.

Agora você pode criar novas branchs, a partir da sua principal e continuar colaborando como novas features, fix entre outros para o projeto original, sempre repetindo esses mesmo passos e deixando sempre o seu fork, atualizado.

## Resumo

Bom, feito isso você já poderá se considerar como um colaborador open source, e partir para muitos outros projetos ajudando ainda mais a comunidade a crescer e se tornar melhor. Lembrem-se sistemas, open source nem sempre precisa ser códigos, assim como o exemplo que eu trouxe aqui não foi, você pode ver uma documentação que precisa ser alterada, ou um assets de melhor qualidade para aquele projeto, entre infinitas possibilidades, esteja de mente aberta e boa força de vontade para colaborar, no mais é isso, parabéns pela escolha e vamos que vamos.