Sto lavorando a un grande progetto open source guidato dalla ricerca, con un sacco di altri collaboratori regolari. Poiché il progetto ora è piuttosto grande, un consorzio (composto da due dipendenti a tempo pieno e pochi membri) è incaricato di mantenere il progetto, l'integrazione continua (CI), ecc. Non hanno tempo per l'integrazione di esterni contributi però.
Il progetto è composto da un framework "core", composto da circa mezzo milione di righe di codice, un gruppo di "plug-in" gestiti dal consorzio e diversi plug-in esterni, molti dei quali non sono ne sono nemmeno consapevole.
Attualmente, il nostro CI costruisce il core e i plugin gestiti.
Uno dei grandi problemi che affrontiamo è che la maggior parte dei contributori (e soprattutto quelli occasionali) non sta costruendo il 90% dei plugin mantenuti, quindi quando propongono di refactoring cambiamenti nel core (che in questi giorni avviene su base abbastanza regolare), hanno verificato che il codice si compili sulla propria macchina prima di effettuare una richiesta pull su GitHub.
Il codice funziona, sono contenti, quindi l'IC termina la compilazione e iniziano i problemi: la compilazione non è riuscita in un plug-in gestito dal consorzio, che il collaboratore non ha creato sulla propria macchina.
Tale plugin potrebbe avere dipendenze da librerie di terze parti, come ad esempio CUDA , e l'utente non vuole, non sa come, o semplicemente non può, per motivi hardware, compilare quel plugin rotto.
Allora - sia la soggiorni PR annuncio aeternam nel limbo di non-to-be-fuse PR - O il contribuente greps la variabile rinominato nel sorgente del plugin rotto, modificano il codice, spinge sul suo / la sua filiale, aspetta l'IC per completare la compilazione, in genere riceve più errori e reitera il processo fino a quando l'IC non è soddisfatto - O uno dei due permanenti già prenotati in eccesso nel consorzio dà una mano e cerca di riparare il PR sulla propria macchina.
Nessuna di queste opzioni è praticabile, ma non sappiamo come fare diversamente. Sei mai stato di fronte a una situazione simile dei tuoi progetti? E se sì, come hai gestito questo problema? C'è una soluzione che non vedo qui?