Pracuję nad bardzo dużym projektem open source prowadzonym przez badania, z udziałem wielu innych regularnych współpracowników. Ponieważ projekt jest obecnie dość duży, konsorcjum (złożone z dwóch pełnoetatowych pracowników i kilku członków) odpowiada za utrzymanie projektu, ciągłą integrację (CI) itp. Po prostu nie mają czasu na integrację zewnętrznych wkłady.
Projekt składa się z „podstawowego” frameworka, zawierającego około pół miliona wierszy kodu, wiązki „wtyczek” utrzymywanych przez konsorcjum oraz kilku zewnętrznych wtyczek, z których większość nie jest nawet zdaje sobie z tego sprawę.
Obecnie nasz CI buduje rdzeń i utrzymywane wtyczki.
Jednym z dużych problemów, przed którymi stoimy, jest to, że większość współpracowników (a zwłaszcza okazjonalnych) nie buduje 90% utrzymywanych wtyczek, więc kiedy proponują zmiany w rdzeniu (które obecnie zdarzają się dość regularnie), sprawdzili, czy kod kompiluje się na ich komputerze przed wysłaniem żądania ściągania w GitHub.
Kod działa, są szczęśliwi, a następnie CI kończy budowanie i zaczynają się problemy: kompilacja nie powiodła się w utrzymywanej przez konsorcjum wtyczce, której współtwórca nie zbudował na swoim komputerze.
Ta wtyczka może zależeć od bibliotek stron trzecich, takich jak na przykład CUDA , a użytkownik nie chce, nie wie, jak, lub po prostu nie może z powodów sprzętowych, skompilować tej uszkodzonej wtyczki.
Tak więc - albo pobyty PR ad aeternam w otchłań nie-do-połączyły PRS - Albo specjalista greps przemianowaną zmienną w źródle łamanego plugin zmienia Kodeksu naciska na jego / jej oddziału, czeka na CI, aby zakończyć kompilację, zwykle dostaje więcej błędów i powtarza proces, dopóki CI nie będzie zadowolony - Lub jeden z dwóch już przepełnionych stałych konsorcjów podaje rękę i próbuje naprawić PR na swoim komputerze.
Żadna z tych opcji nie jest wykonalna, ale po prostu nie wiemy, jak to zrobić inaczej. Czy kiedykolwiek spotkałeś się z podobną sytuacją swoich projektów? A jeśli tak, jak poradziłeś sobie z tym problemem? Czy istnieje rozwiązanie, którego tu nie widzę?