[comp.mail.mh] MH drawbacks for computer-unexperienced users

psv@nada.kth.se (Peter Svanberg) (04/21/88)

I'm writing a user manual for email to be used by anyone who
have access to a computer terminal - i. e. some have very little
experience of computer use.

When documenting different mail systems (TOPS-MM, VMS-MAIL, UNIX-mail
and UNIX-MH) I realized that MH have some beginner drawbacks:

    * They are puzzled about the fact that all commands should be
      given from the shell. Solution: msh!? Oh no, we tried it but it
      seems to be poorly tested and not intended for use more than
      once. So, we wrote an own simpler MH-shell program.

    * The way you read new mail is strange: you must first do "inc",
      then "show" for the first letter, and "next" for the rest of
      the letters. Its easy to loose track of which letter you should
      read next, if you read an old letter amongst the new ones. Yes,
      there is an "unseen" feature but then you must read ALL unseen
      letters in a row. The other systems are easier (you just press
      return for the next letter).

      Solution: We made our shell run "inc" when started, and invented
      an own command "unseen" which runs "show" on the first letter in
      the sequence "unseen".

    * There is no way to include a file in a letter without the use of
      an editor. All the other systems have explicit commands to use
      a certain file as a draft or to insert a file.

      The closest I could get was "comp -file filename", but besides
      that this switch isn't parsed correctly (in MH 6.5; the filename
      is treated as if it was a message list), the file must be a
      "draft message", i. e. contain header lines, or else the
      prompter program doesn't like it. Then you must copy the file
      you want to include to a new file, and edit it to put the header
      lines (and an empty line) in. Not easy-to-use!

      The best, I think, would be to add an "insert" command to the
      whatnow program.

Have I missed some feature that could solve some of the above
problems? Send me a email and tell! (I'll sum up later.)

Are there plans to solve these problems? Have you experienced other
problems with MH and computer beginners? Post a comment to the net!
---
psv@nada.kth.se			(should work!)		Peter Svanberg
psv%nada.kth.se@uunet.uu.net	(for lazy nodes...)	Dept of Num An & CS
							Royal Institute of Tech
							Stockholm, SWEDEN

ralf@B.GP.CS.CMU.EDU (Ralf Brown) (04/24/88)

In article <336@draken.nada.kth.se> psv@nada.kth.se (Peter Svanberg) writes:
}    * The way you read new mail is strange: you must first do "inc",
}      then "show" for the first letter, and "next" for the rest of
}      the letters. Its easy to loose track of which letter you should

I use the following self-modifying alias:

	alias inc "alias n 'show ; alias n next' ; 'inc'"

Then I can just type 'n' each time I want to see the next message (including
the first).

}---
}psv@nada.kth.se			(should work!)		Peter Svanberg
}psv%nada.kth.se@uunet.uu.net	(for lazy nodes...)	Dept of Num An & CS

-- 
{harvard,uunet,ucbvax}!b.gp.cs.cmu.edu!ralf -=-=- AT&T: (412)268-3053 (school) 
ARPA: RALF@B.GP.CS.CMU.EDU |"Tolerance means excusing the mistakes others make.
FIDO: Ralf Brown at 129/31 | Tact means not noticing them." --Arthur Schnitzler
BITnet: RALF%B.GP.CS.CMU.EDU@CMUCCVMA -=-=- DISCLAIMER? I claimed something?

deford%linus%mitre-bedford.arpa@ICS.UCI.EDU (04/24/88)

It seems to me that you need to read the MH user's manual.  MH provides 
alot of great features, one of which is the fact that you do not have to 
get into a mail program to look at messages - they are all accessable to 
unix commands.  Though this may seem strange at first to those used to 
using mail, I feel that it is one of the better features of mh.  

As far as inc - why not take a look at the man page for mhook.  It explains
a way to have sendmail use an mh program (slocal) to deliver mail automatically.

for including a message in a composition use "comp -form formfile".  Also, if
there is more that you want to include try looking at the files replcomp, 
distcomp, components, and forwcomp.  All these are explained in the manual.

Good luck,

-------
	Kevin

(  Eat, Drink, and be Merry - for tommorrow you may be in Utah )

mesard@bbn.com (Wayne Mesard) (04/26/88)

From article <336@draken.nada.kth.se>, by psv@nada.kth.se (Peter Svanberg):
> 
>     * They are puzzled about the fact that all commands should be
>       given from the shell.

No argument from me.  This is puzzling to new users.  Especially, those
who've used another mail system like MM.  But rather than succumb to the
temptation to protect novices from this interface, why not explain the
rationale behind it.

Specifically:

 o They need not bounce in and out of a mailer every time they want to
   read a message.

 o By using the shell, we have access to the full power of the shell.
   This needn't be a lengthy, complicated discussion, just a few
   examples of how easy it is to customize the mail reading environment
   and create new "commands" that are as cryptic or helpful as the
   individual user desires.  For example,

	alias rmn "rmm; next"
	alias new-mail "inc; show"

   A simple discussion, loaded with examples can be an advertisement for
   UNIX as well as MH.  But...

 o There are a lot of features in MH which the casual user shouldn't be
   bothered with, since most people "just want to read their mail".*  The
   solution: a brief synopsis of the few commands they need and maybe a
   few aliases in a default .cshrc file (to protect them from the
   UNIXness of MH)  AND a pointer to finding out more if they're 
   interested (e.g. "<cmd> -help" and "man mh").

>     * There is no way to include a file in a letter without the use of
>       an editor.

"forw -file <fn>" works for me.

----
  * The words of more than one recalcitrant user after hearing my 5 minute
    sermon on why MH is the greatest thing since toast.

-- 
unsigned *Wayne_Mesard();                     MESARD@BBN.COM
                                              BBN Labs, Cambridge, MA
"All systems of useful complexity contain
 software errors."
               -The Eastport Report, p.14

psv%nada.kth.se@ICS.UCI.EDU (Peter Svanberg) (04/26/88)

First of all: Did you send to psv%nada.kth.se@uunet.uu.net and something
somewhere changed it to psv@uunet.uu.net? I really don't see how this
last address could reach me! Try "psv@nada.kth.se" also, next time.

> It seems to me that you need to read the MH user's manual.

I have!

> MH provides 
> alot of great features, one of which is the fact that you do not have to 
> get into a mail program to look at messages - they are all accessable to 
> unix commands.  Though this may seem strange at first to those used to 
> using mail, I feel that it is one of the better features of mh.  

I think MH is very nice to use, and I have no problem with the no
special- program-feature. My and others experience, though, are that
people who are not computer-experienced find that unusual and strange.
They want a special "mail room" to enter, reducing the number of
possible commands. It is also more difficult to teach them how to get
specific help if you don't have a special program with a help command
in it (and perhaps recognition).  (And don't tell me that the manual
information is usable for those people!)

> As far as inc - why not take a look at the man page for mhook.  It
> explains a way to have sendmail use an mh program (slocal) to deliver
> mail automatically.

As I explained, I compared with some other systems. In none of those I
had the mentioned problems. Why should you have to make special
arrangements with strange ".forward"-files etc in MH? The user manual
I'm writing should be possible to use without too much special
arrangements on top of standard MH. (Besides this, aren't you losing
"You have mail"-messages when you use slocal?)

> for including a message in a composition use "comp -form formfile".

Yes, but I want a FILE of any sort, for example a source code.
(NOT containing mail headers!)

> Also, if there is more that you want to include try looking at the
> files replcomp, distcomp, components, and forwcomp.  All these are
> explained in the manual.

I know of them, too, be sure.


Well, I suppose one can say that MH is more for hackers than for
novice users.
---
psv@nada.kth.se			(should work!)	       Peter Svanberg
uunet!nada.kth.se!psv		(for lazy nodes...)    Dept of Num An & CS
psv%nada.kth.se@uunet.uu.net	(ARPA nodes)	       Royal Institute of Tech
						       Stockholm, SWEDEN

deford%linus%mitre-bedford.arpa@ICS.UCI.EDU (04/26/88)

It seems to me that when you say "not computer-experienced" then why would
they expect to end up in a mail "shell"?  If it is true that they are just
beginning, I would believe that is a good time to teach someone MH.  I can
see the problem with people that are "computer experienced" as in have used 
a previous mailer that was a "shell".  But then they should have only a small
problem learning MH since they are used to mailers in general.  But I can see
your point.  

As far as slocal related things, the .forward file and a default .maildelivery
file could always be put in a new person's account.  Then use the program
rcvtty to notify them when new mail arrives (sort of like biff).  This would
at least eliminate the person having to figure all of that out by themselves.

I don't mean to sound condescending, I guess I never found other mailers any
more friendly then MH.  True, the basic commands of reply, compose, and show
where pretty straight forward - but then again, so are MH's.  The real problem
is just getting someone to try MH - since most people just do not want
to have to learn something new.  

-------
	Kevin

(  Eat, Drink, and be Merry - for tommorrow you may be in Utah )

mmorse@NOTE.NSF.GOV (Michael Morse) (04/28/88)

   I manage an MH-based mail system with about 900 users, many who are
not considered computer-literate.  Our experience has been
overwhelmingly positive, but MH is like any good UNIX program--it is
useless to novices as it comes out of the box.  However, it is
flexible enough that it can be configured to be extremely easy to use,
and then the power is there to satisfy users when they become more
experienced.  One problem you will have is the full screen editor,
which will probably be the hardest thing for your users to master.
In my experience this applies to almost all screen editors accessed
from terminals.  People have been spoiled by the ease-of-use standard
set by the PC's.  Another problem is the documentation which you will
have to re-write for people not accustomed to the UNIX-style of
documentation (which is almost everybody, unfortunately).

>    * They are puzzled about the fact that all commands should be
>      given from the shell. Solution: msh!? Oh no, we tried it but it
>      seems to be poorly tested and not intended for use more than
>      once. So, we wrote an own simpler MH-shell program.

   The solution I took was to set up new logins with a
very restricted UNIX path.  The main problem we had was people
trying to abbreviate commands which is common on other systems.  If you
don't change their path, many will enter "sh" instead of "show", and
you'll be answering phone calls for help for the rest of your life.
Many UNIX purists gave me a lot of grief over this decision, but it has
been very successful.  Our naive users start with a path containing
just /usr/local and another directory in which we put site-specific
commands. 

   We thought of writing a shell, but it tends to be either overly
restrictive (people can't pipe commands into other commands), or it
gets so complicated that you've ended up writing and maintaining
something as complicated as the C-shell.  

   Msh seems to be customized for bulletin boards.  I don't think it
can be used for regular mail.

   Another thing we did is probably not applicable to other
sites, but has been very successful here.  We were lucky in that all
of our users have PC's and use the same terminal emulator (Reflection
1).  This program allows us to download function key labels and
meaning.  When they first log on, we download 8 of the most common MH
commands.  As they use commands, we update the labels as appropriate.
This has been enormously complicated to maintain, but it gives the
users a sort of menu, which MH does not have.  This has been extremely
popular with both naive and experienced users.  For example, F2 on
the PC is defined as "rmm;next", perfect for moving through your mail.

   The function key labels also allowed us to provide a screen editor that
can be used without any training.  We use JOVE, but when we enter JOVE
we set up the labels with 8 of the most common editing functions.
This provides a surprisingly powerful editor that requires no user
training.  Originally we did the whole thing with shell scripts, but
have since re-written a lot in C to avoid the performance penalty.

>    * The way you read new mail is strange: you must first do "inc",
>      then "show" for the first letter, and "next" for the rest of
>      the letters. Its easy to loose track of which letter you should
>      read next, if you read an old letter amongst the new ones. Yes,
>      there is an "unseen" feature but then you must read ALL unseen
>      letters in a row. The other systems are easier (you just press
>      return for the next letter).

   This hasn't really been a problem here, but then the function keys
help us here, since "show" and "next" are up on F1 and F3.  I guess
our users just use "scan" a lot.  The concept of the "current" message is
pretty important, so you'll want your users to grasp why "show" and
"next" are different.

>    * There is no way to include a file in a letter without the use of
>      an editor. All the other systems have explicit commands to use
>      a certain file as a draft or to insert a file.

   We use a good number of commands that we've written to be invoked
from the "what now?" prompt.  They are easy to write, and again,
many of them are trivial shell scripts.  For example, our users can
invoke the following at "what now?":

     edit includefile   - append a UNIX file to the draft
     edit spelling      - invoke ispell on the text of the message
     edit include       - append the letter being replied to, with
                          the text offset with "> "
     edit attach        - append a PC file (text or binary) to the
                          message
     edit header        - use a menu to modify the header, and lookup
                          names
     edit encrypt       - encrypt the text of the message

   Some of these may be stretching the idea of an "editor", but people
seem to have grown accustomed to it.

  We publish a "quick reference" card that includes all these, which I
recommend that all sites do.  It's been very popular and I keep an
ever disappearing pile of them on my desk.

>Have I missed some feature that could solve some of the above
>problems? Send me a email and tell! (I'll sum up later.)

   Some other things we have done:  

  * We've put a front end on "reply"
    that checks to see if there are multiple recipients and then prompts
    for who the reply should go to (all recipients or just the sender).
    This avoids teaching a lot of options.

  * We've written a bunch of commands for manipulating messages.  For
    example, "printonpc" prints the specified messages on a users PC
    printer.  Again lots of times these are just trivial shell scripts.  

  * We have a couple of different commands for downloading messages to 
    PC files.

  * We have a variant of reply (repli) that includes the message
    being replied to in the draft.

   We try to keep the MH flavor with most of the commands we write.
It is very easy to do this with MH, since you can just invoke the real
MH commands to do the real work.  This makes it easy to
handle all the variations of message specifications, so things like
"printonpc +sent last:20" will work.

   The most ambitious undertaking we did to make the system easy for
inexperienced users was writing a command called "profile."  Originally 
I would give people assistance by telling them things like "put the
following in your .mh_profile file."  However for non-technical
people, such a task may not be easy.  So we picked
out the MH (and UNIX)  options that people would be most interested in
and wrote a program that knows how to turn them on.  Users of the
profile program think that there is some "profile" kept somewhere that
describes how the system should behave for them, but it's really a
charade.  The profile program simply reads and updates the appropriate
initialization file for the feature, whether it is .mh_profile or
.login or .joverc, or whatever.  Here is a list of the various options
that can be accessed in profile (this is about what I see when I execute the
command):

     note> profile
     One moment please ...
     Profile entries:
     
      *** bboards ***
      1 bboards-of-interest          : note-info mh-workers
             info-unix unix-wizards liaison
      2 check-bbs-at-login           : no
     
      ***  mail   ***
      3 signature                    : Michael Morse
      4 formatted-show               : yes
      5 skip-existing-text           : yes
      6 mail-forwarding-address      : (none)
      7 draft-folder                 : yes (+drafts)
      8 file-copy-comp               : +sent
      9 file-copy-repl               : +sent
     10 file-copy-forw               : +sent
     11 bcc-prompt                   : no
     12 verbose-send                 : yes
     
      *** editing ***
     13 scroll-step                  : 12
     14 right-margin                 : 72
     15 initial-mail-editor          : prompter
     16 next-mail-editor             : vi
     
      *** system  ***
     17 unix-commands-subset         : no
     
     Enter command (Explain, Update, List, or <RETURN> to exit): 

   As an example of how this works: if a user thinks item 8 (file-copy
comp) might be interesting, they would choose the "explain" option
that would tell them that this item allows them to keep a copy of
every message generated with the "comp" command in a folder which is
the thing to the right of the colon.  If they choose "update", the
program will prompt them for the folder name, do some edit checks,
and then either create a components file or add the line 
"Fcc: folder" to the header of the existing one.  All the options work
the same way, except they may access different files.  Of course the
program must be smart enough to determine the existing condition of
each item, which is why it says "just a moment" at the beginning.

>Are there plans to solve these problems? 

   I doubt it.  Since Marshall Rose went on to better things, MH has been
without a developer or even maintainer.  This sounds bad, but it does
have some advantages.  You are pretty much free to hack the heck out
of the source code without worrying that you'll have to put all those
changes into the next release!   :-)

--Mike

Michael Morse                           Internet: mmorse@note.nsf.gov
National Science Foundation               BITNET: mmorse@NSF
                                       Telephone: (202) 357-7659

allbery@ncoast.UUCP (Brandon Allbery) (05/05/88)

As quoted from <23864@bbn.COM> by mesard@bbn.com (Wayne Mesard):
+---------------
| From article <336@draken.nada.kth.se>, by psv@nada.kth.se (Peter Svanberg):
| >     * There is no way to include a file in a letter without the use of
| >       an editor.
| 
| "forw -file <fn>" works for me.
+---------------

"forw" in MH 6.5 #45[UCI] of Tue Jul  8 11:38:00 PDT 1986 doesn't grok a
"-file" argument.  Or at least, so it tells me in "forw -help"....

A simple solution to this is to write a custom "whatnow" and add a new
command:

	"incl [-prepend] {-file file|[+folder] message}"

"Whatnow" is, of course, simply a "shell":

	while ${EDITOR} ${draftmsg}; do
		echo "What now? \c"
		read cmd
		case "$cmd" in
		# the various commands
		esac
	done

(Of course, it's actually in C, and the default whatnow is built into many
MH commands, but this is the basic idea.)  A C program could be written to
do this (at a slight speed penalty) and add an "incl" command rather easily;
I may actually do this in the future.  (Most often, when I want to include
a file I'm really sending a form letter reply; in this case, the best way
to handle it is to set up a reply template and send the reply with e.g.
"repl -form arch-form-letter".)

BTW, for those interested:  Back when I first joined this group (it was
still a mailing list then), someone asked how to "boxify" messages.  I had
it kluged then, now I have a "proper" technique.

(~/Mail/mhl.reply)
----------------------------------- cut here -----------------------------------
:+---------------
body:component="| ",compwidth=0,formatfield="%<(null)| %|%(putstr)%>"
:+---------------
:
----------------------------------- cut here -----------------------------------

The only problem is that it sometimes starts a "component" in a very strange
place in the middle of a line, usually splitting a word squarely in half.
I've no idea why it happens.
-- 
	      Brandon S. Allbery, moderator of comp.sources.misc
	{well!hoptoad,uunet!marque,cbosgd,sun!mandrill}!ncoast!allbery
Delphi: ALLBERY						     MCI Mail: BALLBERY

mesard@bbn.com (Wayne Mesard) (05/09/88)

From article <7709@ncoast.UUCP>, by allbery@ncoast.UUCP (Brandon Allbery):
> As quoted from <23864@bbn.COM> by mesard@bbn.com (Wayne Mesard):
> +---------------
> | From article <336@draken.nada.kth.se>, by psv@nada.kth.se (Peter Svanberg):
> | >     * There is no way to include a file in a letter without the use of
> | >       an editor.
> | 
> | "forw -file <fn>" works for me.
> +---------------
> 
> "forw" in MH 6.5 #45[UCI] of Tue Jul  8 11:38:00 PDT 1986 doesn't grok a
> "-file" argument.  Or at least, so it tells me in "forw -help"....

Indeed you are right.  "forw -help" tells me the same thing.  It's not
in the man page either.  Nonetheless, "forw -file <fn>" does work.  

There's an old wives tale that says it's aerodynamically impossible for
bees to fly.  What they don't know...eh?

forw -help
syntax: forw [+folder] [msgs] [switches]
  switches are:
  -[no]annotate
  -draftfolder +folder
  -draftmessage msg
  -nodraftfolder
  -editor editor
  -noedit
  -filter filterfile
  -form formfile
  -([no]forma)t
  -[no]inplace
  -digest list
  -issue number
  -volume number
  -whatnowproc program
  -nowhatnowproc
  -(help)

version: MH 6.5 #63[UCI] (lf-server-2) of Thu Dec 10 12:17:18 EST 1987
options: [BSD42] [TTYD] [DUMB] [SUN] [OVERHEAD] [MHRC] [MHE] [MMDFMTS]
         [MMDFII]

-- 
unsigned *Wayne_Mesard();                     MESARD@BBN.COM
                                              BBN Labs, Cambridge, MA
"Who needs clover leaves when we've got 
rotories?  Who needs rotories when we've
got cyanide?"

schmitz@hpscdc.HP.COM (John Schmitz) (05/10/88)

> "forw" in MH 6.5 #45[UCI] of Tue Jul  8 11:38:00 PDT 1986 doesn't grok a
> "-file" argument.  Or at least, so it tells me in "forw -help"....

MH 6.5 has it; it just doesn't tell you with -help because you don't
normally use it.  "-file" is usually only used by msh.

bd@HPLABS.HP.COM (bob desinger) (05/10/88)

>> * There is no way to include a file in a letter without the use of
>>   an editor.
> A simple solution to this is to write a custom "whatnow" and add a new
> command ...

Yes, or you could use this enclosed shar.  Yes, you have to run an
"editor," but it's not like you get bopped into an interactive
session; it's more an editor in the style of `sed.'  To use it:

1.  Unpack it into some directory in everyone's $PATH.

2.  At the What Now prompt, type:

	e attach file

    where "file" is the name of the file you want to include.
    The `attach' command name could be changed easily (via `mv') to
    `include' or whatever you prefer.

3.  Now you'll see another What Now prompt.  Type `p' or whatever you
    normally type to send the letter off.  If you want to edit the
    file with your usual screen editor at this point, type:

	e vi		or		e emacs

    or else put an entry in your .mh_profile to the effect of:

	attach-next: vi

No, it's not intuitive.  However, it gets the job done quickly.
-- bd

#! /bin/sh
# This is a shell archive.  Remove anything before this line,
# then unwrap it by saving it in a file and typing "sh file".
#
# Wrapped by bd at hpsemc on Mon May  9 23:33:58 1988
# Contents:
#	attach 	

PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:$PATH; export PATH
echo 'At the end, you should see the message "End of shell archive."'


echo Extracting attach
cat >attach <<'@//E*O*F attach//'
: append editor for mh -- /jlr and bd

case $# in
1)	msg=$1; echo -n 'Append file(s):  ' 1>&2; read appendix;;
2)	msg=$2; appendix=$1;;
*)	echo 1>&2 "Usage:  `basename $0` [file]"; exit 1;;
esac

for arg in $appendix
do
	if [ -f $arg -a -r $arg ]	# exists; non-directory; readable
	then
		echo 1>&2 \"$arg\" 	# yell the file name out
		cat </dev/null $arg >>$msg
	else
		echo 1>&2 "`basename $0` $arg:  Sorry."
	fi
done
@//E*O*F attach//

set `wc -lwc <attach`
if test $1 -ne 18 -o $2 -ne 75 -o $3 -ne 420
then	echo ! attach should have 18 lines, 75 words, and 420 characters
	echo ! but has $1 lines, $2 words, and $3 characters
fi
chmod 755 attach

echo "End of shell archive."
exit 0

ted%braggvax.arpa@ICS.UCI.EDU (05/10/88)

>Date: 5 May 88 01:13:40 GMT
>From: Brandon Allbery <mandrill!hal!ncoast!allbery%decvax.dec.com@ICS.UCI.EDU>

>"forw" in MH 6.5 #45[UCI] of Tue Jul  8 11:38:00 PDT 1986 doesn't grok a
>"-file" argument.  Or at least, so it tells me in "forw -help"....

Give it a try anyway.  It's not documented in the -help for our forw either
(6.5 #46), but it works anyway.

				Ted Nolan
				ted@braggvax.arpa

schmitz@hpscdc.HP.COM (John Schmitz) (05/11/88)

> The only problem is that it sometimes starts a "component" in a very strange
> place in the middle of a line, usually splitting a word squarely in half.
> I've no idea why it happens.

I have some idea.  I believe that uip/mhlsbr calls sbr/m_getfld when
it is working on the body of the message.  m_getfld does not always
return a buffer that ends on a newline.  Before each call to m_getfld,
mhlsbr puts out the "component" before getting a new buffer from
m_getfld.  That's where the extraneous component comes in.  The
following diff to sbr/mhlsbr.c may fix your problem.  No guarantees,
of course.

204a205
> static int  body_entered;
726a728
>     body_entered = 0;
1102c1104,1106
< 	putstr (c1 -> c_text ? c1 -> c_text : c1 -> c_name);
---
> 	if (flag != BODYCOMP || body_entered == 0)
> 	    putstr (c1 -> c_text ? c1 -> c_text : c1 -> c_name);
> 	if (flag == BODYCOMP) body_entered = 1;