Niedawno próbowałem nawiązać współpracę z oprogramowaniem typu open source w GitHub i natknąłem się na sytuację, w której jestem ciekawy, jaki jest preferowany sposób postępowania.
Mniej więcej miesiąc temu znalazłem projekt na GitHub dla biblioteki, z której korzystałem już od jakiegoś czasu, w której znalazłem (i naprawiłem) kilka błędów.
Jako wstępną próbę współpracy z GitHub znalazłem repozytorium, które wydawało się mieć najwyższy wolumen ostatniej aktywności, naprawiłem jeden błąd, dodałem testy jednostkowe, wysłałem do GitHub i wysłałem żądanie ściągnięcia. W ciągu kilku godzin opiekun repozytorium, który rozwiesiłem, zaakceptował PR i połączył kilka innych PR od innych osób, które również czekały.
Zainspirowany tym, naprawiłem trzy kolejne znalezione przeze mnie błędy, każdy w osobnej gałęzi mojego repozytorium, i zgłosiłem problem i ściągałem osobno dla każdego z nich.
To było nieco ponad miesiąc temu i od tamtej pory prośby o przyciągnięcie są nietknięte. Użytkownik, którego repo, które przygotowałem, nie wydaje się być bardzo aktywny, ponieważ w ubiegłym roku wniósł tylko 7 całkowitych wkładów do GitHub, i to repo nie miało żadnych zatwierdzeń od czasu pierwszej prośby ściągnięcia.
Więc moje pytanie:
Jak postępować w tej sytuacji? Idealnie, chciałbym uniknąć tworzenia fragmentacji biblioteki, odchodząc i wprowadzając całą masę zmian w moim własnym repozytorium, które nie są scalone w repozytorium nadrzędnym. Niemniej jednak chciałbym nadal wprowadzać poprawki błędów i dodawać funkcje, ale jeśli scalę wszystko z moją gałęzią master i opręę wszystkie nowe poprawki z tej gałęzi, to jeśli opiekun repo, który rozwinęłem, kiedykolwiek powróci, wygrałem nie będę w stanie podzielić wszystkich zmian na osobne żądania ściągania dla każdej funkcji / poprawki błędu (przeczytałem, że żądania ściągania powinny ogólnie obejmować jedno żądanie ściągnięcia na funkcję lub poprawkę błędu).
Czy powinienem zachować gałąź, która jest w zgodzie z pierwotnym repo, oprzeć wszystkie moje nowe gałęzie od tej, a następnie zachować scalanie wszystkich zatwierdzeń w gałęzi master? Wygląda na to, że zostawiłoby mi to całą masę oddziałów i coraz bardziej uciążliwe zadanie za każdym razem, gdy potrzebuję scalić nowe zmiany w mojej głównej gałęzi.
Jaki jest typowy sposób podejścia do takiej sytuacji? Wydaje się dość powszechne, że projekt zostanie po prostu porzucony, a pierwotni współautorzy nie będą w pobliżu, aby przejrzeć nowe żądania ściągania. Czy jest to sytuacja, w której ktoś powinien po prostu wziąć ster i biegać z nim? Wygląda na to, że spowodowałoby to fragmentację, gdyby pierwotni autorzy wrócili i chcieli ponownie pracować nad projektem.