Siamo un'organizzazione composta da circa 200 sviluppatori che lavorano ininterrottamente su un singolo prodotto (utilizzando il controllo di revisione Git) che è pianificato per essere rilasciato ad una certa data.
A causa dell'enorme numero di sviluppatori, stiamo cercando di creare team "interfunzionali" con circa 10 sviluppatori in ogni team, con il risultato di circa 20 team di sviluppo nell'organizzazione.
Dato che vorremmo mantenere costantemente uno "standard elevato" (ovvero quando lo sviluppatore fa un tiro, il prodotto dovrebbe essere almeno compilabile, ecc.) del prodotto nel repository principale, vorremmo usare un qualche tipo di qualità cancelli.
Sono un po 'insicuro su come esprimere la domanda, ma mi chiedo se potrei avere qualche consiglio sulle metodologie di sviluppo per un gruppo così ampio di sviluppatori che lavorano su un singolo prodotto.
Secondo la nostra opinione, un'estremità dello spettro è di consentire a ogni sviluppatore di impegnarsi direttamente nel repository principale, tuttavia temiamo che a causa dell'elevato numero di sviluppatori / commit che il "repository principale" potrebbe essere costantemente in un fase, perché non possiamo avere un "cancello di qualità" impegnativo per ogni commit.
L'altra estremità dello spettro potrebbe essere come (pensiamo Linus Torvalds / Linux lo fa) un albero o una struttura piramidale, dove il "repository principale" ha solo tre sorgenti pull, queste tre hanno solo una manciata di fidati pull fonti, ecc. Tuttavia, riteniamo che con una struttura del genere i cambiamenti abbiano una lunga catena da scalare per entrare nel "repository principale". Inoltre, se si verifica un conflitto di unione, il problema si ferma su un altro sviluppatore rispetto allo "sviluppatore originale".
Con tutte queste informazioni e opinioni di base, come possiamo imparare e leggere le metodologie di sviluppo consigliate per così tanti sviluppatori? In che modo le grandi organizzazioni (Microsoft, Facebook, Ubuntu, ecc.) Strutturano il loro sviluppo?