When the Linux single-purpose philosophy fails: NFS
There is a long-standing unchallenged axiom in the open-source world: the best applications are small and have a single purpose. If you want a tool to remove the background from a photo, you should have a small terminal program that receives a photo and outputs the photo without background. If you want to rename files to add a timestamp, you should have a small terminal program that receives a file and outputs the renamed file. This way, if you want to remove the background and add a timestamp to your photos, you can pipe the programs, effectively creating a new tool in the Linux shell.
It’s like receiving a toolbox with various instruments that you can combine and use to get a job done. The job may be so complex that no single tool you have in the toolbox would be enough to solve it. The tools may not even be designed to tackle it. But combined, you get something the tool creators never thought of, something that if applied with a little ingenuity would tackle your complex task. This is the Linux single-purpose philosophy.
Yet another famous Linux philosophy is everything-is-a-file. They go hand in hand because if everything is a file, then all tools usually applied to files can be applied to, well, everything. Network resources are read with file commands, inter-process communications are handled as files, Linux processes have…