% begin text \banner \section{Acknowledgements} The \MH/ system described herein is based on the original Rand \MH/ system. It has been extensively developed (perhaps too much so) by Marshall Rose and John Romine at the University of California, Irvine. Einar Stefferud, Jerry Sweet, and Terry Domae provided numerous suggestions to improve the UCI version of \MH/. In particular, the UCI BBoards facility, which was suggested by Einar Stefferud, has been in place at the University of California, Irvine (in one form or another) for the last two and one-half years. The UCI BBoards facilities runs under both \MMDF/ and {\sf SendMail}, and, in a more restricted form, under stand-alone \MH/. \section{Disclaimer} The Regents of the University of California wish to make it known that: \bigquote Although each program has been tested by its contributor, no warranty, express or implied, is made by the contributor or the University of California, as to the accuracy and functioning of the program and related program material, nor shall the fact of distribution constitute any such warranty, and no responsibility is assumed by the contributor or the University of California in connection herewith. \endbigquote \section{Scope} This document explains how to use the UCI BBoards facility to a user familiar with \MH/ and the \unix/ operating system in general. A large degree of expertise is not assumed. This document does not attempt to introduce \MH/ to the novice user (for that task, consult the \MH/ tutorial known as \cite{MH.TUT}). Additional information on the programs discussed here (particularly \pgm{bbc\/}) is to be found in \cite{MH}. \section{Conventions} In this document, certain \TeX -formatting conventions are adhered to: \smallskip {\advance\leftskip by\parindent \item{1.} The names of \unix/ commands, such as \pgm{comp}, are presented in {\it text italics}. \item{2.} Arguments to programs, such as \arg{msgs}, are presented in {\tt typewriter style} and delimited by single-quotes. \item{3.} \unix/ pathnames and envariables, such as \file{/usr/uci/} and \file{\$SIGNATURE}, are presented in {\sl slanted roman}. \item{4.} Text presenting an example, such as \example comp\ -editor\ zz\endexample is presented in {\tt typewriter style}. \smallskip} \section{Introduction} \MH/ is a very powerful message handling system that runs under the \unix/ operating system. One of the many features which \MH/ offers is an interface to the UCI BBoards facility. This facility permits the efficient distribution of interest group messages on a single host, a group of hosts under a single administration, and the ARPA Internet community. Described simply, a interest group is composed of a number of subscribers with a common interest. These subscribers post mail to a single address, known as a {\it distribution} address. From this distribution address, a copy of the message is sent to each subscriber. Each group has a {\it moderator}, which is the person that runs the the group. This moderator can usually be reached at a special address, known as a {\it request} address. Usually, the responsibilities of the moderator are quite simple, since the mail system handles the distribution to subscribers automatically. In some cases, the interest group, instead of being distributed directly to its subscribers, is put into a {\it digest} format by the moderator and then sent to the subscribers. Although this requires more work on the part of the moderator, such groups tend to be better organized. Unfortunately, there are a few problems with the scheme outlined above. First, if two users on the same host subscribe to the same interest group, two copies of the message get delivered. This is wasteful of both processor and disk resources. Second, some of these groups carry a lot of traffic. Although subscription to an group does indicate interest on the part of a subscriber, it is usually not interesting to get $50$ messages or so delivered to the user's private maildrop each day, interspersed with {\it personal} mail, that is likely to be of a much more important and timely nature. Third, if a subscriber on the distribution list for a group becomes ``bad'' somehow, the originator of the message and not the moderator of the group is notified. It is not uncommon for a large list to have $10$ or so bogus addresses present. This results in the originator being flooded with ``error messages'' from mailers across the ARPA Internet stating that a given address on the list was bad. Needless to say, the originator usually could not care less if the bogus addresses got a copy of the message or not. The originator is merely interested in posting a message to the group at large. Furthermore, the moderator of the group does care if there are bogus addresses on the list, but ironically does not receive notification. To solve all of these problems, the UCI BBoards facility introduces a new entity into the picture: all interest group mail is handled by a special component of the mail system. The distribution address maps to a special {\it channel} that performs several actions. First, if local delivery is to be performed, then a copy of the message is placed in a global maildrop for the interest group with a timestamp and a unique number. Local users can read messages posted for the interest group by reading the file. Second, if further distribution is to take place, a copy of the message is sent to the distribution address in such a way that if any of the addresses are bogus, the failure notice is sent to the maintainer of the group and not the originator. This scheme has several advantages: First, messages delivered to the host are processed and saved once in a globally accessible area. The UCI BBoards facility supports software which allows a user to query the interest group for new messages and to read those messages in the \MH/-style. Second, once a host subscribes to an interest group, a user can add or remove him/herself from the list without contacting the moderator. Third, a hierarchical distribution scheme can be constructed to further reduce the amount of message traffic. Fourth, errors are prevented from propagating. When an address on the distribution list goes bad, the request address immediately responsible for the address is notified. Usually, this is the local PostMaster and not the group moderator. In addition to solving the problems outlined above, the UCI BBoards facility supports several other capabilities. BBoards may be automatically archived in order to conserve disk space and reduce processing time when reading them. Special alias files may be generated which allow the \MH/ user to shorten address type-in. For example, instead of sending to \eg{SF-Lovers@Rutgers}, a user of \MH/ usually sends to \eg{SF-Lovers} and the \MH/ aliasing facility automatically makes the appropriate expansion in the headers of the outgoing message. Hence, one need only know the name of a interest group and not its address. Finally, the UCI BBoards facility supports {\it private} interest groups using the \unix/ group access mechanism. This allows a group of people on the same or different machines to conduct a private discussion. The practical upshot of all this is that the UCI BBoards facility automates the vast majority of BBoards handling from the point of view of both the PostMaster and the user. \section{BBoard Handling} Usually the term {\it BBoard} is used interchangeably with the terms {\it discussion group} and {\it interest group}. This is true of the discussion that follows. The messages for a BBoard delivered locally are kept in the same format as a maildrop.% \nfootnote{Actually, your site might be running with all BBoards kept on a single host. \MH/ supports the remote access of BBoards using a modified version of the ARPA Post Office Protocol (POP). This has the advantage that it saves a lot of disk space, and incurs only a modest performance penalty.} Unlike the user's private maildrop however, the \pgm{inc} program is not run to incorporate new BBoard messages into the user's \MH/ \eg{+inbox} folder. The programs which are used will be discussed momentarily. Each message in a BBoard maildrop has a unique number and a timestamp. The number, called the {\it BBoard-ID}, is always ascending. The BBoard-ID of a message should {\bf NOT} be confused with the message number of a message, which can change as messages are removed from the BBoard. The BBoard-ID is a value which is unique for every message delivered locally to the BBoard. To read BBoards, the \MH/ user invokes \pgm{bbc}. The \pgm{bbc} program has several switches to direct it's action. The \switch{topics} switch to \pgm{bbc} tells the \MH/ user about the status of a BBoard. The \switch{check} switch to \pgm{bbc} lets the \MH/ user check on the activity of a BBoard. The \switch{read} switch to \pgm{bbc} invokes the \pgm{msh} program on the BBoard. \pgm{msh} is a monolithic program which contains most of the functionality of \MH/ in a single program. These commands are now discussed in greater detail. \subsection{BBoard status} The \switch{topics} option to the \pgm{bbc} program can be used to report information about a BBoard that does not pertain to the user's reading habits. If the \MH/ users types \example bbc\ -topics\endexample then \pgm{bbc} will list the following information for all BBoards received on the host: \smallskip {\advance\leftskip by\parindent \item{$\bullet$} the official name of the BBoard \item{$\bullet$} the number of messages delivered to the BBoard (but not necessarily present) \item{$\bullet$} the date and time of the last message delivered to the BBoard \medskip} \noindent In addition to \switch{topics}, if the \switch{verbose} option is given to \pgm{bbc}, then more information is listed: \smallskip {\advance\leftskip by\parindent \item{$\bullet$} any aliases the BBoard is known as \item{$\bullet$} the local leaders of the BBoard \item{$\bullet$} the file that the BBoard is locally delivered to \item{$\bullet$} the ``global'' distribution address \item{$\bullet$} the ``global'' request address \item{$\bullet$} the host that distributes the BBoard to the local host \item{$\bullet$} the addresses to which this host distributes \item{$\bullet$} miscellaneous information (presently only archiving status) \medskip} \noindent Naturally, \pgm{bbc} can be invoked with the \switch{topics} option and one or more BBoard names listed on its command line. For example \example bbc\ -topics\ unix-wizards\endexample is completely acceptable~---~it tells \pgm{bbc} to report the status of the BBoard \eg{unix-wizards}. \subsection{BBoard checking} The \switch{check} option to the \pgm{bbc} program can be used to check for new BBoard messages in a synchronous fashion (i.e., when you specifically ask for it). The \MH/ users types \example bbc\ -check\endexample and \pgm{bbc} consults the profile entry for \eg{bboards:} in the user's \profile/ file. For each BBoard listed, \pgm{bbc} prints one of several messages depending on the status of both the BBoard and the user's reading habits (for example, in the case of the mythical BBoard \eg{foo\/}): \smallskip {\advance\leftskip by\parindent \item{1.} \eg{foo -- n items unseen}\hbreak This message indicates items in the BBoard have not been seen by the user. When \pgm{bbc} is invoked with the \eg{quiet} switch, this is the only informative message that \pgm{bbc} will print out. Users of \MH/ usually put \example bbc\ -check\ -quiet\endexample in their \file{\$HOME/.login} file. \item{2.} \eg{foo -- empty}\hbreak The BBoard is empty. \item{3.} \eg{foo -- n items (none seen)}\hbreak The BBoard has $n$ items in it, but the user hasn't seen any. \item{4.} \eg{foo -- n items (all seen)}\hbreak The BBoard is non-empty, and the user has seen everything in it. \item{5.} \eg{foo -- n items seen out of m}\hbreak The BBoard has at most $m-n$ items that the user has not seen. \medskip} \noindent It is important to note that \pgm{bbc} performs its calculations on BBoard-ID:s and not the messages actually present in a BBoard. This means that the numbers given by \pgm{bbc} are maximal end-points. When \pgm{bbc} says $n$, \pgm{bbc} means ``at most $n$''. Naturally, \pgm{bbc} can be invoked with the \switch{check} option and one or more BBoards listed on its command line. For example \example bbc\ -check\ info-c\ poli-sci\endexample is completely acceptable~---~it tells \pgm{bbc} to check on the BBoards \eg{info-c} and \eg{poli-sci} only. There are two ways to check for new BBoard messages in an asynchronous fashion: using the \pgm{CShell} variable \file{\$mail} and running the \pgm{useto} program. \subsubsection{Asynchronous Checking with the CShell} The \pgm{CShell} has a variable called \file{\$mail}. This variable can contain one or more words. Each word should be a filename where the shell should check for new mail. The check is performed after a specified time interval has elapsed just before the shell would prompt the user. If the first word of \file{\$mail} is a number, then this number specifies a different checking interval, in seconds, than the default, which is 10 minutes. Whenever the time interval elapses and the shell is ready to prompt the user, the shell looks at the file and decides if new messages have arrived. If so, it says \example You have new mail.\endexample if only one file is present in \file{\$mail}. Otherwise, if more than one file is present in \file{\$mail}, then the shell says \example New mail in foo.\endexample whenever there is new mail in the file called \eg{foo}. To find out what file is associated with a BBoard, say \eg{info-unix}, the \MH/ user types \example bbc\ -topics\ -verbose\ info-unix\endexample Usually the local file for a BBoard has an extension of \file{.mbox}. \subsubsection{Asynchronous Checking with Useto} In contrast to using the \file{\$mail} variable in the \pgm{CShell}, the \MH/ user might employ \pgm{useto} instead.% \nfootnote{Not all sites have \pgm{useto}; contact the same people who supplied \MH/ to get a copy.} The \pgm{useto} program is a continuous update display that prints information on the status line of your terminal. Needless to say, your terminal must support a status line in order to run \pgm{useto}. Not all terminals have this capability, but for those that do it's usually well worth the effort to run \pgm{useto}. For example, users of \MH/ could put \example useto\ -bepf\ \'tcp-ip\ sftp\'\ % \'\%D\ \%M\ \%d\ \%h:\%m\%z\%b\ \%n.tty\%t:\%l1\'% \endexample in their \file{\$HOME/.login} file. This command line to \pgm{useto} says to inform the user of \smallskip {\advance\leftskip by\parindent \item{$\bullet$} the current date and time \item{$\bullet$} new mail for the user \item{$\bullet$} new messages for the BBoards \eg{tcp-ip} and \eg{sftp} \item{$\bullet$} the name of the host and tty that the user is logged in on \item{$\bullet$} the 5--minute load average of that host \smallskip} The \pgm{useto} program is really quite amusing and useful.% \nfootnote{To be honest, the author considers computing environments without \pgm{useto} to be less than adequate.} \subsection{BBoard reading} If \pgm{bbc} is not given either the \switch{check} or \switch{topics} option, the \pgm{bbc} program reads BBoard messages. For each BBoard listed in the \MH/ user's profile entry for \eg{bboards:}, \pgm{bbc} checks to see if there is unread mail. If so, \pgm{bbc} starts \pgm{msh} on the BBoard, telling \pgm{msh} which messages haven't been seen.% \nfootnote{If the \switch{verbose} option is given to \pgm{bbc}, then \pgm{bbc} will start \pgm{msh} on the BBoard regardless of whether there are unseen messages there.} When \pgm{msh} starts it identifies the BBoard being read and indicates how many messages are present and how many the user has read. Usually, in the user's \MH/ profile, the user has the entry \example msh:\ -scan\endexample This says that when \pgm{msh} starts, it should print a {\it scan listing} of the messages which the user hasn't seen yet. The \pgm{msh} program now prompts the user for \MH/ commands. The user may type most of the normal \MH/ command. The syntax and semantics of the commands typed to \pgm{msh} are identical to their \MH/ counterparts. For example, to reply to a message on the BBoard, the \MH/ user types \eg{repl}; other \MH/ commands likewise may be applied to BBoard messages. In cases where the nature of \pgm{msh} would be inconsistent (e.g., specifying a \arg{+folder} with some commands), \pgm{msh} will duly inform the user. In addition to supporting most \MH/ commands, \pgm{msh} also has a \eg{help} command which gives a brief overview. The only command that behaves entirely differently in \pgm{msh} is the \eg{mark} command when given no arguments. The \pgm{msh} program maintains a special sequence, \eg{unseen}, which it uses to keep track of the messages you've seen. If the \eg{mark} command is given without any arguments, then \pgm{msh} will interpret it as \example mark\ -sequence\ unseen\ -delete\ -nozero\ all\endexample Hence, to discard all of the messages in the current BBoard being read, the \MH/ user types \eg{mark} which says to remove all messages from sequence called \eg{unseen}. To leave \pgm{msh} use the \eg{quit} command. This tells \pgm{msh} to terminate and \pgm{bbc} to go to the next BBoard. Instead, if the user types EOT (usually CTRL-D), then \pgm{bbc} will exit as well, updating whatever information was appropriate. \section{Current BBoards} There are many, many active interest groups. Consult the BBoard called \eg{list-of-lists} for a comprehensive description. Here are a few of the more popular: \smallskip {\advance\leftskip by\parindent \item{\tx system} Important announcements for the local system are posted here. \item{\tx mh-users} A discussion group for users of \MH/. \item{\tx arpanet-bboards} Redistribution address for all known BBoards on the ARPAnet. \item{\tx editor-people} Discussion of topics related to computerized text editing, display editors, and human factors in man/machine interaction. The theoretical discussion is catholic, but practical discussion focuses particularly on \tops20/ and \unix/. \item{\tx franz-friends} Discusses the Franz Lisp language. \item{\tx header-people} Interest specifically in the format of message headers and related issues such as inter-network mail formats/standards, etc. \item{\tx human-nets} {\sf Human-Nets} has discussed many topics, all of them related in some way to the theme of a world-wide computer and telecommunications network usually called WorldNet. The topics have ranged very widely, from something like tutorials, to state of the art discussions, to rampant speculation about technology and its impact. \item{\tx info-micro} Information/discussion list on the general interest topic of microcomputers. \item{\tx info-unix} {\sf Info-UNIX} is intended for question/answer discussion, where ``novice'' system administrators can pose questions. \item{\tx msggroup} Interest in electronic mail, message formats, message systems, and the sociological implications of the above. \item{\tx poli-sci} A permanent distributed political ``bull'' session. \item{\tx sf-lovers} Science Fiction lovers. {\sf SF-Lovers} has discussed many topics, all of them related in some way to the theme of science fiction or fantasy. \item{\tx space} Discussions (daily digest) on space-related topics. \item{\tx telecom} A broad spectrum moderated-digest-format discussion on telecommunictions technology: the telephone system, modems, and other more technical aspects of telecommunications systems. \item{\tx unix-emacs} Used for new release announcements and general discussions of Gosling's \EMACS/. \item{\tx unix-wizards} Distribution list for people maintaining machines running the \unix/ operating system. \medskip} \noindent As discussed earlier, to find out about all of the BBoards that the local host subscribes to, the \MH/ users types \example bbc\ -topics\endexample \section{More on BBoards} Finally, here are a few more operational details: \subsection{Creating a BBoard} Contact the PostMaster at your host to have a BBoard created. Be sure to indicate its status (public or private) and scope (where distribution should occur). \subsection{Subscribing to a BBoard} If your local host already receives an interest group, then simply add the name of the BBoard to the \eg{bboards:} entry in your \MH/ profile. If not, ask the PostMaster to create the BBoard and contact the global request address for you. \subsection{BBoard Archives} BBoard messages are automatically archived on a weekly basis. Usually, this results in messages older than 12 days being moved to an {\it archive} area. To read the archives for a BBoard, the \switch{archive} option is used. For example, \example bbc\ -archive\ telecom\endexample tells \pgm{bbc} to invoke \pgm{msh} on the archives for the \eg{telecom} BBoard. Note that the archives may not be present for all BBoards on a given host; also note that the archives may be periodically moved to tape and expunged from the system. Contact your local PostMaster for the details. \subsection{BBoard Addresses} Each BBoard has associated with it 4 addresses (for example, in the case of the mythical BBoard \eg{foo\/}): \smallskip {\advance\leftskip by\parindent \item{\tx foo} The global distribution list\hbreak If you post a message addressed to {\tx foo} then the message is distributed to everyone who subscribes to \eg{foo}. \item{\tx dist-foo} The local distribution list\hbreak If you post a message addressed to {\tx dist-foo} then the message is distributed to the local BBoard for \eg{foo} and to any sites which the local system distributes to. \item{\tx foo-request} The global moderator\hbreak If you post a message addressed to {\tx foo-request} then the message is sent to the moderator for the entire interest group called \eg{foo}. \item{\tx local-foo-request} The local moderator\hbreak If you post a message addressed to {\tx local-foo-request} then the message is sent to the person responsible for the BBoard \eg{foo} on the local system. \medskip} \noindent These addresses are defined by the \MH/ alias facility. Users of the BBoards facility who do not use \MH/ may not be able to make use of them. \subsection{Leading a BBoard} Except for special circumstances, this task is wholly automated. For more information though, see the manual entries for \man bbl(1) and \man bbleaders(8). \section{Extra for Experts} Some clever \MH/ users might ask why BBoards aren't kept as folders instead of \pgm{pack}'d files. This is a good question. Perhaps some future release of \MH/ and the UCI BBoards facility will treat BBoards as a variant of read-only folders. The problem with \pgm{msh}, of course, is that it's a monolithic program, and although it does support input/output redirection and a few other primitive shell-like properties, it's still not the \pgm{CShell}.