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

[Dúvida] Como começar a contribuir com Open-Source sendo iniciante?

Acho que todo mundo quando avança um pouco na programação e começa a desenvolver pequenos projetos e procurar as primeira vagas de emprege,toma um choque de realidade com o quão difícil isso pode,então na esperança de facilitar esse processo começa a pesquisar formas de evoluir mais rápido e conseguir o tão sonhado primeiro emprego(experência própria).

Nesse momento aparecem vários vídeos falando sobre aprender linguagens e frameworks mais utilizados,focar na base,constreuir um portfólio e também CONTRIBUIR PARA PROJEOTS OPEN-SOURCE.

Por isso deixo minha pergunta onde encontrar projetos onde pesoas não tão avançadas podem contruibuir.

Carregando publicação patrocinada...
3

Teve uma publicação recente sobre esse assunto: Como encontrar "good-first-issue" no mundo open source. Criei um comentário lá com minha experiência, mas tem comentários de outras pessoas também.

E talvez você não precise contribuir com projetos de código aberto. É difícil contribuir quando você está muito no início, já que sabe pouca coisa, e muito provavelmente não sabe o que não sabe.

A propósito, acho que existem outros pontos que você pode dar atenção.

4

Caramba, antes de eu abrir o projeto eu fui pegar esse link do post mas quando fui ler os comentarios ja esta aqui. hahaha.

Inicio

Ja faz 25 dias desde aquele post e ja começei a contribuir em um projeto, eu até pensei em fazer um post no tabnews aqui mas nao sei se tenho tanta coisa pra contar, talvez eu faça para inspirar pessoas como o dono do post que esta na mesma situaçao que eu estava quase um mês atras, entao por enquanto vou deixar aqui a atualização da historia nesse comentario.

Escolha do projeto

Fiz algumas contribuiçoes, escolhi o projeto iMono encontrei ele aqui mesmo no tabnews alguns dias depois de fazer meu post procurando ajuda, o post erahttps://www.tabnews.com.br/FabioAugustoRodrigues/php-imono-framework-mvc

Encontrando os primeiros issues

Imediatamente eu ja abri, vi que era algo pequeno entao me senti animado ja que eu nao demoraria dias para entender uma parte x.

Entao olhando eu ja senti falta de um monte de coisas, por exemplo as views, vi que eram simplesmente arquivos .html com um javascript pedindo dados de alguma rota /api então ja fiz um issue falando sobre Templates, é o unico issue do projeto que ainda esta parado por enquanto, ja que estou mexendo em outra parte por agora.

Depois vi que nao havia nenhum sistema de cache, entao fiz a mesma coisa abri um issue, futuramente implementei cache em memoria com a contribuição do dono do repo, como voce pode ver mais abaixo no issue e deixamos o framework recepitivel pra cache em algo como redis por exemplo.

Depois reparei que o framework se conectava apenas com mysql, tinha uma linha hardcoded no arquivo de conexao com banco de dados que impedia que qualquer outro fosse conectado, fiz o mesmo, abri um issue. Esse especificamente foi so um issue, nao criei nenhum codigo pra resolver isso, mas eu deveria.

Depois ja achei estranho o jeito que o framework usava rotas, ja que eram gerenciadas pelo servidor em um arquivo .htacess e so aceitava uma rotas de prefixo /framework por exemplo se voce criasse uma rota /perfil a rota de acesso seria /framework/perfil, era apenas uma linha entao foi meu primeiro pull request

Mas o sistema de rotas ainda me estranhava bastante por 2 motivos.

Nao existiam rotas para frontend, qualquer rota get simplesmente era uma procura de arquivo .html na pasta /views, como por exemplo pra acessar a view index.html voce literalmente escrevia /index.html, e como eu gostaria de adicionar templates eu precisava que houvesse uma camada antes e nao algo tao direto.

E o segundo motivo, as rotas de api, as rotas post, eram criadas diretamente no codigo de uma classe, no construtor da classe voce setava, literalmente voce escreva o path da rota dentro do construtor, algo proximo disso:

public function constructor()
{
    $this->addRoute('/api/profile', 'app\controllers\http\ProfileController', 'index');
}

Nisso ja vi varias atualizaçoes como:

  • Desacoplar isso do construtor.
  • Transformar tudo em metodo estatico ja que nao era necessario aquilo virar um objeto.
  • Trocar o uso de caminho do controller pra algo mais como ProfileController::class
  • Inverter o diretorio das pastas pois controller\http parece estranho de usar.

As 3 primeiras da listas ja foram feitas nesse pull request, infelizmente por um problema de configuraçao no git meu github ficou cinza por 3 dias enquanto eu contribuia e minhas atualizaçoes nesse pr nao estavam linkadas ao meu perfil e sim a um usuario "user" haha.

Conclusão

Nesse momento ja estou atualizando o sistema de rotas que acabamos de fazer, para agora usar arrays ao inves de uma string direta com todo o caminho da rota nesse pull request

E parece ter bastante coisa pra fazer, pelo visto pelo menos 28/29 dias de fevereiro vao ficar verdinhos ja que um bug impediu de eu ter os 29 haha, deixa pro proximo mês.

Por sinal se voce entender sobre php poderia nos ajudar a implementar o sistema de template, estou muito empenhado nisso.

Obrigado pela leitura, qualquer dica a mais ou qualquer outra coisa sinta-se a vontade para comentar.