Annotation of 43BSDReno/contrib/mh/papers/mh5/text.tex, revision 1.1

1.1     ! root        1: % begin text
        !             2: \banner
        !             3: \section{Acknowledgements}
        !             4: The \MH/ system described herein is based on the original Rand \MH/ system.
        !             5: It has been extensively developed (perhaps too much so) by Marshall Rose and
        !             6: John Romine at the University of California, Irvine.
        !             7: Einar Stefferud, Jerry Sweet, and Terry Domae provided numerous suggestions
        !             8: to improve the UCI version of \MH/.
        !             9: 
        !            10: \section{Disclaimer}
        !            11: The Regents of the University of California wish to make it known that:
        !            12: \bigquote
        !            13: Although each program has been tested by its contributor,
        !            14: no warranty, express or implied,
        !            15: is made by the contributor or the University of California,
        !            16: as to the accuracy and functioning of the program
        !            17: and related program material,
        !            18: nor shall the fact of distribution constitute any such warranty,
        !            19: and no responsibility is assumed by the contributor
        !            20: or the University of California in connection herewith.
        !            21: \endbigquote
        !            22: 
        !            23: \section{Conventions}
        !            24: In this document,
        !            25: certain \TeX -formatting conventions are adhered to:
        !            26: \smallskip
        !            27: {\advance\leftskip by\parindent
        !            28: \item{1.} The names of \unix/ commands, such as \pgm{comp},
        !            29: are presented in {\it text italics}.
        !            30: \item{2.} Arguments to programs, such as \arg{msgs},
        !            31: are presented in {\tt typewriter style} and delimited by single-quotes.
        !            32: \item{3.} \unix/ pathnames and envariables,
        !            33: such as \file{/usr/uci/} and \file{\$SIGNATURE},
        !            34: are presented in {\sl slanted roman}.
        !            35: \item{4.} Text presenting an example, such as
        !            36: \example comp\ -editor\ zz\endexample
        !            37: is presented in {\tt typewriter style}.
        !            38: \smallskip}
        !            39: 
        !            40: \bop\section{General Changes}
        !            41: The author is pleased to announce that there are actually very few
        !            42: user-visible changes to \mh5 from the \mh4 distribution.
        !            43: The majority of \mh5 development was in the form of bug fixes and slight
        !            44: generalizations.
        !            45: In addition, \mh5 is somewhat faster than \mh4:
        !            46: all programs have been speeded-up slightly,
        !            47: a few, such as \pgm{msh}, have been speeded-up signficantly.
        !            48: 
        !            49: \subsection{Library Paths}
        !            50: When a filter or form file argument is given to an \MH/ program,
        !            51: and the name specified is not absolute (doesn't start with a \file{/\/}),
        !            52: then the \MH/ program will first check in the user's \MH/ directory.
        !            53: If the file is not present,
        !            54: then program will consult the standard \MH/ library for the file.
        !            55: This convention allows the PostMaster to make available system-wide
        !            56: templates and skeletons.
        !            57: 
        !            58: \subsection{MH Directory}
        !            59: If the \MH/ directory of a user doesn't exist,
        !            60: then \MH/ will query the user if it should be created.
        !            61: This is primarily useful when copying a \profile/ from one host to another,
        !            62: or when the site administrator creates a \profile/ for a user when creating
        !            63: the associated login.
        !            64: 
        !            65: \subsection{Documentation}
        !            66: Two new documents have been prepared for the \mh5 distribution:
        !            67: {\sl The Rand MH Message Handling System: Tutorial},
        !            68: which is cited as \cite{MH.TUT};
        !            69: and,
        !            70: {\sl The Rand MH Message Handling System: The UCI BBoards Facility},
        !            71: which is cited as \cite{MH.BB}.
        !            72: The former is a useful tutorial for novice users of \MH/.
        !            73: The latter describes BBoard handling and \MH/.
        !            74: 
        !            75: \section{Draft Handling}
        !            76: This section discusses how the handling of drafts has been changed in \mh5.
        !            77: 
        !            78: The most important change is that the {\it draft-folder} notation
        !            79: and the {\it push} option at \whatnow/ level have been explicitly made
        !            80: visible in the \MH/ system.
        !            81: There's a new profile entry called \eg{Draft-Folder} which defines the
        !            82: default draft-folder for the \MH/ user.
        !            83: By using this entry, such as \example Draft-Folder:\ +drafts\endexample
        !            84: the \MH/ user needn't add \switch{draftfolder\ drafts} to the entries
        !            85: for \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} in the user's
        !            86: \profile/ file.
        !            87: 
        !            88: \subsection{What Happens if the Draft Exists}
        !            89: A new option has been added to \pgm{comp}, \pgm{dist}, \pgm{forw}, and
        !            90: \pgm{repl} when the draft already exists: \eg{refile\ +folder}.
        !            91: This allows you to \pgm{refile} the draft into another folder and then get a
        !            92: fresh draft.
        !            93: 
        !            94: \subsection{Editing Environment}
        !            95: In previous versions of \MH/,
        !            96: when \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} allowed the user to
        !            97: edit the draft,
        !            98: the \MH/ user's current working directory was somewhere inside of the user's
        !            99: \MH/ directory.
        !           100: This often lead to confusing results.
        !           101: In \mh5,
        !           102: when the user edits a draft,
        !           103: the current working directory is unchanged.
        !           104: Furthermore, two envariables are defined during the editing session for
        !           105: \pgm{dist} and \pgm{forw}:
        !           106: \file{\$editalt},
        !           107: which is the name of the message (\unix/ file) being distributed or replied-to;
        !           108: and,
        !           109: \file{\$mhfolder},
        !           110: which is the name of the folder (\unix/ directory) containing the message
        !           111: being distributed or replied-to.
        !           112: 
        !           113: \subsection{Rapid Composition}
        !           114: The \pgm{prompter} command has two new switches \switch{rapid} and
        !           115: \switch{norapid}.
        !           116: If the \switch{rapid} option is given then \pgm{repl} won't display an
        !           117: existing body of the draft being edited.
        !           118: This is useful for using \pgm{forw} with a slow terminal.
        !           119: 
        !           120: \subsection{Ultra Rapid Composition}
        !           121: The \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} commands have a new
        !           122: option, \switch{noedit}.
        !           123: If \switch{noedit} is given,
        !           124: then the initial edit is supressed.
        !           125: This is useful for various canned applications
        !           126: (and perhaps more graceful than \switch{-editor /bin/true\/}).
        !           127: 
        !           128: \subsection{Digest Generation}
        !           129: The \pgm{forw} command has the beginnings of a digest-composition facility,
        !           130: with the \switch{digest\ list}, \switch{issue\ number},
        !           131: and \switch{volume\ number} switches.
        !           132: 
        !           133: If \pgm{forw} is given the argument \eg{list} to the \switch{digest} switch,
        !           134: and the \switch{issue\ number} switch is not given,
        !           135: then \pgm{forw} looks for a profile entry called
        !           136: \eg{digest-issue-list:} and increments its value to use as the issue
        !           137: number.
        !           138: Similarly,
        !           139: if the \switch{volume\ number} switch is not given,
        !           140: then \pgm{forw} looks for \eg{digest-volume-list:}
        !           141: (but does not increment its value) to use as the volume number.
        !           142: 
        !           143: Having calculated the name of the digest and the volume and issue numbers,
        !           144: \pgm{forw} will look for a profile entry called \eg{sedproc:}
        !           145: (which defaults to \pgm{/bin/sed\/})and filter the components file
        !           146: (as specified with the \switch{form\ formfile} switch)
        !           147: with the following definitions:
        !           148: \eg{@(digest)}, \eg{@(issue)}, \eg{@(volume)}, and \eg{@(date)}.
        !           149: 
        !           150: \tagdiagram{1}{Sample skeleton for digest composition}{digestcomps}
        !           151: A good components file to use, (which might be called \file{digestcomps\/}) is
        !           152: shown in Figure~\digestcomps.
        !           153: 
        !           154: \pgm{Forw} will now compose the draft,
        !           155: using the standard digest encapsulation algorithm
        !           156: (even putting a \eg{End of list Digest} trailer in the draft).
        !           157: Once the draft is composed by \pgm{forw},
        !           158: it writes out the volume and issue profile entries for the digest,
        !           159: and then invokes the editor.
        !           160: 
        !           161: \tagdiagram{2}{Sample template for digest messages}{mhldigest}
        !           162: Naturally, when composing the draft,
        !           163: the \pgm{forw} program will honor the\hbreak
        !           164: \switch{filter\ filterfile} switch,
        !           165: which is given to \pgm{mhl} to filter each message being forwarded prior to
        !           166: encapsulation in the draft.
        !           167: A good filter file to use, (which might be called \file{mhl.digest\/})
        !           168: is shown in Figure~\mhldigest.
        !           169: 
        !           170: \subsection{Replies}
        !           171: The \pgm{repl} command has two new switches \switch{query} and
        !           172: \switch{noquery}.
        !           173: If the \switch{query} option is given then for each address that would go in
        !           174: the \eg{cc:} field of the reply,
        !           175: \pgm{repl} asks the user if the address should be included.
        !           176: This is sometimes useful for replying to mail sent to a large number of people.
        !           177: (Obviously, one could simply edit the draft produced by \pgm{repl},
        !           178: but the \switch{query} option is useful if \pgm{prompter} is the editor used
        !           179: by \pgm{repl} and one doesn't want to invoke a second editor.)
        !           180: 
        !           181: Previous versions of \pgm{repl} would terminate if a \eg{From:} or
        !           182: \eg{Sender:} field was not found or could not be parsed.
        !           183: The \pgm{repl} program in \mh5 will continue to compose the reply draft,
        !           184: after advising you of this anomaly.
        !           185: 
        !           186: \subsection{Blind Carbon Copies}
        !           187: After much experimentation, \MH/ has finally stabilized on the format of
        !           188: blind-carbon-copies.
        !           189: As in \mh4, when \pgm{post} generates a draft for blind recipients,
        !           190: a new draft is composed with a minimal set of headers.
        !           191: In \mh5 however, the \eg{BCC-Disclaimer:} field is no longer used.
        !           192: Instead, the draft for the blind recipients contains the original message as a
        !           193: forwarded message.
        !           194: This more clearly identifies a blind-carbon-copy to the blind recipient.
        !           195: 
        !           196: \subsection{File Carbon Copies}
        !           197: A message draft can now have more than one folder listed in a \eg{Fcc:} field.
        !           198: Each folder should be separated by a comma, just like the addresses in a
        !           199: \eg{cc:} field.
        !           200: In addition, the folders listed in a \eg{Fcc:} field may use the
        !           201: relative-folder addressing notation
        !           202: (though this latter activity is not recommended).
        !           203: 
        !           204: \subsection{Refiling the Draft}
        !           205: At \whatnow/ level, there is a new option, \eg{refile}.
        !           206: This options takes any arguments acceptable to the \pgm{refile} program,
        !           207: and \pgm{refile\/}'s the message draft into the named folder(s).
        !           208: 
        !           209: \subsection{Annotations}
        !           210: If the \switch{annotate} switch is given to \pgm{dist}, \pgm{forw}, or
        !           211: \pgm{repl}, and the message is (re)moved by the user prior to the successful
        !           212: posting of the draft, the \MH/ program will not complain as before.
        !           213: Hence, users of the \eg{push} option at \whatnow/ level need not worry about
        !           214: asynchronous error messages.
        !           215: 
        !           216: \section{Other Changes}
        !           217: This last section describes the other more program-specific changes made to
        !           218: \MH/.
        !           219: 
        !           220: \subsection{Bursting}
        !           221: The bursting mechanism in \MH/ has been made sufficiently general to allow
        !           222: \pgm{burst} to work on forwarded messages and blind-carbon-copies in addition
        !           223: to digests.
        !           224: Although \pgm{burst} can not always successfully decapsulate messages
        !           225: encapsulated by sites not running \MH/,
        !           226: it handles forwarded messages and blind-carbon-copies,
        !           227: as constructed by \pgm{forw} and \pgm{send}, easily.
        !           228: 
        !           229: In addition, the \pgm{send} program has two new switches,
        !           230: \switch{forward}, and \switch{noforward}.
        !           231: If the \switch{forward} option is given,
        !           232: then if a \pgm{send} which has been \pgm{push\/}'d in the background fails,
        !           233: in addition to containing the reasons for the failure,
        !           234: the failure notice contains the draft as a forwarded message.
        !           235: This means one can simply \pgm{burst} the failure notice to get the draft
        !           236: back,
        !           237: instead of hunting around for it.
        !           238: 
        !           239: \subsection{Incorporation of Mail}
        !           240: There's a new profile entry called \eg{MailDrop} which can be used to define
        !           241: the default maildrop that \pgm{inc} should use.
        !           242: In addition, if the envariable \file{\$MAILDROP} is defined,
        !           243: then \pgm{inc} will use its value as the default maildrop.
        !           244: 
        !           245: The \pgm{inc} program also has a new option:
        !           246: \switch{truncate} and \switch{notruncate},
        !           247: which indicates if the maildrop should be truncated.
        !           248: By default, \switch{truncate} is used defualt maildrop is used,
        !           249: otherwise \switch{notruncate} is used.
        !           250: 
        !           251: \subsection{Clearing the Display}
        !           252: The \switch{ff} and \switch{noff} switches have been removed from the
        !           253: \pgm{scan} and \pgm{mhl} programs.
        !           254: Instead, the \pgm{scan} has been given two switches,
        !           255: \switch{clear} and \switch{noclear}
        !           256: (\pgm{mhl} already has these switches).
        !           257: The action of the \switch{clear} option is simple:
        !           258: if the standard output to the \MH/ program is a terminal,
        !           259: then the program will output the correct ``escape sequence'' to clear the
        !           260: terminal's screen;
        !           261: if the standard output is not a terminal,
        !           262: then the program will output a formfeed.
        !           263: 
        !           264: In addition,
        !           265: both \pgm{scan} and \pgm{mhl} consult the \file{\$TERM} envariable to
        !           266: determine such things as the length and width of your terminal.
        !           267: The \pgm{scan} program uses this to determine how long each line of the scan
        !           268: listing should be.
        !           269: The \pgm{mhl} program uses this to determine the default length and width
        !           270: of your terminal (instead of the $40$ by $80\/$),
        !           271: prior to reading the template or consulting command line options.
        !           272: 
        !           273: \subsection{Folder Handling}
        !           274: If the \pgm{folder} command is given the name of a folder that does not exist,
        !           275: \pgm{folder} will query the user if the folder should be created.
        !           276: This is useful for creating a folder that the \MH/ user intends to access
        !           277: later.
        !           278: 
        !           279: In previous releases of \MH/,
        !           280: the \pgm{rmf} program would consider a folder writable if it was writable by
        !           281: the user.
        !           282: Since \pgm{rmf} ultimately removes the folder itself,
        !           283: \pgm{rmf} considers a folder writable if the folder and its parent are
        !           284: writable by the user.
        !           285: If not, the folder is treated as a read-only folder by \pgm{rmf}.
        !           286: 
        !           287: \subsection{MailDrops}
        !           288: The name of the \pgm{pack} program has been changed to \pgm{packf}.
        !           289: The author didn't want to do this.
        !           290: Some people don't know when to leave well enough alone.
        !           291: 
        !           292: \subsection{Refiling}
        !           293: The \pgm{refile} program now has a \switch{draft} switch saying to file the
        !           294: current draft.
        !           295: 
        !           296: \subsection{RcvMail Support}
        !           297: In addition to the standard \pgm{rcvpack} and \pgm{rcvtty} receive mail hooks,
        !           298: and the \pgm{rcvtrip} shell script,
        !           299: there's a new rcvmail hook called \pgm{rcvdist}.
        !           300: The \pgm{rcvdist} hook allows a user of \MH/ to have his/her mail forwarded
        !           301: without the intervention of the PostMaster.
        !           302: (By the way, the \pgm{rcvpack} hook used to be called \pgm{rcvcron\/}.)
        !           303: 
        !           304: \subsection{Reading BBoards}
        !           305: The \pgm{msh} program (which used to be called \pgm{bbr\/})
        !           306: implements an \MH/ shell.
        !           307: In addition to the commands that the old \pgm{bbr} program had,
        !           308: \pgm{msh} also has the
        !           309: \pgm{inc}, \pgm{mhmail}, \pgm{pack}, \pgm{rmm} and \pgm{sortm} commands.
        !           310: 
        !           311: In addition, \pgm{msh} uses a ``maildrop mapping'' mechanism to
        !           312: significantly speed-up its start-up time compared to the old \pgm{bbr}.
        !           313: The \pgm{pack} program supports this mechanism as well,
        !           314: so \pgm{msh} starts quickly on ordinary \pgm{pack\/}'d files as well.
        !           315: 
        !           316: Finally, \pgm{mhl} is now built-in to \pgm{msh},
        !           317: so with a \eg{showproc} of \pgm{mhl},
        !           318: the \pgm{msh} user gets speedy response in listing messages.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.