In Windows, this [centralised] model breaks down simply
because there are far too many developers to access one
central repository. 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.
With a distributed system, it would be possible to send changes directly between the two groups. You might have a problem keeping the whole Windows source code repository stored locally on your development machine though.
Here's a relevant quote from the article:
With a distributed system, it would be possible to send changes directly between the two groups. You might have a problem keeping the whole Windows source code repository stored locally on your development machine though.