Does Conway’s Law apply to Linux?
No, indeed Linux seems to follow an inverse form of Conway's law.
Proposed in 1968, Conway’s Law asserts that
Organizations are constrained to produce application designs which are copies of their communication structures.
Wikipedia provides the following rationale for the law:
The law is based on the reasoning that in order for a software module to function, multiple authors must communicate frequently with each other. Therefore, the software interface structure of a system will reflect the social boundaries of the organization(s) that produced it.
Adherence to Conway's Law is often mentioned as one of the benefits of microservices architecture. For example, in a 2014 blog post, Lewis and Fowler mention that siloed functional teams tend to produce silod application architectures (i.e., architectures that do not follow microservices principles).
However, in a recent study, accepted at the 13th International Conference on Open Source Systems, we found evidences that Conway’s Law does not hold in Linux, which is probably the best-known, most-used, and complex open source software ever built.
In the study, we investigate the evolution of the Linux kernel using a code authorship measure. More specifically, we use the Degree-of-Authorship (DOA) measure to define the authors of each file in a system. Our analysis accounts for 56 stable Linux releases (v2.6.12– v4.7), spanning a period of over 11 years of development (June, 2005–July, 2016).
We call authors the developers who made significant changes to at least one Linux source code file. This may include the original file creator, as well as those who subsequently change it. Therefore, we focus on relevant developers, instead of developers with casual contributions.
The study shows, for example, that in the last analyzed release, Linux kernel has 13,436 developers, but only 3,459 (26%) are authors of at least one file.
Furthermore, we assess the degree of specialization of Linux authors. We call an author specialist if he/she authors files in a single subsystem. Generalists, in turn, author files in at least two subsystems. We found that the number of specialists dominates the amount of generalists. As can be seen in the following figure, any given release has at least 61% of specialists.
We also projected these results on Linux architecture. This architecture, as in most operating systems, includes a Core subsystem responsible for the SO main features. Other subsystems provide specialized services, like Drivers, Net, and Fs.
We found that this early architectural decomposition was crucial to define some key characteristics of the Linux’s development team along the years.
For example, Core is the subsystem with the highest percentage of generalists developers (87%). Probably, the reason is that Core developers tend to have expertise on Linux’s central features, which also allows them to work on other subsystems.
By contrast, Drivers subsystem has the highest percentage of specialists (more than 50%). This is also expected since device-drivers are self-contained modules that are plugged into the kernel and loaded as needed.
Therefore, it seems that an inverse form of Conway’s Law better explains the relation between the organization of the Linux development team and the architecture of the system. By inverse, we mean that it is the system’s architecture — defined 25 years ago — that is shaping the communication structures followed by Linux's developers over the last years.