Я работаю над очень крупным исследовательским проектом с открытым исходным кодом, с кучей других постоянных участников. Поскольку проект в настоящее время довольно большой, консорциум (состоящий из двух штатных сотрудников и нескольких членов) отвечает за поддержку проекта, непрерывную интеграцию (CI) и т. Д. У них просто нет времени на интеграцию внешних вклады хотя.
Проект состоит из «базовой» структуры, примерно полмиллиона строк кода, набора «плагинов», поддерживаемых консорциумом, и нескольких внешних плагинов, большинство из которых мы не делаем. даже не подозреваю.
В настоящее время наш CI создает ядро и поддерживаемые плагины.
Одна из больших проблем, с которыми мы сталкиваемся, заключается в том, что большинство участников (и особенно случайных) не создают 90% поддерживаемых плагинов, поэтому, когда они предлагают рефакторинг изменений в ядре (что в наши дни происходит довольно регулярно), они проверили, что код компилируется на их машине, перед тем как сделать запрос на GitHub.
Код работает, они довольны, и CI завершает сборку, и начинаются проблемы: компиляция не удалась в поддерживаемом консорциумом плагине, который участник не собрал на своей машине.
Этот плагин может зависеть от сторонних библиотек, таких как CUDA, например, и пользователь не хочет, не знает, как или просто не может по аппаратным причинам скомпилировать этот сломанный плагин.
Итак - либо PR остается объявление Aeternam в чистилище никогда-быть-сливались ОР - Или вкладчик отбирает переименованные переменный в источнике разбитого плагина, изменяет код, наталкивает на его / ее филиал, ждем CI для завершения компиляции обычно получает больше ошибок и повторяет процесс до тех пор, пока CI не будет доволен - или один из двух уже перебронированных перманентов в консорциуме протягивает руку и пытается исправить PR на своей машине.
Ни один из этих вариантов не является жизнеспособным, но мы просто не знаем, как сделать это по-другому. Вы когда-нибудь сталкивались с подобной ситуацией ваших проектов? И если да, то как вы справились с этой проблемой? Есть ли решение, которое я не вижу здесь?