If this isn't evidence that size breeds complexity, I don't know what is. In an explanation of how builds of Windows happen, Moishe Lettvin talks about how long it takes code to migrate from a typical development team at MS up to the central repository (or back down):
In Windows, this model [ed: one master repository used by all] 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.
This explains a lot of the more frustrating bugs in Windows - an awful lot of the code is built based on not completely recent versions of the codebase. Heck, it sounds like no one really works on the "real" codebase - everyone has their own mirror, and all the mirrors reflect reality a little differently. It's kind of amazing that it works at all, actually.
Technorati Tags:
Windows, Microsoft