Ich habe kürzlich versucht, in GitHub Open-Source-Zusammenarbeit zu starten, und bin auf eine Situation gestoßen, für die ich gespannt bin, wie ich am besten vorgehen soll.
Vor ungefähr einem Monat fand ich auf GitHub ein Projekt für eine Bibliothek, die ich bereits eine Weile benutzt hatte und in der ich einige Fehler gefunden (und behoben) hatte.
Als ersten Versuch für die Zusammenarbeit mit GitHub fand ich das Repo, das anscheinend das höchste Volumen der letzten Aktivitäten aufweist, behebte einen Fehler, fügte Unit-Tests hinzu, schob es zu GitHub hoch und stellte eine Pull-Anfrage. Innerhalb weniger Stunden hatte der Betreuer des von mir gespaltenen Repos die PR akzeptiert und einige andere PRs von anderen Personen, die ebenfalls gewartet hatten, zusammengeführt.
Aus diesem Grund habe ich drei weitere Fehler behoben, die ich gefunden hatte, und zwar jeweils in einer eigenen Filiale meines eigenen Repos. Außerdem habe ich für jeden Fehler eine Ausgabe und eine Pull-Anfrage eingereicht.
Das war vor etwas mehr als einem Monat, und die Pull-Requests sind seitdem unangetastet geblieben. Der Benutzer, dessen Repo ich gegabelt hatte, scheint nicht sehr aktiv zu sein, da er im letzten Jahr nur 7 Beiträge auf GitHub geleistet hat, und dieser Repo hat seit meiner ersten Pull-Anfrage keine Commits mehr erhalten.
Also meine Frage:
Wie geht man in dieser Situation vor? Idealerweise möchte ich vermeiden, dass die Bibliothek fragmentiert wird, indem ich eine ganze Reihe von Änderungen an meinem eigenen Repo vornehme, die nicht mit dem übergeordneten Repo zusammengeführt werden. Trotzdem würde ich gerne weiterhin Fehlerbehebungen vornehmen und Funktionen hinzufügen. Wenn ich jedoch alles in meinem Hauptzweig zusammenführe und alle neuen Korrekturen aus diesem Zweig herausarbeite, dann habe ich gewonnen, wenn der Betreuer des Repos, das ich je gabelte, zurückkommt kann nicht alle Änderungen in separate Pull-Anforderungen für jede Funktion / Fehlerbehebung aufteilen (ich habe gelesen, dass Pull-Anforderungen im Allgemeinen eine Pull-Anforderung pro Funktion oder Fehlerbehebung sein sollten).
Sollte ich einen Zweig behalten, der mit dem ursprünglichen Repository übereinstimmt, alle meine neuen Zweige von diesem Zweig trennen und dann alle Commits in meinem Hauptzweig zusammenfassen? Es sieht so aus, als würde mir jedes Mal, wenn ich neue Änderungen in meine Master-Filiale einbinden muss, eine ganze Tonne Filialen und eine zunehmend beschwerliche Aufgabe verbleiben.
Wie würde man sich einer solchen Situation normalerweise nähern? Es scheint ziemlich üblich zu sein, dass ein Projekt nur dann abgebrochen wird, wenn die ursprünglichen Mitwirkenden nicht da sind, um neue Pull-Anforderungen zu prüfen. Ist dies eine Situation, in der jemand einfach das Ruder übernehmen und damit rennen sollte? Es scheint, als würde es zu einer Fragmentierung kommen, wenn die ursprünglichen Mitwirkenden jemals zurückkehren und wieder an dem Projekt arbeiten möchten.