Has Unix Philosophy Ever Broken Down

February 28, 2012

I came across this interesting (as always) John D. Cook article, where the Unix philosophy breaks down, today. It dates back to June 2010, so I feel a little late to comment on the issue, nonsense, Unix is 43 years old! 🙂

Cook quotes McIlroy’s summary of Unix Philosophy:

This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

He argues Unix philosophy fails at some point because of the transaction costs of switching between software. He adduces Microsoft Office: each software Ms Office bundle involves has a similar set of functionality that is better provided by other software in the bundle, i.e. Excel has basic database functionality even though there is Access for this particular job. Because people should not need to constantly switch between applications.

Below the post, there are some comments that manifest the difference between an application and a program. This is not a counter-argument, but simply another way of saying you are right, but we all love Unix so let’s focus on terms as a diversion.

I say, let’s concentrate on what Cook is trying to tell instead: we should not need to switch between applications. There is an underlying assumption in this statement:

Switching between applications is a hard thing,

It doesn’t need to be, the way we think about applications is shadowed by the way applications and graphical user interfaces work today. We always think of software stack sequentially.

  • Do foo in software x,
  • save it,
  • open foo in software y,
  • turn it into foo-bar,
  • save it,
  • open it in z,
  • add some baz,
  • save foo-bar-baz.

If you need fixnum applications to work on your project, all so full of functionality, making them impossible to use unless maximized on screen, switching among them is a pain in the ass. However, this is not necessarily how we should use x, y and z. What we need is better ways of bridging applications, so we can use a stack of small graphical programs that;

  • do one thing and do it well,
  • integrate well.

Then we can use them simultaneously (maybe with a little help of tiling window managers that makes it incredibly easy to use programs simultaneously). No duplicated possibly-broken functionality, no cluttered applications that take years to learn despite the fact that you already know how to do it with some other application. Lots of simple, easy to use programs.

To be continued…


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: