Executando verificação de segurança...
11

Como encontrar "good-first-issue" no mundo open source

Contexto

Nos ultimos 6 meses tenho focado bastante em melhorar minha base de computação, com isso, programando mais em c, lendo codigos de outros no github, vendo aulas no youtube sobre conteudos como compiladores e criando meu proprio analisador lexico, resolvendo desafios de leetcode para aprender um pouco mais sobre performance e conceitos matematicos usados para tal. Mas ao mesmo tempo nao deixei de brincar com meus scripts de python e meus sistemas de php.

Por que open source ?

Por mais que eu sinta meu conhencimento venha aumentando gradualmente, ainda me sinto em um laboratorio, tudo que faço sempre esta apenas na minha maquina, por mais que possa ter julgamento externo de amigos ou pessoas de comunidades que mostro meu codigo, sinto uma vontade de adicionar funcionalidades em projetos existentes, mesmo que sejam detalhes e corrigir bugs.

Procurando projeto

Okay, sei o que eu quero, um projeto que eu possa resolver um bug, mas nao posso simplesmente tentar resolver um grande problema de um projeto como o kernel do linux por exemplo, preciso começar pequeno, molhar os pés nas aguas dos grandes projetos que são utilizados por mais pessoas do que apenas eu, enfrentar os problemas além do codigo, como por exemplo configurar o ambiente para o projeto, fazer ele rodar, etapas que nunca passei antes a nao ser que estejamos falando sobre um twitter clone em node que instalei na minha maquina apenas para tentar rodar kkkk

Experiencias passadas

Sabendo disso, nos ultimos meses durante uma conversa em um chat de discord um desenvolvedor me sugere como primeiro projeto um projeto simplesAlgorithms and Data strucutres

Tabela de algoritimos em linhas e linguagens como colunas

Li um pouco e entendi, um amontoado de algoritimos em diversas linguagens, parece otimo pra alguem que nao esta acostumado a fazer um fork e um pull request.

E foi o que aconteceu, quebrei cabeça 30 minutos para fazer meu primeiro pull request, a modificação foi algo simples, apenas uma tradução, o objetivo do projeto é ter lingua principal o inglês e tinham uma infinidade de codigo em português, levei cerca de 15 a 20 minutos para traduzir os algoritimos de c para ingles mas ja estava pronto, mais 15 minutos para aprender a enviar um pull request de maneira correta, e pronto.

Pull request de tradução de arquivos c em português para inglês

Tambem fiz modificações no readme mas não é relevante.

Ate agora essa deve ter sido a contribuição mais importante que eu já fiz (para ter uma noção do meu desacaso sobre me desenvolver em projetos open source)

07/01/2024, 00:00

Durante a madrugada de sabado para sexta acabei gastando cerca de 3 a 4 horas procurando projetos open source para contribuir, em especial com tags "good-first-issue", não tive sucesso nas buscas, a maioria dos projetos eu não tinha a minima ideia do contexto do projeto, por exemplo, a melhor alternativa foi o projeto Files uma gerenciador de arquivos escrito em C#

Olhando a tag "good-first-issue" encontrei a seguinte visão:

31 good-firs-issue abertos

31 Good-first-issue abertos, esse é meu momento, mas então gastei minha madrugada inteira tentando fazer o visual studio buildar o projeto, e pelo meu computador ser lento por possuir apenas 4GB de memoriam RAM, esperei alguns minutos com apenas o visual studio aberto tentando buildar o projeto e nada acontecia.

18:30

Desisti, dormi e agora estou eu, 18:30 e ainda com aquela vontade de contribuir em um projeto, fiquei pensando "Com certeza tem alguma maneira de eu buildar aquele projeto sem usar o visual studio, apenas usando linha de comando", acho que eu estava certo, mas passei as minhas proximas 3 horas tentando fazer isso e então sem sucesso novamente, com isso, desisti do projeto e tive que procurar um novo.

Hoje (08/01/2024)

Não consguido encontrar um projeto com bons good-first-issue ou algo que eu ache que meu computador consiga buildar em menos de 10 minutos, no momento sei que a insegurança do fracasso da situação anterior pode estar me impedindo de prosseguir.

Falando da performance, nao considero que meu computador seja lento, por mais que nao seja um computador mediano atual, acredito que devem existir projetos que possam ser buildados sem problemas nele, o unico obstaculo são os 4GB RAM

Perdido

Dado esse contexto gorduroso anterior, me sinto perdido em relação a como me desenvolver com projetos open source, sugestão de projetos são bem vindas mas esse não é o objetivo do post.

O objetivo do post é conseguir conselhos para se desenvolver no mundo open source, sei que você ja deve estar com o comentario na ponta da lingua, mas gostaria de deixar algumas perguntas listadas aqui:

  • Como achar o primeiro projeto?

  • Como Encontrar seu primeiro issue?

  • É muita ousadia tentar contribuir em um projeto de outra linguagem por mais que sua linguagem atual seja semelhante? Por exemplo ter conhencimento de java e tentar contribuir em um projeto C#

  • Como superar a limitação do hardware com menos RAM no desenvolvimento de projetos grandes open source? Sabendo que você esta no ensino medio e provavelmente continuará com a limitaçao de hardware por pelo menos um ano.

  • O que seria o ponto chave para impedir a bomba de efeito moral ao abrir um projeto open source 10x maior do que os maiores que você ja fez sozinho

  • Algum conselho dado o contexto do post?

> Obrigado pela atenção.

Carregando publicação patrocinada...
9

Não vou responder todas suas perguntas, vou compartilhar minhas experiências e você pode entender isso como um conselho, se quiser fazer algo parecido com o que fiz. Acho que a dificuldade que você teve é normal, e você aprendeu coisas ao longo desse processo, o que já fez valer a pena.

Eu demorei alguns anos atuando profissionalmente até fazer minha primeira contribuição para um projeto de código aberto, e mesmo assim ainda não fiz nada grande. Acredito que existem três tipos de contribuições diferentes:

  1. Documentação de algo que você usa ou estava lendo: Essa é a mais simples, pode ser uma correção, adição de informação que você achou que estava faltando ou algo assim. Veja alguns exemplos de PR que eu fiz nesse sentido: express-winston, erro de digitação, Detox, correção de paths e erro de digitação e React Native, correção de links quebrados.
    Tem gente que aproveita para traduzir, mas eu não gosto muito disso porque a tradução pode ficar desatualizada e acaba dificultando ao invés de ajudar. Se não souber inglês, parece mais fácil jogar o texto num tradutor.
  2. Implementação de algo que você usa como dependência: Se você usa uma biblioteca e encontra um problema, talvez você consiga corrigir localmente. Nesse caso, pode abrir um PR com a correção. Alguns exemplos meus: electron-react-boilerplate, correção de uma variável, node-firebird, correção de tipo e react-navigation-shared-element, correção de tipo.
  3. Implementação de algo que você gosta, mas não usa como dependência: Se você viu um Pitch e gostou, vendo a possibilidade de contribuir em algo, ou usa alguma ferramenta de código aberto que sabe como melhorar algo, pode fazer uma contribuição. Um exemplo meu foi essa contribuição para o TabNews, que eu fiz como um contribuidor não-oficial.

Note que nem sempre um PR seu será aceito (exemplo), mas mesmo assim isso pode contribuir para os mantenedores arrumarem algo. Às vezes você fará contribuições que podem demorar para serem aceitas (tenho três exemplos: 28/03/2021, 21/12/2023 e 22/12/2023). Faz parte, o dono do repositório está dedicando o tempo à outras coisas.

Como disse, demorei anos para fazer algumas contribuições, e foram poucas. Faço quando encaixa na minha rotina, ou seja, já precisei resolver para mim e resolvi compartilhar a solução. O jeito que você está tentando fazer é uma busca ativa, isso eu nunca tentei e pode ser algo mais frustrante, porém mais rápido de encontrar algo para contribuir.

Quero aproveitar para falar que o TabNews tem good first issues. Fizemos a organização do repositório em Dezembro/2023 e o objetivo é ter um repositório em português que as pessoas possam contribuir pela primeira vez com algo de código aberto sem medo.

2

Obrigado Rafael! É otimo entender uma historia real ao inves de ficar apenas no mundo das ideias, e eu ate ler esse comentarion nunca tinha pensado sobre a diferença de uma busca ativa e uma busca passiva, interessante de se pensar.

O seu comentario me fez pensar em aprender novas tecnologias, apenas para experimentar, e talvez ter ideias de melhorias, por exemplo, gosto muito de php, mas nunca experimentei nenhum framework que não fosse laravel ou slim framework, tambem sempre uso as mesmas bibliotecas, voce talvez ate acidentalmente me fez entender o obvio, para saber o problema da tecnologia, preciso usa-la para entender o que poderia ser melhorado.

7

Olá Carlos,

Assim como Rafael, não responderei todas as questões, mas gostaria de compartilhar alguns pensamentos. Primeiramente, é crucial entender que o universo do open source vai muito além da programação. Por trás de cada repositório, existe uma comunidade. Embora existam projetos que são quase como 'one-man shows', a maioria tem uma rica história de colaboração entre várias pessoas, cada uma com seus próprios ismos e peculiaridades.

A abordagem que você, Carlos, adotou, de ser um "caçador de PRs" em busca de oportunidades de contribuição, pode ser eficaz, especialmente se você for habilidoso (como pode ser visto no vídeo do Akita sobre 'rinha de backend', onde ele faz PRs em várias linguagens diferentes).

Porém, frequentemente: tudo começa quando se depara com um software ou uma causa que realmente desperta seu interesse. Esse primeiro passo é fundamental, pois é o que irá impulsioná-lo a se aprofundar mais no projeto.

Conforme começa a utilizar o software, uma transformação natural acontece: de um mero usuário, você se torna um especialista. Esse conhecimento profundo que se adquire pela experiência direta com o software é inestimável. Você começa a identificar possíveis melhorias, sejam elas novas funcionalidades ou correções de bugs. E mais do que isso, você passa a ter uma visão crítica que permite até mesmo sugerir mudanças arquiteturais.

Nesse processo, a participação em comunidades, seja através de GitHub, Discord, Zulip, IRC ou listas de e-mail, se torna crucial. Ao interagir com esses grupos, você não apenas compreende melhor quem está por trás do desenvolvimento do projeto e para onde ele está se dirigindo, mas também tem a oportunidade de discutir suas ideias e sugestões. Essa interação enriquece tanto a comunidade quanto o próprio software.

Eventualmente, contribuir com código se torna uma extensão natural de sua imersão no projeto. E é nesse ponto que muitos se tornam contribuidores chave, não apenas por suas habilidades de programação, mas principalmente pelo seu conhecimento e comprometimento com o projeto.

Finalmente, se você estiver estudando, vale a pena se informar sobre o Google Summer of Code e outros projetos parecidos. É uma excelente maneira de mergulhar de cabeça no desenvolvimento de código aberto, trabalhando em projetos reais, recebendo orientação de desenvolvedores experientes e ainda ganhar uma boa grana!

Portanto, Carlos, minha sugestão é: encontre um projeto que realmente lhe interesse, não apenas para contribuir com código, mas para se envolver com a comunidade por trás dele. Isso tornará suas contribuições mais significativas e, ao mesmo tempo, enriquecerá sua experiência no mundo open source.

Um abraço e bons estudos!

2

Você e o Rafa abriram meus olhos um pouco sobre isso, essa caçada por issues para fazer um PR realmente não parece uma boa maneira de encontrar um projeto.

Obrigado por comentar sobre o Google Summer of Code, fiz uma rapida pesquisa e parece interessante, vou pesquisar mais depois sobre o assunto.

Obrigado por me tirar do modo caçador de PR e me mostrar esse lado do open source, espero encontrar bons projetos nos proximos meses, quando encontrar, farei uma postagem aqui no tabnews para contar minha experiencia.

1

Olá @oCarlos!

Tanto o @rafael quanto o @clacerda abordaram com maestria o assunto.

O processo de contrubuir é semelhante ao processo de trabalhar em uma empresa, ou seja, nos primeiros meses você precisa ler, perguntar, se envolver antes de sair codificando, sugerindo ou criticando. Salvo os casos que você é contratado para desenhar/desevolver um projeto novo.

A recomendação nas respostas acima de se envolver instalando e usando é excelente. Você precisa conhecer o mínimo. Ler a documentação, participar dos grupos também é um ótimo começo. Isso vai permitir você perceber como é o comportamento do time/mantenedor. Infelizmente, nem todos as pessoas do mundo open source são bacanas e nem todos os projetos estão abertos para receber novatos.

Quanto a linguagem leva um tempo para você virar poliglota. Minha recomendação é procurar a sua área de domínio para evitar muitas barreiras.

Por fim, não desanime, ok? É muito gratificante participar, conhecer pessoas novas, se envolver com algo que amanhã será grande e usado por todos.

Se tiver um tempo olhe esse site Guias de código aberto.