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.

• "Everything is an X" • Writing O(M + N) code instead of O(M * N). Huge difference! • Coding the Perimeter vs. Coding the Area (from the Unix vs. Google video)

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.

Perlis Thompson Principle
from oilshell favicon