Over the decades I’ve seen the praise and critique of the “Unix way”. I don’t remember reading about the aspect I’ll describe below. This might be a banality, and I haven’t invested much thought into it either. I’m just curious to hear your opinions.
At the core of the Unix way is that tools should do just one thing. Users very often need results that can only be achieved after doing several things. With only single-purpose tools at hand, users have to integrate them. In other words, the tool authors delegate integration to the users.
Here’s the idea I want to discuss. In programming languages, integrating various modules to achieve a goal is already a complex task because we often have to handle numerous failure modes and edge cases. In shell scripts this is much worse, since shells are more limited than programming languages. Writing a tool that does only one thing looks like avoiding the most complicated task. Which leads to a conclusion that the Unix way only works well in a rather small fraction of use cases; the majority of cases are better served by different approaches.
What do you think?


The UNIX philosophy does look like “do one thing and do it well”, but it’s really a means of working in such a way that one doesn’t introduce scope creep to a point of Drupal.
Initially I had some words in the post about the philosophy opposing some other approaches, and I can guess that there were some Drupal-like examples at the time. Is it possible that the approach was taken to the extreme and the baby was spilled with the water?
Well, these things come in cycles. In the 90s everything had it’s own tool, then tools like Drupal and WordPress, office and image editing suites came along… And we went back to using simpler tools with app stores. And then we got orchestration with K8s. And so on.
We’re going through another a big change in software, and we’ll see more. The big, complex swiss army knife software suites again.