One of the hottest links of the moment is the blog post by Moishe Lettvin about how the Windows Vista shutdown menu got to be how it is. What, of course, caught my attention is how the version control is deployed inside Microsoft. Quoting Moishe:
I’d also like to sketch out how actual coding – what there is of it – works on the Windows team. In small programming projects, there’s a central repository of code. Builds are produced, generally daily, from this central repository. Programmers add their changes to this central repository as they go, so the daily build is a pretty good snapshot of the current state of the product. In Windows, this model breaks down simply because there are far too many developers to access one central repository – among other problems, the infrastructure just won’t support it. So Windows has a tree of repositories: developers check in to the nodes, and periodically the changes in the nodes are integrated up one level in the hierarchy. At a different periodicity, changes are integrated down the tree from the root to the nodes. In Windows, the node I was working on was 4 levels removed from the root. The periodicity of integration decayed exponentially and unpredictably as you approached the root so it ended up that it took between 1 and 3 months for my code to get to the root node, and some multiple of that for it to reach the other nodes. It should be noted too that the only common ancestor that my team, the shell team, and the kernel team shared was the root. So in addition to the above problems with decision-making, each team had no idea what the other team was actually doing until it had been done for weeks.
Read the whole story: Moishe Lettvin “The Windows Shutdown crapfest”.