Unix Philosophy

Source: Doug McIlroy, Bell System Technical Journal, 1978; Ken Thompson & Dennis Ritchie, Bell Labs, 1969-1973

Finding

The Unix philosophy: (1) Write programs that do one thing and do it well. (2) Write programs to work together. (3) Write programs to handle text streams, because that is a universal interface. Small, composable tools (grep, sort, awk, sed, wc, cut) connected by pipes. Each tool has a narrow scope, a clear interface (stdin/stdout), and no knowledge of what comes before or after it in the pipeline. The philosophy influenced everything from the GNU project to microservices architecture to functional programming.

Pattern Mapping

Proportion — “Do one thing and do it well” is proportion as a design commandment. grep searches. It does not sort, format, or compile. Adding those features would violate proportion — action exceeding stated purpose.

Humility — Each tool operates within its scope and makes no claims about what lies outside. sort does not know whether its input is names or temperatures. The humility of ignorance about context is what makes the tool universally composable.

Alignment — The man page for each tool states what it does. The tool does that. Alignment between documentation and behavior.

Connections

Status

McIlroy (BSTJ, 1978). History in Kernighan, Unix: A History and a Memoir (2019). The characterization as proportion and humility is this project’s structural interpretation.


The mapping to the five properties is this project’s structural interpretation.