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.
pgpJbhRMY3gBS.pgp
Description: PGP signature