Subject: Inconsistent Menu Interfaces

From: [email-masked] (Tigerden System Admin)
Date: 25 Apr 1996 15:26:23 GMT

I installed pine/pico on our system as an easy-to-use package way back
over 2 year ago.  For the most part, I really like its functionality. 

However, I am increasingly annoyed at it's inconsistent interface. 
Indeed, I often find myself cursing it out loud. 

To leave a menu, some places it's ^X, some ^C, others E, or Q.  Help in
some places is '^G', others '?'

In a pine browser or attachment viewer trying to get back out.. I hit
'E'.. but if you do that an extra time, you get 'Export file' to which you
have to answer ^C.  I also use many unix programs such as 'more' and 'tin'
which use 'space' to move forward a page and 'b' for backing up.  Pine is
*just* similar enough going forward to be comfortable, but 'b' gets you
'Bounce mail to:'.  'tin' also uses 'q' to quit whatever you are doing in
nearly all cases, so often in 'pine' I find I hit 'q' at inappropriate
spots (like reading a letter and wanting the index a-la tin), to which I
get an offer to leave. For some reason, I'm conditioned to answer 'y' to
things if I know I've made no edits, so I am continually either dumping
myself *out* of pine, or screaming 'NO!!' out loud as I hit 'n' to cancel
the "Really quit pine?' prompt. AAAAARGH!!...IT'S MADDENING!

It's like no one who wrote this mess ever heard of the ESCAPE key!  Even
is some very old DOS-based program, simple, but consistent menues were
made with one set of rules:  You want to quit what you are doing, or go up
a level, press ESCAPE.  If you've made changes to something, you get a
confirmation prompt to save or ignore changes.  If you press ESCAPE there,
the prompt goes away, and you are left where you were.  Easy...consistent! 

I've heard (and *have* myself) gripes about how pine takes forever when
building a folder list if you are using an NNTP server and the server is
down.  ESCAPE can be a simple fix here too:  Throw up an 'UPDATING
NEWSGROUPS - Esc to cancel' message while pine is trying to get info from
the NNTP server, and the user can skip that step if the delay is too long. 
ESCAPE aborts the news folder building activity and leaves you with your
local folders, which is often all that you want anyway. 

PLEASE Pine Team, give some thought to that (mostly) unused ESC key
sitting there on even the dumbest terminals to produce a nice, simple menu
naviagtion method.

Anyone else agree?

George Nemeyer
System Administrator
Tigerden.com

Good intentions will always be pleaded for every assumption of authority. 
It is hardly too strong to say that the Constitution was made to guard the
people against the dangers of good intentions.  There are men in all ages
who mean to govern well, but they mean to govern.  They promise to be good
masters, but they mean to be masters.   ---  Daniel Webster

---

From: Terry Gray <[email-masked]>
Date: Sat, 27 Apr 1996 14:27:32 -0700 (PDT)

George,
I've interspersed a few comments...

> To leave a menu, some places it's ^X, some ^C, others E, or Q.  

The goal is for ^C to be used when you've changed your mind about doing
something and want to abandon or cancel an action previously taken.  ^C
wouldn't be the "normal" way out of any screen.

In text-input situations, where control characters must be used because
regular characters would be treated as part of the message or name being
composed, ^X is the normal eXit key.

I'll talk about E in a minute, but Q uniformally means quit the program
completely; it is never used to exit a particular screen.  This may not be
consistent with how other programs use Q, but I think it is consistent
within Pine.

> Help in me places is '^G', others '?'

^G should work anywhere for Help (if you find an exception let us know; 
it's an oversight). ? works wherever it would not be confused as text
input.  (The other alternative is to have "modal" editing, where you go
into a special mode to input characters, but that has its own set of
problems.) 

> have to answer ^C.  

This is an area that I completely agree with you: "E" is far too
overloaded.  In Pine 4.0 we're going to try to provide a more consistent
way to navigate up/down the screen hierarchy to mitigate this problem
somewhat.

> I also use many unix programs such as 'more' and 'tin'
> 'Bounce mail to:'. 

Finding enough keys for the required functions is a real challenge,
especially if two of your design goals were (1) to have most functions
done with a single keystroke, and (2) to not distinguish between upper and
lower case command keys. 

> 'tin' also uses 'q' to quit whatever you are doing in

People who have not been corrupted by tin's behavior don't complain about
this :) :)
 
> the prompt goes away, and you are left where you were.  Easy...consistent! 

I assure you that everyone on the Pine team has heard of the ESCAPE key. 
Folks who grew up with PCs on their desk sometimes forget that Unix
programs have to live with different constraints.  Two points: 1) unlike
PCs, on Unix systems the accepted "escape" key has been control-C for
decades.  "vi" introduced ESC as an alternate to ^C, but I believe ^C
usage predates vi by quite awhile. 2) unlike PCs, interactive Unix
programs are constrained to use ASCII characters for their commands, and
the ASCII ESC character is used to encode things like cursor/arrow keys.
So in order to distinguish ESC as a single character, from ESC as the
first byte of an escape sequence representing, it would be necessary to
make timing-dependent decisions which would introduce complexity
and latency (reducing responsiveness).  Note that while "vi" lets you use
ESC, you can only use arrow keys when you're not in edit/insert mode (at
least on the version I use.)

So while I think it would be fine in principle to use ESC as you describe,
the world can be an ugly place and good ideas are not always achievable. 
 
> local folders, which is often all that you want anyway. 

Introducing a way to interrupt/cancel long operations is something we've
wanted to do for a long time.  We've done so in a few situations.  We
haven't done so in others because of the difficulty in finding a safe way
to interrupt certain network operations that will work across a wide
variety of Unix systems.  We've tried several approaches only to discover
that they don't work on some of the Unix variants we need to support.
So again, we agree with the goal (independent of whether the interrupt key
is ^C or ESC), but implementing the idea isn't as easy as it looks.
 
> sitting there on even the dumbest terminals to produce a nice, simple menu

I'm not sure whether the code structure would permit making ESC be an
alias for ^C in PC-Pine (we can look into that), but I wouldn't hold out
much hope for Unix Pine, for the reasons cited above.
 
-teg

---

From: kremžská HOŘČICE <[email-masked]>
Date: Sun, 28 Apr 1996 04:43:19 +0200

On 27 Apr 1996, Terry Gray wrote:

> >  You want to quit what you are doing, or go up
> > a level, press ESCAPE.
> 
>  2) unlike PCs, interactive Unix
> and latency (reducing responsiveness).

    And not only that, it probably Won't Work unless you are on the local
machine.  I had the misfortune of trying to use Micro-Emacs over a telnet
session and it was very common that my packets in which I typed an arrow
key (ESC [ A or similar) arrived at the remote host in such a way that the
ESC was separated in time from the remaining characters, resulting in the
printing characters appearing in the text.  You cannot imagine what a
relief it was when I installed the real Emacs on that machine.

    Basically, unless you are on the local machine, all assumptions about
timing should be thrown out the window.

>  Note that while "vi" lets you use

    Well, the versions I have here supposedly allow you to do both.
However, I find myself frequently logged into the server over the local
ethernet, from which responsiveness and timing should not be so much a
problem as with long-distance telnet, yet typically one arrow keystroke
out of ten would result in a vi-BEEP and no cursor movement, or insertion
of unintended characters and a mode switch.

    I have learned the least-common-denominator practice of using ^N and
^P in place of the down- and up-arrows, which are common to all the
editors I use frequently here (Emacs, Pico, and vi), but unfortunately ^B
and ^F, while common to Pico and Emacs, have entirely different meanings
in vi and I usually find myself somewhere completely different in the text
than I was planning to be, meaning I have to *think* while I am working.
Grrrr.  What a pain.

    So in short, trying to interpret the ESC key as something different
from a function or arrow key is practically guaranteed to fail except on
the local machine.

> the world can be an ugly place and good ideas are not always achievable. 

Barry Bouwsma  <[email-masked]>
in an ugly place, fershure

---

From: [email-masked] (Peter J. Weyers)
Date: 26 Apr 1996 18:25:25 GMT

Tigerden System Admin ([email-masked]) wrote:

: To leave a menu, some places it's ^X, some ^C, others E, or Q.  Help in
: some places is '^G', others '?'

Yes, I find this anoying too.

: myself *out* of pine, or screaming 'NO!!' out loud as I hit 'n' to cancel
: the "Really quit pine?' prompt. AAAAARGH!!...IT'S MADDENING!
RTFM (sorry). You can disable the question almost everywhere, with good 
possibility to select.

: PLEASE Pine Team, give some thought to that (mostly) unused ESC key
: sitting there on even the dumbest terminals to produce a nice, simple menu
: naviagtion method.

Well, as the ESC-Key on many X-Terminal is somewhat hidden and/or 
unconveniant to access, I'd like other keys more ...

Peter