// Underlying Idea Explore some unifying ideas that have driven system evolution. ::: Everything is a file Used in unix and plan9. Concept of a hierarchical filesystem. Things that are not files can be attached to the hierarchy, and you can interact with them as though they were files. Kind of. Most of the time. Makes the system discoverable. You can browse around /proc and look for things. There is some elegance. You can use select(2) to detect non-blocking behaviour across both files and sockets and stdin. Kind of. This is not at all possible in Windows. There is some ugliness in edge-cases. ::: Everything is an icon Used in BeOS and Haiku. Concept of a hierarchical filesystem. Files have metadata attached. Through sophisticated use of metadata tags, you can create applications on top of the filesystem. For example, an email client where you could view your inbox simply by using the GUI to open the folder containing your email. more ::: Cheap process forking Used in unix. Idea that you can compose results through the use of lightweight processes. This concept seems to be often good for prototyping, and often bad for scale. Use of unix pipe in the shell to chain commands together. Upside: allows for rapid composition of complex pipelines from simple tools. Downside: requires lots of copying. Original apache webserver would fork a new process for handling each client. Upside: Offloads lots of nasty concurrency problems onto the operating system, which has already had to solve those problems. Downside: does not scale as well as later single-process efforts like apache 2 (uses threads) and nginx (focus on async techniques).