Hey, @Erikcht !
Eu não sou tão ativo assim na comunidade open-source, mas já tive uns poucos commits aprovados, e também trabalho com código fechado no meu trabalho. Primeiramente, acho uma ótima ideia! Tanto para treinar, quanto para experiência, inclusive acho que me ajudou a ser aprovado no meu atual emprego.
Sobre por onde começar, isso é uma crítica que eu tenho em relação a maioria dos projetos (não apenas open-source). A maioria não possuí um LeiaMe explicando como compilar, testar, debugar, … o que dificulta bastante o início. Então para mim essa é sempre a parte mais complicada. Mas tendo um pouco de paciência, investigar os arquivos do topo do projeto (ex.: Makefiles, run.sh, install.sh e scripts sh no geral, …) para tentar entender o processo de compilação e instalação, e acho que, principalmente, não ter medo de errar/quebrar o sistema, você com certeza vai conseguir sair do outro lado. E uma vez conseguindo passar por isso, entender e mexer no código passa a não ser tão complicado, porque você consegue colocar debugs, mudar valores de variáveis para verificar se está funcionando, … É claro que dependendo do projeto e problema que você escolher, isso será mais simples ou mais complicado. Vide o Kernel, por exemplo, ahahahaha
Já sobre o que fazer, ai acho que não tem outra resposta além de “depende”. Nas vezes que eu contribuí, foram pequenos problemas que me afetavam e então eu decidi tentar resolvê-los. Ex.: Os ícones do Mint não escalavam corretamente, quando estavam configurados com outra cor, e ficavam meio borrados justamente no tamanho que eu gostava de usar.. Basicamente o que eu fiz foi procurar pelo projeto que fazia essa função no Github do Mint, ai descobri que era em Python, uma linguagem que eu consigo entender/escrever, rodei o Makefile até conseguir compilar/instalar (precisou instalar várias libs extras), e ai fui conseguindo corrigir o problema.
Porém, caso não tenha nada que te incomode, ou que deseja ajustar, sempre existem as listas de bugs nos projetos. No Github aparece na aba “Issues”. Ex.: Issues · linuxmint/folder-color-switcher · GitHub Ai é uma questão de você procurar por um projeto que você goste ou que use uma linguagem que você domine e um bug que não pareça tão complicado, e trabalhar nele. A minha sugestão é pegar bugs que não sejam o “core” da aplicação, e sim algum botão que tá errado, um ícone, algo mais “superficial”.
Dando uma dica, a minha última contribuição está sendo (porque ainda não foi aprovada) um ajuste em uma extensão do Mint: Add "Notifications disabled" icon clue to Inhibit Applet by BrunoNZ · Pull Request #11228 · linuxmint/cinnamon · GitHub
Elas são todas escritas em Javascript - o que pro bem ou pro mal, está em tudo que está em tudo que é lugar, incluindo projetos closed-source - e são fáceis de instalar (só duplicar o diretório da extensão, mudar o nome e infos no arquivo de definições, e mover para o diretório ${HOME}/.local/share/cinnamon/applets/
, o que vai fazer aparecer uma nova opção na lista de extensões, que você pode adicionar no seu menu e começar a trabalhar). Para testar, basta usar o atalho “Ctrl + Alt + Esc” para reiniciar o Cinnamon, e ai as modificações que você fez serão aplicadas. Então o processo de tentativa/erro fica bem rápida. Obviamente você precisará usar o Cinnamon, o que também fica como uma dica! ahahaha
Com isso você tem várias opções, como tentar melhorar/ajustar alguma extensão já existente, pode criar uma com base em algum modelo para ser adicionada em Cinnamon-Spices ou até pegar uma dessa lista de Spices para ajustar/melhorar.
A parte boa é que normalmente o código delas estão em alguns alguns poucos arquivos relativamente simples, então é mais fácil de encontrar a parte onde está o problema.