Software with fewer concepts composes, scales, and evolves more easily.
Here’s a long definition:
Consider using fewer concepts, data structures, and types in foundational software like programming languages and operating systems.
This style allows for more composition and ad hoc reuse. It scales in multiple dimensions. It evolves gracefully (and messily) over decades.
When introducing a new concept, define a way to reduce it to an existing concept.
A software ecosystem that uses a narrow waist is following the Perlis-Thompson Principle in a particular way. The narrow waist idea relates to data: data structures, interchange formats, and network protocols. The Perlis-Thompson principle is arguably more general and refers to “concepts” like Unix processes and Emacs buffers that aren’t quite data.
It’s also known as:
- Thin Waist
- Hourglass Model
- Lowest Common Denominator
- Networking Terms: “Distinguished Layer” or “Spanning Layer”
This idea spans operating systems, networking, and programming languages.