Recentemente ho cercato di entrare nella collaborazione open source in GitHub e mi sono imbattuto in una situazione per la quale sono curioso quale sia il modo preferito di procedere.
Circa un mese fa, ho trovato un progetto su GitHub per una libreria che stavo già usando da un po 'e in cui avevo trovato (e corretto) alcuni bug.
Come prima incursione nella collaborazione con GitHub, ho trovato il repository che sembrava avere il più alto volume di attività recenti, risolto un bug, aggiunto test di unità, inviato a GitHub e fatto una richiesta di pull. Nel giro di poche ore, il manutentore del repository che avevo biforcato aveva accettato il PR e si era fuso in altri PR di altre persone che lo stavano aspettando.
Spronato da questo, ho corretto altri tre bug che avevo trovato, ciascuno in un ramo separato del mio repository, e ho archiviato un problema e richiesto una richiesta per ognuno separatamente.
Questo accadeva poco più di un mese fa e da allora le richieste di tiro erano rimaste intatte, intatte. L'utente il cui repository che avevo biforcato non sembra essere molto attivo, avendo realizzato solo 7 contributi totali su GitHub nell'ultimo anno, e che il repository non ha avuto alcun commit da quella prima richiesta di pull che ho fatto.
Quindi la mia domanda:
Come si procede in questa situazione? Idealmente, vorrei evitare di creare la frammentazione della libreria andando fuori e facendo un sacco di cambiamenti nel mio repository che non sono uniti nel repository padre. Tuttavia, mi piacerebbe continuare a fare correzioni di bug e aggiungere funzionalità, ma se unisco tutto nel mio ramo master e base tutte le nuove correzioni da quel ramo, allora se il manutentore del repository che ho biforcuto mai torna, ho vinto essere in grado di suddividere tutte le modifiche in richieste di pull separate per ogni funzionalità / correzione di errori (ho letto che le richieste di pull dovrebbero essere generalmente una richiesta pull per funzionalità o correzione di errori).
Devo mantenere un ramo che è al passo con il repository originale, basare tutti i miei nuovi rami su di esso, e quindi mantenere tutti i commit uniti nel mio ramo principale? Sembra che questo mi lascerebbe con un sacco di rami e un compito sempre più gravoso ogni volta che ho bisogno di unire nuove modifiche al mio ramo principale.
Qual è il modo tipico in cui ci si avvicina a una situazione come questa? Sembra essere abbastanza comune che un progetto venga semplicemente abbandonato con i contributori originali che non sono presenti per esaminare le nuove richieste di pull. È una situazione in cui qualcuno dovrebbe prendere il timone e correre con esso? Sembra che creerebbe la frammentazione se i contributori originali torneranno e vorranno lavorare di nuovo al progetto.