Ich arbeite an einem sehr großen, von der Forschung geleiteten Open-Source-Projekt mit einer Reihe anderer regelmäßiger Mitarbeiter. Da das Projekt jetzt ziemlich groß ist, ist ein Konsortium (bestehend aus zwei Vollzeitmitarbeitern und wenigen Mitgliedern) für die Pflege des Projekts, die kontinuierliche Integration (CI) usw. zuständig. Sie haben einfach keine Zeit für die Integration von externen Mitarbeitern Beiträge aber.
Das Projekt besteht aus einem "Kern" -Framework, etwa einer halben Million Codezeilen, einer Reihe von "Plugins", die vom Konsortium verwaltet werden, und mehreren externen Plugins, von denen die meisten nicht vorhanden sind. nicht einmal bewusst.
Derzeit erstellt unser CI den Core und die gepflegten Plugins.
Eines der großen Probleme, mit denen wir konfrontiert sind, ist, dass die meisten Mitwirkenden (und besonders die gelegentlichen) nicht 90% der gepflegten Plugins erstellen. Sie überprüften, ob der Code auf ihrem Computer kompiliert wurde, bevor sie eine Pull-Anfrage für GitHub stellten.
Der Code funktioniert, sie sind glücklich, und dann ist das CI fertig und die Probleme beginnen: Die Kompilierung ist in einem vom Konsortium gepflegten Plugin fehlgeschlagen, das der Mitwirkende nicht auf seinem Computer erstellt hat.
Dieses Plugin kann Abhängigkeiten zu Bibliotheken von Drittanbietern aufweisen, z. B. CUDA , und der Benutzer möchte nicht, weiß nicht, wie oder kann dieses defekte Plugin aus Hardwaregründen einfach nicht kompilieren.
Also dann - entweder bleibt der PR ad aeternam in der Schwebe von nie zusammengeführten PRs - oder der Mitwirkende greift nach der umbenannten Variablen in der Quelle des defekten Plugins, ändert den Code, drückt auf seinen Zweig, wartet auf Wenn das CI die Kompilierung abschließt, werden in der Regel mehr Fehler angezeigt, und der Vorgang wird wiederholt, bis CI zufrieden ist.
Keine dieser Optionen ist machbar, aber wir wissen einfach nicht, wie wir es anders machen sollen. Wurden Sie jemals mit einer ähnlichen Situation Ihrer Projekte konfrontiert? Und wenn ja, wie sind Sie mit diesem Problem umgegangen? Gibt es eine Lösung, die ich hier nicht sehe?