Recientemente he intentado entrar en colaboración de código abierto en GitHub y me he encontrado con una situación en la que tengo curiosidad por saber cuál es la forma preferida de proceder.
Hace aproximadamente un mes, encontré un proyecto en GitHub para una biblioteca que ya había estado usando durante un tiempo y en el que encontré (y solucioné) algunos errores.
Como una incursión inicial en la colaboración de GitHub, encontré el repositorio que parecía tener el mayor volumen de actividad reciente, arreglé un error, agregué pruebas unitarias, presioné a GitHub e hice una solicitud de extracción. En unas pocas horas, el responsable del repositorio que bifurqué había aceptado el RP y se fusionó con otros RP de otras personas que también habían estado esperando.
Impulsado por esto, arreglé tres errores más que había encontrado, cada uno en una rama separada de mi propio repositorio, y presenté un problema y una solicitud de extracción para cada uno por separado.
Eso fue hace poco más de un mes, y las solicitudes de extracción han estado allí, intactas, desde entonces. El usuario cuyo repositorio había bifurcado no parece estar muy activo, ya que solo hizo 7 contribuciones totales en GitHub en el último año, y ese repositorio no ha tenido ningún compromiso desde la primera solicitud de extracción que hice.
Entonces mi pregunta:
¿Cómo se procede en esta situación? Idealmente, me gustaría evitar crear fragmentación de la biblioteca al realizar un montón de cambios en mi propio repositorio que no se fusionan en el repositorio principal. No obstante, me gustaría continuar haciendo correcciones de errores y agregando características, pero si fusiono todo en mi rama maestra y baso todas las nuevas correcciones fuera de esa rama, entonces si el responsable del repositorio que bifurqué alguna vez vuelve, gané No puedo dividir todos los cambios en solicitudes de extracción separadas para cada función / corrección de errores (he leído que las solicitudes de extracción generalmente deben ser una solicitud de extracción por función o corrección de errores).
¿Debo mantener una rama que esté en sintonía con el repositorio original, basar todas mis nuevas ramas en esa y luego mantener todas las confirmaciones fusionadas en mi rama maestra? Parece que eso me dejaría con un montón de ramas y una tarea cada vez más pesada cada vez que necesite fusionar nuevos cambios en mi rama maestra.
¿Cuál es la forma típica en que uno abordaría una situación como esta? Parece ser bastante común que un proyecto simplemente se abandone con los colaboradores originales que no están cerca para revisar las nuevas solicitudes de extracción. ¿Es esta una situación en la que alguien debería tomar el timón y correr con él? Parece que crearía fragmentación si los contribuyentes originales vuelven y quieren trabajar en el proyecto nuevamente.