Ho appena scoperto questi due post, qui e qui , dove l'autore spiega come viene organizzato il codice della divisione "developer" in Microsoft.
Questa parte spiega il problema:

"Let's imagine for a minute that any given developer has a brain fart and checks in a build break, serious bug, etc once every 6 months (which in my opinion would be a team of 800 of the best developers I've ever met).  There's about 250 working days in a year and simple math says 800 * 2 / 250 > 6 serious bugs checked in every single working day.  The fact is it's higher than that.  Of course we do unit testing, code reviews and the like to reduce bugs that make it into the system but it's simply not possible to eliminate them all.  The ramification of this is that (if everyone is checking into the same tree) the build is broken frequently and the daily tests rarely pass.  In fact the product won’t even start half (an exaggeration) the time."

Come soluzione hanno implementato tutto un sistema di "branch" e "merge" su dei Virtual Build Labs che rappresentano l'infrastruttura per ogni singolo prodotto.

Gli articoli sono veramente interessanti anche se e' facile perdere il filo del discorso perche' la struttura implementata e' molto complessa, specialmente quando descrive come fanno le Release versions.
Consiglio di leggere anche i commenti dove vengono date maggiori info in merito.

Oltre a questo, ricordiamoci che hanno anche le divisioni "Windows", "Office", "MSN", "SQL Server",... beh mi fermo qui

powered by IMHO 1.3