MH History and Design

This page tells a brief story of how the MH electronic mail system came about and what it does.

In the 1960s and 1970s, computers were large and slow. They ran big, cumbersome operating systems. Efficiency was important. The new Unix operating system was designed to work on small computers, and to run small, efficient "building block" programs that worked together to do the job of old, huge "monolithic" programs.

In the same way that Unix helped to "downsize" computing, MH was designed to replace a big, inefficient email program. The MH system -- small modular programs that worked together and ran quickly -- meant that you could do email when you wanted to, without waiting for a big email program to start up and slowly digest all of your email.

This modular design let programmers call MH programs from other programs -- to add features, to make their email work just the way they wanted. These days, alhough some "big" email systems are at least partly programmable, MH is still more flexibile in many ways. One of those ways is running MH completely unattended, from a Unix system like cron, to do things like cleaning out old messages or building an index. (This was important in the old days, when computer time was precious and many jobs ran overnight. Now it's mostly just handy for automatically doing things that you don't want to bother doing by hand.)

In the old days, there were no windows or pointing devices (like mice); you did everything from your keyboard. (Once you know the principles of MH and the Unix command line, working from a keyboard can be much faster than using a mouse to point and pull down menus.) But, as window systems developed in the 1980s and 1990s, the modular design of MH made it easy for other programmers to add graphical front-ends (interfaces) to MH. Two popular MH front-ends are exmh and MH-E.

Part of the flexibility of MH comes from the way that it stores email messages, with each message in a separate file. A mail folder is simply a Unix directory -- and folders can have sub-folders (which are simply sub-directories), to a practically unlimited depth. A message can appear in multiple folders without taking extra disk space, thanks to hard links in Unix filesytems.

You don't "start" or "stop" MH the way you do other email programs. You can run an MH program from the command line at any time because MH keeps its context, For instance, if you read a message today with the show command, then shut off your system and go home for the night, you can turn on your system tomorrow, type show, and see the same message in the same folder.

Amazingly, MH is basically the only email system that has this flexible programming and storage design. It still lets you have many interfaces and choose between them as you wish: graphical point-and-click, your own programs and automated systems, and the original command-line interface.

Twenty years or so after MH started, development started to slow down. Although email was developing rapidly, MH wasn't. A new version called nmh, "New MH," was launched and new features were added. But, as of this writing (early 2003), nmh development has slowed too. The MH-E and exmh interfaces have mostly kept up with changes in email standards, but the original command-line interface is more limited.

If you'd like, you can read more MH history.


[MH Introduction] [Email tips page] [Home page]

Last change: 27 April 2003

Contact Jerry Peek