On Tue, Jan 26, 2010 at 12:09:41PM -0600, David Champion wrote:
> I would love to see RFC2369 handling built in to mutt, but have not had
> time to explore this in code.  I'm certain there are others here who
> would cite the Unix Philosophy or whatever, and assert that an external
> program could do this as effectively and with cleaner layering.  

While such people would not necessarily be wrong, I think this (i.e.
the example of handling mail) is a great example of where the Unix
philosophy kind of falls down.  I've always felt that way, despite
being a big fan of the Unix Philosophy.  

There are a couple of ways to look at this.  One is this: the Unix
philosophy is to do one thing, and do it well.  In the case of my mail
program, the "one thing" is to handle my mail.  It should be capable
to do all of the essential things that involve handling mail, all of
the common things, and most of the less common things.  For the rest,
ideally it should have nice hooks to make it possible (if not easy).
Of course, this encompasses a great deal of functionality.  You can
implement all of it, and arguably still hold true to the Unix
Philosophy.

Another way to look at it, if you think that the above idea is
stretching the Unix Philosophy beyond what was intended (which it very
arguably is), is that the Unix philosoply is about 4 decades old, and
software (and users) have long since evolved to a point where it just
doesn't always make sense.  For an application like e-mail, there *is*
a lot of functionality that needs covering.  You can either write one
monolithic application to handle it all in a consistent way, or you
can stick with the ancient philosophy and glue all the bits together
in a way that, for my money, eventually gets pretty clunky, or at the
very least requires a lot of user effort to get it all working.  The
small pieces each have their own interface, which often doesn't play
well with other peices without some coercing, unless they were
designed from the beginning to work together.

Maybe it's because I'm getting old, but in this, I value practicality
over philosophy.  There was a time when I loved tinkering with
all sorts of clever solutions to little challenges...  But now, all I
want to do is read my mail and get on with life.   =8^)  I don't want
to program my mail client; I just want to use it to efficiently do
what I need to do, so I can spend more time playing Dragons Age. :)

One final perspective: we invented computers to do tedious stuff for
us.  Application software should ideally be written once, so that
people don't need to independently keep implementing the same
solutions over and over again.  The Unix Philosophy is very good for
developing small tools with a relatively small universe of utility;
it's not very good for gluing together a very large number of peices,
precisely because it requires the user to keep reinventing something
that should have been done for them.

I support keeping the code simple, but you have to balance that
against complexity of use by the user.  If something is hard in code,
but also hard for the human, you want it in the code, with suitable
comments around it to keep people from tampering with it unknowingly.
In code, you only need to implement it once; the human will have to do
it over and over again.  And there are lots of humans. :)

-- 
Derek D. Martin    http://www.pizzashack.org/   GPG Key ID: 0xDFBEAD02
-=-=-=-=-
This message is posted from an invalid address.  Replying to it will result in
undeliverable mail due to spam prevention.  Sorry for the inconvenience.

Attachment: pgpJbhRMY3gBS.pgp
Description: PGP signature

Reply via email to