# Thoughts on Conway's Law and the software stack

DevFeed: [Thoughts on Conway's Law and the software stack](<https://devfeed.tech/articles/thoughts-on-conway-s-law-and-the-software-stack-35210.md>)

Original publisher: [Read original article](<https://blog.jessfraz.com/post/thoughts-on-conways-law-and-the-software-stack/>)

Published: 2019-03-25T15:09:26Z

Content type: opinion

Language: en

Sources: [Jessie Frazelle](<https://devfeed.tech/sources/jessie-frazelle.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [bugs](<https://devfeed.tech/tags/bugs.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [communication](<https://devfeed.tech/tags/communication.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [conway-s-law](<https://devfeed.tech/tags/conway-s-law.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [design-systems](<https://devfeed.tech/tags/design-systems.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [software](<https://devfeed.tech/tags/software.md>)

## AI overview

The article applies Conway's Law to the software stack, arguing that insufficient communication between hardware, firmware, kernel, and user-space layers can contribute to security risks, complexity, overlooked bugs, and difficult debugging. It uses cloud multi-tenancy, Spectre and Meltdown, and firmware as examples.

## Source excerpt

I've been talking to a lot of people in different layers of the stack during my funemployment. I wanted to share one of the problems I've been thinking about and maybe you can think of some clever solutions to solve it. Conway's Law states "organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations." If you were to apply Conway's Law to all the layers of the software stack and open source software you'd see a problem: There is not sufficient communication between the various layers of software. Let's dive in a bit to make the problem super clear. I've met a bunch of hardware engineers and I've made a point about asking each of them how they feel about using a single chip for multiple users. This is, of course, the use case of the cloud. All of the hardware engineers either laugh or are horrified and the resounding reaction is "you'd be crazy to think hardware was ever intended to be used for isolating multiple users safely." Spectre and Meltdown proved this was true as well. Speculative execution was a feature intended to make processors faster but was never thought about in terms of the vector of hacking something running multi-tenant compute, like a cloud provider. Seems like the software and hardware layers should better communicate... That's just one example, let's reverse the interaction. I've talked to a bunch of firmware and kernel engineers and they'd all love if the firmware from chip vendors did less complexity. For instance, it seems like a unanimous vote among firmware and kernel engineers that CPU vendors should not include runtime services or SMM with their firmware. Open source firmware and kernel developers would rather handle those problems at their layer of the stack. All the complexity in the firmware leads to overlooked bugs and odd behavior that can't be controlled or debugged from the kernel developers layer and/or user space. Not to mention, a lot of CPU vendors