  Software evolution is a fundamental process that transcends the realm of
technical artifacts and permeates the entire organizational structure of a
software project. By means of a longitudinal empirical study of 18 large
open-source projects, we examine and discuss the evolutionary principles that
govern the coordination of developers. By applying a network-analytic approach,
we found that the implicit and self-organizing structure of developer
coordination is ubiquitously described by non-random organizational principles
that defy conventional software-engineering wisdom. In particular, we found
that: (a) developers form scale-free networks, in which the majority of
coordination requirements arise among an extremely small number of developers,
(b) developers tend to accumulate coordination requirements with more and more
developers over time, presumably limited by an upper bound, and (c) initially
developers are hierarchically arranged, but over time, form a hybrid structure,
in which core developers are hierarchically arranged and peripheral developers
are not. Our results suggest that the organizational structure of large
projects is constrained to evolve towards a state that balances the costs and
benefits of developer coordination, and the mechanisms used to achieve this
state depend on the project's scale.
