January 22, 2019
The Unix philosophy guides the development of both Unix and its derivatives. It’s a good philosophical core to judge new projects by. I’m increasingly using the Unix philosophy in my own works. This is particularly true of new versions of Iron Arachne command line tools. There are multiple versions of the Unix philosophy bouncing around on the web. Some are longer or more stringent than others. What follows is my own interpretation of it.
Each program should do one thing well. Corollary: Each program should do only one thing.
Expect each program’s output to be the input for some unknown other program. Design for flexibility. Corollary: Also design first for command-line interfaces, and avoid interactive interfaces. Assume machines will use your program more often than humans.
Release early and often. Corollary: It’s not only OK but desirable to have minimal change between iterations.
Write tools to assist development instead of seeking out human help. Corollary: It’s fine to ask for help when you’ve tried the above to no success.