User:Slaurel/MUSH (e-mail client)

MUSH is an email client for Unix-like systems which includes CUI (Character User Interface), and CLI interfaces. It was written by Dan Heller (alone, from 1985-1987 ) with Bart Schaefer (October 1987 onward ). The source code is public, but the license restricts distribution of modified source code.

Z-Mail was a commercial email client, extended from the mush source code, whose source has since been released (see below).

MUSH provides a command-shell interface, where users can type actions to be performed on a mailbox. As opposed to most email clients which provide a graphical, or full-screen text interface, MUSH requires the user to type longer commands, followed by the enter key. As is the case in GUI vs CLI interfaces for operating systems, there is a tradeoff between user convenience and expressive power. MUSH allows commands of significant complexity which enable the user to accomplish complex tasks which would be impossible or laborious in other email MUAs.

The user interface for mush would be very familiar to modern email users, as many of the paradigms it offered have continued on in later mail clients.

In the same manner as traditional Unix shells, commands that can be entered in MUSH can also be copied into a script file, allowing operations on a mailbox to be automated.

History
MUSH was written in the pre-WWW era of the Internet, and before the GPL license was created. It's first release was in 1985. It was originally known as "frankenmail". Its existence can be noted in the historical record of discussions in Usenet in the dedicated newsgroup comp.mail.mush which was created in 1989. Only Elm competes for role of first full-screen text email application. Elm, released in 1986 achieved greater widespread use. MUSH included a CLI interface that Elm did not. In 1990, Heller and Shaefer created a commercial product, 'Z-Mail', by extending the functionality of Mush.

MUSH innovated features which inspired later mail clients. The MUTT documentation notes in the explanation of its own name: "features found in other popular clients such as PINE and MUSH have been added, the result being a hybrid, or "mutt."

The original MUSH project was later enhanced as a commercial product named Z-Mail. The rights were later bought by NCD, transfered to NetManage Inc. and later, at the author's urging, the full source code was released back to the public.

Features
Mush included built in end-user help text that could be displayed on demand, as did the commercial variant, Z-Mail. As an example of a feature which is not generally available in modern mail clients, when replying to a message, the user could optionally include the text of the original message, or any other message. Mush and Z-Mail both used the mbox mail file format. The message selection mechanism in mush is particularly powerful, allowing selection of sets of messages by message header and contents, or specific fields only, as well as allowing filtering by field types, such as 'pick -ago -2m' to select messages sent more than 2 months ago. Mush supported a convenient mechanism for inserting the contents of a file into the body of a message (this predated MIME encapsulation standards). Mush includes personal address-book functionality, allowing a user to define aliases. Mush supports filing email into folders. Mush allows editing of received messages. Mush and Z-Mail support configuration of initialization parameters through the files .mushrc and .zmailrc in the user's home directory. Mush and Z-Mail support configuring signatures to be sent to local users or remote users separately. Mush supports saving a copy of all outgoing mail. Mush supports selection of a preferred file editor. Mush supports supressing the display of selected header fields. Mush allows customization of the user prompt to include fields of the users' choosing. Mush allows the creation of custom commands. Z-Mail includes features copied from functionality in the C-Shell, such as command history, filename completion, command-line aliases, and the ability to execute UNIX commands from within the program.

License
While MUSH predated the major surge in the popularity of open-source, its license may have been a factor in limiting its widespread use. The license does not fall into one of the common open source license categories. The author allowed redistribution of unmodified source code only.

Mush is copyright (c) 1986, 1987, 1988, 1989, 1990, 1991 by Dan Heller. All Rights Reserved. This software is not in the public domain.

Redistribution of the unmodified source code is permitted as long as all copyright notices remain intact and all other identifying notices remain in the code and in the binary. This includes message headers on outgoing mail and the startup message. Future releases may extract the release version from the message headers of mush-originated messages to aid in implementing features and providing backwards compatibility with previous versions. Modification of the source for personal use is permitted. Modifications sent to the authors are humbly accepted and it is their prerogative to make the mods official. Only the "official" sources may be redistributed and no sale of the code or any part thereof is permitted without written consent from the authors. Further, no part of the code may be used in any other product, free or otherwise, without consent from the authors. Distribution of sources containing adaptations of the SunView interface to XView or to any X11-based interface is expressly prohibited.

MUSH IS PROVIDED AS IS, WITHOUT WARRANTY. AUTHORS HEREBY DISCLAIM ALL WARRANTIES INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE.

Relationship to Z-Mail
An enhanced, commercial version of mush called Z-Mail was released, and won the UNIX World magazine's "Product of the Year Award" in 1991. The commercial product added an X-Windows OPEN LOOK GUI interface.

Notable users of Z-Mail (circa 1995) included Tim O'Reilly and the staff of O'Reilly Media.

Examples from the interface
The full set of shell commands:

?             exit           map            replysender    uncmd alias         expand         map! save          undelete alternates    fkey           mark           saveopts       undigest await         flags          merge          set            unfkey bind          folder         my_hdr         sh             unignore bind-macro    folders        next           sort           unmap cd            from           pick           source         unmap! cmd           headers        pipe           stop           unmark copy          help           preserve       top            unpreserve curses        history        previous       type           unset delete        ignore         print          un_hdr         update echo          lpr            pwd            unalias        version edit          ls             quit           unbind         write eval          mail           replyall       unbind-macro