Siamo un'organizzazione composta da circa 200 sviluppatori che lavorano continuamente su un singolo prodotto (utilizzando il controllo di revisione Git) che dovrebbe essere rilasciato a una certa data.
A causa dell'enorme numero di sviluppatori, stiamo cercando di creare team "interfunzionali" con circa 10 sviluppatori in ciascun team, ottenendo circa 20 team di sviluppo nell'organizzazione.
Dal momento che vorremmo mantenere uno "standard elevato" continuo (ovvero quando lo sviluppatore fa un pull, il prodotto dovrebbe almeno essere compilabile, ecc.) Del prodotto nel repository principale, vorremmo usare una sorta di gate di qualità.
Non sono sicuro di come formulare la domanda, ma mi chiedo se potrei ottenere qualche consiglio sulle metodologie di sviluppo per un gruppo così vasto di sviluppatori che lavorano su un singolo prodotto.
A nostro avviso, un'estremità dello spettro è quella di consentire a ciascuno sviluppatore di impegnarsi direttamente nel repository principale, tuttavia temiamo che, a causa dell'elevato numero di sviluppatori / commit, il "repository principale" potrebbe essere costantemente in una fase interrotta, a causa non possiamo avere un "cancello di qualità" esigente per ogni commit.
L'altra estremità dello spettro potrebbe essere come (pensiamo che Linus Torvalds / Linux lo faccia) un albero o una struttura piramidale, in cui il "repository principale" ha solo tre fonti pull, queste tre hanno solo una manciata di fonti pull fidate, 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 verifica su un altro sviluppatore rispetto allo "sviluppatore originale".
Con tutte queste informazioni di base e opinioni dichiarate, 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?