Unix and the mbox Email Format
There is a sentiment that the unix mail storage format mbox is great because being plain text and unix text processing tools can be used on it.
The unix mbox mail format is a simple-minded text-appending raw format. Yes, unix's bag of text-processing tools can bear on it to a unixer's advantage, but that does not mean implementation-simplicity zilch-engineering format is a good thing. For example, if the requirement is applicability of unix text tools, all that's needed is unscrambled plain-text not necessarily simple-minded.
There are quite a lot mail formats used in unix. Emacs email program rmail has its own. Emacs variant XEmacs's mail reader vm uses another. Emacs's news/mail program GNUS uses yet another fantastically incompatible ad-hoc raw text format. The unix email program nmh, uses another and exists in particular to fix the simple-mindedness of mbox. All these unix mailers store the email rawly in plain-text, and all can be processed with the gazillion faakedup and feeble unix text processing tools.
Unixers will no doubt delude themselves that at least one advantage of simple-minded raw formats is universal compatibility and portability. Indeed that is much the story of unix. Like: a pauper's safeguard against robbery is to remain a pauper; a idiot's means to fame is idiocy; a bimbo's “no” relies on sex-harassment laws; a chimp's way of education is thru Affirmative Action; and unix moron's way of universality is crass simplicity.
All it takes for a 100% compatibility and portability requirement is a precise specification. (mathematical specification, complete documented API, functional programing.) But unix morons hate precision of any kind, because they simply are not good at it, or any thing too abstract or requires much effort for that matter.
Usually it is the case that patches cannot fix incompetent architecture. In the unix community, it is always the case that one covers shit with another pile of shit, starting with Unix and C. To wit here: nmh for mail. qmail for sendmail. sudo for super stup-id su. xinetd for inetd. proftp for ftp. grep and glob mutates into egrep and fgrep confoundedness. Perl for the faaking incompetent bag of unix text processing tools (sh, sed, awk et al.), and Pretty Home Page as its ramification of covering Perl's incompetence. tcsh cleans the smartassness of csh, which tries to outsmart the incompetence of sh, and so does bash/ksh/zsh and others. (Perl itself being a egregious faakup and lies.) C → C++ → Java → C#. The entire bag of unix text processing kludges and Perl can be replaced by a single language (or set of small programs) with the slightest engineering, say, python, scsh, and the entire unix community would be improved truly some 100 times.
It is not a case of inevitable evolution we are seeing here as unix morons would sure to excuse. From every tech argument, the unix morons always _resist_ change towards quality. One example we've seen here recently and gratuitously is the defense on the unix password system. (Note we are in a Mac list with few unix heads. Many original mac fans fully appreciate quality engineering. If it was in a dedicated unix list, you can be sure that any slight suggestion about the flaws or changes to unix password system will be shot down immediately, and these unix idiots will do it with absolute conviction. If you dare to be wayward with your reasoning you will be labeled a troll that results in rampant war-cry noises like “plonk” and sometimes these faakheads will harass you by complaining to your Internet Service Provider.)
For another example, since bash is quite popular and supersedes sh, why not have it replace sh completely? (As of today, this is happening in Linux where sh is simply a alias to bash (much due to FSF/GNU)) Since Perl is ubiquitous, how about gradually _eliminate_ the bag of diverse and complex but all ultimately less powerful unix tools? In many unix programs, GNU versions are usually more robust, feature rich, and with improved syntax. How about replacing them with GNU version or gradually merge towards one consistent syntax? Solaris comes with several set of the same unix tools for legacy reasons: (xpg4, ucb, /usr/bin) How about getting rid of legacies one way or another? Say, include just the POSIX version and let those who need legacy download themselves? The ps tool in many unixes truncate the output, so that “ps -ef | grep xyz” is not guaranteed to be correct. How about fixing that or including the “ps auwwx” version of ps once for all?
As a norm, unixers will be _extremely_ hostile to any of the above suggestions. It is _not_ about some conservative attitude on specific cases. The gist being that unix faakheads have a build-in anti-progress circuit. Their nature makes them not able to see, and resist any progress that requires conscious decision or effort. (their progress comes in the form of last-minute piece-meal patch, and because their infatuation with “compatibility”, the shit-piling phenomenon accrues another complexity.)
The reason unix shun progress because unixers do not spent any effort on anything. Progress requires conscious effort, decision, research. It cannot come from “why change when ain't broken” or “least resistance” or “principle virtue of programer being laziness” (faak Larry Wall asshole, the charlatan who fathered countless unix morons.)
“Well, admission is most of the way towards a cure.”
Indeed. The pith here is _awareness_, which is a form of knowledge. Any remedy of illness begins with a awareness. I want the average unixers to be aware that their system, their gurus, their attitudes, are a complete faaking moronitude that bogs down entire computing industry. Only then, things can improve truly.
To the hardcore unix morons: i encourage you to try to study much theoretical computer science (i.e. mathematics), acquaint yourself with the basics of political science, social science, and economics. Spend less time in unix online discussion groups. (unix groups subliminally make you dull. You are what you are exposed to.). Play video games less. (it makes you dumb and reactionary.) Keep using and refining your unix skills, but know in your heart that unix is a embodiment of incompetence. By simply keeping this in your mind, you will make better technical decisions when working in unix.
[Disclaimer: any mention of real person are opinion only.]