¿Cómo debo contribuir a un proyecto GitHub (en su mayoría) abandonado?

43

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.

JLRishe
fuente
44
Cuando encuentre esta pregunta interesante, también podría estar interesado en la propuesta de un nuevo sitio de intercambio de código fuente abierto .
Philipp
¿Te importaría compartir lo que salió de la conversación por correo electrónico solo para los curiosos? :)
winkbrace
@winkbrace Hasta ahora, nada. No he recibido una respuesta, pero solo envié el correo electrónico hace dos días. Les haré saber a todos si se desarrolla algo.
JLRishe

Respuestas:

39

Todavía no he tenido esta situación, pero eso es lo que intentaría:

Intenta contactar al propietario

Tal vez realmente perdieron interés, pero están dispuestos a transferir el proyecto a otra persona, en particular a alguien que ya ha demostrado un compromiso considerado.

Pero tal vez solo están ocupados con otra cosa (trabajo, vacaciones, enfermedad, otros proyectos) y no tuvieron tiempo para manejar su RP, pero planean hacerlo más tarde.

O tal vez realmente han dejado de trabajar en el proyecto de forma permanente por cualquier motivo.

Sin preguntar, no lo descubrirás.

Póngase en contacto con la comunidad.

Seguramente hay otras personas que han contribuido o al menos utilizado el proyecto. Verifique quién ha bifurcado el proyecto (incluso si no han realizado ningún cambio, aún podrían estar interesados ​​en ver este proyecto próspero); Compruebe quién ha informado de problemas o ha comentado sobre ellos Tal vez también haya una comunidad fuera de GitHub, por ejemplo, una lista de correo, un foro o miembros de StackOverflow.

Estoy eventualmente tomando el control del proyecto, es posible que desee su apoyo. Y necesitan saber dónde está el nuevo repositorio maestro.

Continuar haciendo buenas solicitudes de extracción

Esto muestra tanto al propietario como a la comunidad que usted lo toma en serio y les permite juzgar sus contribuciones.

oefe
fuente
1
Gracias. Después de un poco más de búsqueda, parece que este consejo es similar a las pautas disponibles para este tipo de situación con los paquetes npm . Acabo de enviar un correo electrónico al propietario y veré qué contesta.
JLRishe
Es muy difícil encontrar a alguien con la capacidad de aprobar relaciones públicas para un repositorio particular cuando el "propietario" del repositorio es en realidad una organización con docenas de usuarios.
cowlinator
15

Si el propietario del repositorio original no se encuentra en ninguna parte y está ausente durante un tiempo considerable, publicaría mi propio repositorio como una versión diferente del proyecto.

Con esto, asume el liderazgo del desarrollo de la biblioteca y no la deja morir en un rincón sin actualizarse nunca más. Si el propietario original alguna vez cierra el repositorio, el mundo aún puede usar la versión bifurcada.

cllamach
fuente
1
Sí, simplemente forkel proyecto y en el README.md, dejar una referencia y "gracias" al propietario original.
Jared Burrows
Gracias por tu respuesta (+1). Definitivamente haces algunos buenos puntos. En última instancia, puedo recurrir a esto, pero por ahora, seguiré los consejos de oefe y veré si puedo comunicarme con el propietario del repositorio por correo electrónico.
JLRishe
Por supuesto, simplemente no dejes que el repositorio caiga en el olvido. Debe ocultarse una gran cantidad de código bueno en algún lugar profundo de Github porque los propietarios originales ya no están.
cllamach
Estoy en una situación similar y es posible que deba tomar esta opción: el propietario original de un proyecto no ha respondido a los intentos repetidos de contacto. ¿Es kosher mantener el nombre del proyecto y continuar incrementando el número de versión de la última versión oficial? Me preocupa que si cambio el nombre, sea más difícil de encontrar para los usuarios existentes del proyecto.
pericynthion
1
Yo también puedo estar en esa situación. Pero el proyecto original ya está registrado en Bower. Mantener el nombre significaría tener que pedirle al autor original que lo anule el registro, o contactar a los encargados de mantenimiento de Bower y pedirles que intervengan. Sin embargo, no me importa mucho hacer esto último. Cambiar el nombre puede ser la mejor opción.
Lawrence I. Siden
0

Como la mayoría de los proyectos pequeños y medianos de código abierto y gratuito de hoy en día están alojados en github, gitlab o similar, sería posible automatizar parte del proceso , utilizando sus API web.

Suponiendo que el repositorio original esté en https://github.com/someUserX/projectY/, el proceso podría verse así:

  1. ("manual") Póngase en contacto con el autor original de diferentes maneras, al menos a través de su correo electrónico git committer y un problema (si está habilitado).

    En el caso de un permiso recibido o ninguna respuesta dentro de algunas semanas, se podría ejecutar un script que utilizaría la API web de los servidores para realizar pasos como estos:

  2. cree una nueva organización (GitHub) llamada projectY, y allí bifurque el repositorio original ->https://github.com/projectY/projectY/

  3. agregue el autor original y todos los autores de las solicitudes de extracción (ya fusionadas y aún abiertas) como administradores de la organización
  4. volver a crear todas las solicitudes de extracción (abiertas) del repositorio original en la nueva bifurcación
  5. hacer lo mismo con los problemas (abiertos)
  6. notifica a todos los administradores del nuevo repositorio
  7. cree una última solicitud de extracción para el repositorio anterior, agregando un aviso "abandonado" / "archivado" y enlace al nuevo repositorio en la parte superior del archivo README
hoijui
fuente
El problema principal que veo con este enfoque es que algunos contribuyentes "malos" pueden tener acceso de administrador, pero como explica el evangelista de Software Libre Pieter Hintjens (por ejemplo en esta charla) , los compromisos erróneos simplemente pueden revertirse y no plantean ningún hilo para un proyecto que está vivo y que podría ayudar al mal cometido a convertirse en uno bueno, con el tiempo.
hoijui