Recentemente, tenho tentado entrar em colaboração de código aberto no GitHub e me deparei com uma situação na qual estou curioso para saber qual é a maneira preferida de proceder.
Há cerca de um mês, encontrei um projeto no GitHub para uma biblioteca que já usava há algum tempo e na qual encontrei (e consertei) alguns bugs.
Como uma incursão inicial na colaboração do GitHub, encontrei o repositório que parecia ter o maior volume de atividades recentes, corrigi um bug, adicionei testes de unidade, subi ao GitHub e fiz uma solicitação de recebimento. Dentro de algumas horas, o mantenedor do repositório que eu peguei havia aceitado o PR e fundido em alguns outros PRs de outras pessoas que estavam esperando também.
Impulsionado por isso, corrigi mais três erros que encontrei, cada um em uma ramificação separada de meu próprio repositório, e arquivei um problema e solicitei cada um separadamente.
Isso foi há pouco mais de um mês, e os pedidos de recebimento estão intactos desde então. O usuário cujo repo bifurquei não parece muito ativo, tendo apenas 7 contribuições totais no GitHub no ano passado, e esse repo não teve nenhum commit desde a primeira solicitação pull que fiz.
Então, minha pergunta:
Como se proceder nessa situação? Idealmente, eu gostaria de evitar a fragmentação da biblioteca, realizando várias alterações em meu próprio repositório que não são mescladas no repositório pai. No entanto, gostaria de continuar fazendo correções de bugs e adicionando recursos, mas se mesclar tudo no meu ramo principal e basear todas as novas correções nesse ramo, se o mantenedor do repo que formei voltar, ganhei não é possível dividir todas as alterações em solicitações pull separadas para cada recurso / correção de bug (eu li que solicitações pull geralmente devem ser uma solicitação pull por recurso ou correção de bug).
Devo manter um ramo que esteja de acordo com o repositório original, basear todos os meus novos ramos fora desse e manter todos os commits mesclados em meu ramo mestre? Parece que isso me deixaria com uma tonelada de galhos e uma tarefa cada vez mais onerosa toda vez que eu precisar mesclar novas mudanças no meu ramo principal.
Qual é o modo típico de abordar uma situação como essa? Parece ser bastante comum que um projeto seja abandonado com os colaboradores originais que não estão por perto para revisar novas solicitações de recebimento. É uma situação em que alguém deveria simplesmente assumir o comando e correr com ele? Parece que isso criaria fragmentação se os colaboradores originais voltarem e quiserem trabalhar no projeto novamente.