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.
fonte
Respostas:
Ainda não tive essa situação, mas é o que tentaria:
Tente entrar em contato com o proprietário
Talvez eles realmente tenham perdido o interesse, mas estejam dispostos a transferir o projeto para outra pessoa, em particular alguém que já demonstrou um compromisso considerável.
Mas talvez eles estejam apenas ocupados com outra coisa (trabalho, férias, doença, outros projetos) e não tenham tempo para lidar com o seu PR, mas planejam fazê-lo mais tarde.
Ou talvez eles realmente pararam de trabalhar permanentemente no projeto por qualquer motivo.
Sem perguntar, você não descobrirá.
Entre em contato com a comunidade
Certamente há outras pessoas que contribuíram ou pelo menos usaram o projeto. Verifique quem bifurcou o projeto (mesmo que não tenha feito nenhuma alteração, eles ainda podem estar interessados em ver esse projeto prosperar); verifique quem relatou problemas ou comentou sobre eles. Talvez haja também uma comunidade fora do GitHub, por exemplo, uma lista de discussão, fórum ou membros do StackOverflow.
Sou você eventualmente assume o projeto, pode querer o apoio deles. E eles precisam saber onde está o novo repositório principal.
Continue fazendo boas solicitações de recebimento
Isso mostra ao proprietário e à comunidade que você está falando sério e vamos julgar suas contribuições.
fonte
Se o proprietário do repositório original não for encontrado em nenhum lugar e ausente por um período considerável, eu publicaria meu próprio repositório como uma versão diferente do projeto.
Com isso, você assume a liderança do desenvolvimento da biblioteca e não a deixa morrer em um canto sem ser atualizada novamente. Se o proprietário original fechar o repositório, o mundo ainda poderá usar a versão bifurcada.
fonte
fork
o projeto e noREADME.md
, deixe uma referência e "obrigado" ao proprietário original.Como a maioria dos projetos gratuitos e de código aberto de pequeno a médio porte atualmente são hospedados no github, gitlab ou similar, seria possível automatizar parte do processo , usando suas APIs da Web.
Supondo que o repo original esteja em
https://github.com/someUserX/projectY/
, o processo pode ser assim:("manual") Entre em contato com o autor original de maneiras diferentes, pelo menos através do e-mail do git committer e de um problema (se ativado).
No caso de uma permissão recebida ou nenhuma resposta dentro de algumas semanas, é possível executar um script que usaria a API da Web hosters para executar etapas como estas:
crie uma nova organização (GitHub) chamada
projectY
, e bifurque o repositório original ->https://github.com/projectY/projectY/
fonte