Many operating systems touted as more ‘modern’ or
‘user friendly’ than Unix achieve their surface glossiness by
locking users and developers into one interface policy, and offer
an application-programming interface that for all its elaborateness
is rather narrow and rigid. On such systems, tasks the designers
have anticipated are very easy — but tasks they have not
anticipated are often impossible or at best extremelypainful.
Unix, on the other hand, has flexibility in depth. The many ways
Unix provides to glue together programs mean that components of its
basic toolkit can be combined to produce useful effects that the
designers of the individual toolkit parts never anticipated.
Unix's support of multiple styles of program interface (often
seen as a weakness because it increases the perceived complexity of
the system to end users) also contributes to flexibility; no
program that wants to be a simple piece of data plumbing is forced
to carry the complexity overhead of an elaborate GUI.
Unix tradition lays heavy emphasis on keeping programming
interfaces relatively small, clean, and orthogonal — another trait
that produces flexibility in depth. Throughout a Unix system, easy
things are easy and hard things are at least possible.