Saya sedang mengerjakan proyek open-source yang dipimpin oleh penelitian yang sangat besar, dengan sekelompok kontributor reguler lainnya. Karena proyek ini sekarang cukup besar, sebuah konsorsium (terdiri dari dua karyawan penuh waktu dan beberapa anggota) bertugas menjaga proyek, integrasi berkelanjutan (CI), dll. Mereka hanya tidak punya waktu untuk integrasi eksternal kontribusi sekalipun.
Proyek ini terdiri dari kerangka kerja "inti", dari sekitar setengah juta baris kode, sekelompok "plugin" yang dikelola oleh konsorsium, dan beberapa plugin eksternal, yang sebagian besar kami miliki bahkan tidak sadar.
Saat ini, CI kami membangun inti, dan plugin yang dikelola.
Salah satu masalah besar yang kita hadapi adalah sebagian besar kontributor (dan terutama kontributor sekali-sekali) tidak membangun 90% dari plugin yang dikelola, jadi ketika mereka mengusulkan perubahan refactor di inti (yang hari ini terjadi secara cukup teratur), mereka memeriksa kode yang dikompilasi pada mesin mereka sebelum membuat permintaan tarik pada GitHub.
Kode berfungsi, mereka senang, dan kemudian CI selesai membangun dan masalah mulai: kompilasi gagal dalam plugin yang dikelola konsorsium, bahwa kontributor tidak membangun di mesinnya.
Plugin itu mungkin memiliki ketergantungan pada pustaka pihak ketiga, seperti CUDA misalnya, dan pengguna tidak mau, tidak tahu bagaimana caranya, atau tidak bisa karena alasan perangkat keras, kompilasi plugin yang rusak itu.
Jadi - baik PR tetap aeternam iklan di limbo tidak pernah-to-be-digabung PR - Atau kontributor greps variabel yang diganti nama di sumber plugin rusak, perubahan kode, dorongan pada nya / cabang nya, menunggu CI untuk menyelesaikan kompilasi, biasanya mendapat lebih banyak kesalahan, dan mengulangi prosesnya sampai CI senang - Atau salah satu dari dua permanen yang sudah terlalu padat dalam konsorsium memberikan bantuan dan mencoba memperbaiki PR pada mesin mereka.
Tidak satu pun dari opsi-opsi itu yang layak, tetapi kami hanya tidak tahu bagaimana melakukannya secara berbeda. Pernahkah Anda dihadapkan pada situasi yang serupa dengan proyek Anda? Dan jika demikian, bagaimana Anda menangani masalah ini? Apakah ada solusi yang tidak saya lihat di sini?