Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!watmath!clyde!cbatt!cbdkc1!gwe
From: g...@cbdkc1.UUCP ( George Erhart x4021 CB 3E373 DEBR )
Newsgroups: net.micro.mac
Subject: Porting UNIX Applications to the Mac
Message-ID: <1572@cbdkc1.UUCP>
Date: Fri, 12-Sep-86 07:56:57 EDT
Article-I.D.: cbdkc1.1572
Posted: Fri Sep 12 07:56:57 1986
Date-Received: Sat, 13-Sep-86 05:03:42 EDT
Reply-To: g...@cbdkc1.UUCP ( George Erhart x4021 CB 3E373 DEBR )
Organization: AT&T Bell Laboratories, Columbus
Lines: 18


I am currently involved in a second try to port Dave Betz' SDB (Simple
DataBase) to the Mac. The first try was using Megamax C and it was 
far from successful. The second is with LightSpeed C and it too
is having problems.

My plan was to port the UNIX version straight out, get it running, and then
convert it into a Mac Application. (You know ... menus, dialog boxes, fonts,
etc ...) Unfortunately, it appears that most Mac C compilers do not come
with very good libc.a implementations. The one for MegaMax was full of
bugs.  I am still having random crashes in the token parsing stuff from 
the LSC version.

Does anyone else have any comments or experience with this kind of porting?

-- 
George Erhart at AT&T Bell Laboratories Columbus, Ohio 
614-860-4021 {ihnp4,cbosgd}!cbdkc1!gwe

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!lll-crg!hoptoad!tim
From: t...@hoptoad.uucp (Tim Maroney)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <1091@hoptoad.uucp>
Date: Mon, 15-Sep-86 05:09:35 EDT
Article-I.D.: hoptoad.1091
Posted: Mon Sep 15 05:09:35 1986
Date-Received: Mon, 15-Sep-86 18:36:01 EDT
References: <1572@cbdkc1.UUCP>
Reply-To: t...@hoptoad.UUCP (Tim Maroney)
Organization: Centram Systems, Berkeley
Lines: 70

This issue is going to become more and more important as the UNIX Mac is
released.  Apple has committed themselves to preserving the Mac interface
while also supporting UNIX(tm).  But my gremlins (actually, experience with
the Mac Programmer's Workshop) report that they don't really have a complete
or general paradigm for doing this yet.  I'd like to see some discussions on
how this ought to be done.

Briefly, the problem is this.  On the Mac, all user applications are graphic
applications.  On UNIX, very few applications use graphics beyond those
attainable on a hardcopy character-graphics terminal.  While the flexibility
of the UNIX system for an expert programmer has never been approached by any
other operating system, it is notoriously unfriendly and mystifying to naive
users.  This is too bad, because many of its applications, such as grep,
would be very useful to any user at any level of experience.

Most bitmapped UNIX systems just ignore the problem and pretend that it is
sufficient to use bitmapped output devices to provide multi-window terminal
emulators.  The Mac shows that this is not true, that for user interfacing
every application should be a graphics application, that the presentation of
options to the user as controls and menu items achieves much more user
friendliness.  But this leaves open the issue of integrating the existing and
extremely high-quality UNIX system into the Mac's graphics-intensive
environment.

To make matters worse, it is impossible to just change the applications to
use a bitmapped user-friendly interface.  One of the great strengths of UNIX
is the ability to create multi-process programs, even on the fly, by using
pipes and i/o redirection to chain together multiple programs.  This is made
possible only because of the use of a character-stream, non-graphics
interface for most applications.  If this is lost, then no way is it UNIX.
But if it is retained as a user interface, no way is it either Mac-like or
novice-friendly.

To take a concrete example, the grep program provides an extremely useful
search facility.  On the Mac, it should be a dialog box allowing
specification of a range of files to search (using an extended standard file
interface) and a regular expression to search for, with help windows to
explain the use of regular expressions.  If this is the only interface, it
becomes impossible to use grep in multi-process programs.  So it would
appear that both interfaces need to be retained, but in different contexts;
and this is true not only of grep, but of most other applications as well.

There seem to me to be two basic options for solutions to this problem (or
to put it in the usual jargon, this is the top level of the decision tree).
First, we may modify the existing UNIX applications.  Second, we may make
some sort of separate input/output filter for each application.  In either
case, we need some way of detecting the type of the input, output, and error
channels, which may be tty (or pseudo-tty) windows, pipes, files in the file
system, or bitmapped i/o systems.  A simple ioctl will suffice for this
purpose.  In the first solution, the type checking is done by the
application itself; in the second, it is done by the "shell" (which would
presumably be something like Servant).

It seems cleaner to me to set up separate i/o filters, although this would
probably increase system overhead.  It is possible that some specification
language for such i/o filters could be created that would obviate the need
to write a C program for filtering and also not require that a separate
process run to mediate between the program and the user.  Hacking the UNIX
applications themselves seems like a much bigger job, and one that would be
likely to introduce new bugs into the applications, which at this point are
fairly well-tested and bug-free.

Any other ideas on this subject?
-- 
Tim Maroney, Electronic Village Idiot and Self-Assigner of Pretentious Titles
{ihnp4,sun,well,ptsfa,lll-crg,frog}!hoptoad!tim (uucp)
hoptoad!tim@lll-crg (arpa)

"Little people, with tiny brains; little bullets flowing in their veins!
What do they want?  They want you!" - Oingo Boingo, "Tiny Guns"

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!columbia!caip!sri-spam!mordor!jdb
From: j...@mordor.ARPA (John Bruner)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <15372@mordor.ARPA>
Date: Mon, 15-Sep-86 12:55:11 EDT
Article-I.D.: mordor.15372
Posted: Mon Sep 15 12:55:11 1986
Date-Received: Mon, 15-Sep-86 20:59:24 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp>
Reply-To: j...@mordor.UUCP (John Bruner)
Organization: S-1 Project, LLNL
Lines: 70

Tim Maroney raises some good points.  Before I plunge into substance,
I'd like to say something about user interfaces for the record.  [Please
note that this next paragraph expresses my *opinion*.  I am not trying
to force my views upon the world; I just want to express a contrary
opinion.]

I'm not sure that I agree that the Mac has "proven" that a menu-dialog
interface to all programs is best.  I would agree that such an
interface is easier for novice users; however, having to continually
move from the keyboard to the mouse and back again to do *anything*
on the Mac is one of the most worst features of its user-interface
for me.  I am far more productive with "vi" on UNIX than with any of
the mouse-based editors I've run across on the Mac.  Similarly, a
command-line interface (coupled with history and aliases) lets me get
my work done a lot quicker than a mouse-based interface.  I have no
use for things like "dbxtool" on the Sun -- I am considerably more
productive with the command-line interface.

User preferences vary, and I'm sure my opinion on them isn't shared
by everyone.  My point, however, is that it is not sufficient to choose
between a mouse interface and a dialog interface solely upon the type
of output device.  I would prefer a command-line interface even on a
bitmapped screen, and I suspect many other "power users" of UNIX would
also.

In addition to filters, the command-line interface to UNIX programs is
required for terminals connected by serial lines.  Bitmapped systems
are connected to standard terminals -- dialups in particular are quite
common.

So, I agree that the command-line interface to UNIX must be retained.
Now, what is the best method by which to add a visual interface?

I'd propose that a visual interface to UNIX be a separate program, not a
series of changes to individual programs.  This is consistent with the
treatment of pattern-matching in the shell -- it is performed in one place
rather than many.  It allows users to write their own visual shells.
[How many people have actually written their own command-line shell?]
It also allows a program written on one machine (e.g. a VAX) to be used
directly on (e.g.) a Macintosh.

It is unfortunate that the only interface to UNIX programs is the
untyped argv list.  At this late date, perhaps the best solution is
to define a program-interface file which specifies the names and
types of the arguments to a given program.  A visual shell would
read this file upon startup.  Programs not named would be invoked in
the traditional fashion.  (Doesn't someone's menu-based interface to
UNIX already work this way?)  When a new program is installed, the
system manager would add the interface definition to the appropriate
file.  (This could be automated as part of a "make install".)

What form should such an interface file take?  A Lisp (or Lisp-like)
definition would be the most flexible, but would presumably be more
difficult to write and might require a sizeable committment to Lisp
in the visual shell (making it large and perhaps too slow?).  A simpler
definition (perhaps expressed as a grammar with some attach semantic
information) might not be flexible enough.

We've actually discussed a lot of the issues in my group here at
LLNL because of the development of Amber (a Multics-like operating
system for our locally-designed machine).  If there is significant
interest in this topic, I'll see if I can dig up and summarize the
design decisions.  [Presently, the Amber command processor works on
cursor-addressible terminals, providing pop-up help menus, command-
filename-, and argument name-completion, and an EMACS-like line editor
for old command retrieval and editing.]
-- 
  John Bruner (S-1 Project, Lawrence Livermore National Laboratory)
  MILNET: jdb@mordor [j...@s1-c.ARPA]	(415) 422-0758
  UUCP: ...!ucbvax!decwrl!mordor!jdb 	...!seismo!mordor!jdb

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!ll-xn!cit-vax!tybalt.caltech.edu!wetter
From: wet...@tybalt.caltech.edu.Caltech.Edu (Pierce T. Wetter)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <981@cit-vax.Caltech.Edu>
Date: Mon, 15-Sep-86 18:40:35 EDT
Article-I.D.: cit-vax.981
Posted: Mon Sep 15 18:40:35 1986
Date-Received: Mon, 15-Sep-86 22:12:14 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp> <15372@mordor.ARPA>
Sender: n...@cit-vax.Caltech.Edu
Reply-To: wet...@tybalt.caltech.edu.UUCP (Pierce T. Wetter)
Organization: Calfornia Institute of Technology
Lines: 29

In article <15...@mordor.ARPA> j...@mordor.UUCP (John Bruner) writes:
>  I am far more productive with "vi" on UNIX than with any of
>the mouse-based editors I've run across on the Mac. 

  Ha Ha Ha Ha Ha Ha Ha Ha HaHa Ha Ha Ha Ha Ha Ha Ha Ha
Ha Ha Ha Ha Ha Ha Ha Ha Ha
Ha Ha Ha Ha Ha Ha Ha Ha Ha
Ha Ha Ha Ha Ha Ha Ha Ha Ha
Ha Ha Ha Ha Ha Ha Ha Ha Ha
     Considering my experiences with vi (holding the up/down/left/right keys
causes some versions to delete random snatches of text) this is the most 
hilarious thing i've ever heard. When I'm programming  the thing I do most
often is move around in the file. You cant tell me that pointing and clicking
with the mouse isn't faster then banging away on random cursor keys. It's true
that you can go directly to a specific line number but you can't easily go up
five lines and over twenty characters. Also a mouse based editor is much easier
to cut & paste in (which if you looked at code I've written  you'll know why
I like this--" Who needs a for next loop I'll just paste it in five times") 

     Also, you need to move your hands away from the "home row" whenever you 
hit the escape key or any other "control key". The mouse isn't any worse
( unless you have an infinate typing speed). However, there is one small
thing I should mention, I'm using a trackball instead of a mouse (desk space
Yay!!!!!!!). If you are using a mouse on a towel (yucky surface) I might
believe you but otherwise. Snicker Snicker...

Nuff Said

Pierce wetter

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!lll-crg!nike!ucbcad!ucbvax!jade!eris!mwm
From: m...@eris.berkeley.edu (Mike Meyer)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <1279@jade.BERKELEY.EDU>
Date: Tue, 16-Sep-86 18:09:45 EDT
Article-I.D.: jade.1279
Posted: Tue Sep 16 18:09:45 1986
Date-Received: Wed, 17-Sep-86 12:25:46 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp> <15372@mordor.ARPA> 
<981@cit-vax.Caltech.Edu>
Sender: use...@jade.BERKELEY.EDU
Reply-To: m...@eris.UUCP (Mike Meyer)
Organization: Missionaria Phonibalonica
Lines: 46

In article <9...@cit-vax.Caltech.Edu> wet...@tybalt.caltech.edu.UUCP 
(Pierce T. Wetter) writes:
>In article <15...@mordor.ARPA> j...@mordor.UUCP (John Bruner) writes:
>>  I am far more productive with "vi" on UNIX than with any of
>>the mouse-based editors I've run across on the Mac. 
>
>     Considering my experiences with vi (holding the up/down/left/right keys
>causes some versions to delete random snatches of text) this is the most 
>hilarious thing i've ever heard.

Which just goes to show that you haven't much experience with vi.

>You cant tell me that pointing and clicking with the mouse isn't faster
>then banging away on random cursor keys.

Actually, I can. Somewhere I've got a paper describing a study done on
editor interfaces, and it turns out that the fastest interface - in
general - is a foursome of arrow keys plus function keys. Second is an
emacs-like interface (vi wasn't in the study), and third is the mouse.
Finding the mouse seems to be the killer.

>It's true that you can go directly to a specific line number but you
>can't easily go up five lines and over twenty characters. Also a mouse
>based editor is much easier to cut & paste in (which if you looked at
>code I've written you'll know why I like this--" Who needs a for next
>loop I'll just paste it in five times")

Being an emacs user, the thing that I most like about the mouse
interface is the ability to bounce to text in another window without
worrying about changing windows. But this is why my Amiga emacs has 24
bindable mouse buttons; so I can get LOTS of mouse functionality when
I start using it. I move between the two modes regularly.

Of course, cut in paste with or without the mouse is equally hard: go
to one end, mark, go to the other end, cut. The only real difference
is the moving. It's easier to do all this with whatever my hands are
on, be it the mouse or the keyboard.

>     Also, you need to move your hands away from the "home row" whenever you 
>hit the escape key or any other "control key".

Hmm. Seems that the ESC key on my Sun is easily reachable by the ring
finger of my left hand. In fact, I hit the F1 key (caps lock) above it
so often that I set it up to be an ESC key also. Of course, I have big
hands.

	<mike

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!lll-crg!nike!ucbcad!ucbvax!CORY.BERKELEY.EDU!dillon
From: dil...@CORY.BERKELEY.EDU (Matt Dillon)
Newsgroups: net.micro.mac
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <8609170521.AA18527@cory.Berkeley.EDU>
Date: Wed, 17-Sep-86 01:21:17 EDT
Article-I.D.: cory.8609170521.AA18527
Posted: Wed Sep 17 01:21:17 1986
Date-Received: Wed, 17-Sep-86 06:28:09 EDT
Sender: dae...@ucbvax.BERKELEY.EDU
Organization: University of California at Berkeley
Lines: 14


	UNIX implies all sorts of stream commands and their combination
via pipes.  This implies some sort of shell, unless you can think of a way
to create such constructions from a window enviroment.  It may seem
simply enough to state 'everything can be made user friendly', but it isn't
practical for EVERYTHING, especially UNIX related things.

	The reason VI and EMACS are so popular is simply because they can do
anything you want them to do.  You can fit only so much in a menu-based
system (and going to many levels of sub-menu's means the user can no longer
do operations 'with a flick of his mouse button').  UNIX was originally and
still is a programmer's development enviroment.

					-Matt

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!lll-crg!lll-lcc!pyramid!voder!apple!tesler
From: tes...@apple.UUCP (Larry Tesler)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <164@apple.UUCP>
Date: Fri, 19-Sep-86 01:16:53 EDT
Article-I.D.: apple.164
Posted: Fri Sep 19 01:16:53 1986
Date-Received: Mon, 22-Sep-86 21:14:33 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp> <15372@mordor.ARPA> 
<981@cit-vax.Caltech.Edu> <1257@utastro.UUCP> <267@uwmacc.UUCP>
Reply-To: tes...@apple.UUCP (Larry Tesler)
Organization: Apple Computer Inc., Cupertino, USA
Lines: 37

In article <2...@uwmacc.UUCP> dub...@uwmacc.UUCP (Paul DuBois) writes:
>Mac users (some of 'em, anyway) like to talk about modeless
>operation, but let's not forget:  the mouse *IS* a mode.
>
>Modelessness is a myth, propagated sometimes by people who should
>know better.

If I can figure out how to use vi, I'll reply.  I agree that modelessness
is a technically vague term.  It could be argued that even a text editor
like MacWrite has one mode, "obey-next-input mode".  But if a program has
one mode, it has no mode changes, and thus we call it modeless.  It is
also arguable that a font change command produces a mode, but so does a
caps lock key; I call either a "shift", which, as modes go, is innocuous
because the effect of forgetting which mode you are in is certainly less
drastic than that of typing "23d Street" without first entering insert
mode in vi.

Depending on how you choose to define "mode", the mouse could be called a
mode, but then so could the "7" key on a typewriter.  A useful definition
of mode is a state of a user interface that affects the interpretation of
subsequent inputs without obvious indication.  It is possible on the Macintosh,
using clover keys, to bring up a dialog box and thus enter a mode unknowingly.
But it is exceedingly rare compared with systems like vi that overload the
typing keys with functional meanings.

Let me add that, although I agree vi is an obnoxious editor, I do think it
deals with the mode problem gracefully.  Bad keystrokes often beep, undo is
always available for one command, and most vowels enter insert mode so it is
difficult to type a word as a command.

Modelessness is not a myth.  Like "seamlessness" or "painlessness", it is an
ideal that may rarely be attainable but is always worth approximating.  The
alternative is surely inhumane computing.

Larry Tesler, Advanced Development Group, Apple Computer, Inc.
The opinions expressed above are my own although I suspect more than a few
colleagues, not to mention users, would substantially agree with them.

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!lll-crg!hoptoad!tim
From: t...@hoptoad.uucp (Tim Maroney)
Newsgroups: net.micro.mac
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <1117@hoptoad.uucp>
Date: Mon, 22-Sep-86 16:30:19 EDT
Article-I.D.: hoptoad.1117
Posted: Mon Sep 22 16:30:19 1986
Date-Received: Mon, 22-Sep-86 21:37:01 EDT
References: <8609170521.AA18527@cory.Berkeley.EDU> <1114@hoptoad.uucp>
Reply-To: t...@hoptoad.UUCP (Tim Maroney)
Organization: Centram Systems, Berkeley
Lines: 32

I'd like to thank all the people who've replied on this issue so far.  I
hope to have time to deal with all the major points soon, but for now, I
just want to make a few comments.
 
First, I mentioned pseudo-ttys as a necessity in the original article; this
means that a psuedo-tty could easily be bound to a window interface for
those situations in which a command language interface is preferable.
 
Second, process interconnection with pipes fairly readily into an iconic
shell interface.  There would be a "pipe" icon on the desktop.  Clicking on
this would create a pipe-shaped icon; selecting application icons would then
link them together into a piped process sequence.  Finishing the select
would probably be best accomplished by clicking again on the pipe. Yes, it's
modal, but modality is not an absolute vice.
 
Third, I suggested that an "interface description language" (obviously not
IDL, the compiler language) could be implemented within the shell, and that
each application could have a formally-described graphic interface in this
way without having to run extra filter processes or modify the applications'
code.  Apparently this was not as clear as could be hoped.

Fourth, I think command-language fans are overlooking one of the chief
advantages of graphic interfaces, the impossibility of typing errors.

Again, many thanks!
-- 
Tim Maroney, Electronic Village Idiot and Self-Assigner of Pretentious Titles
{ihnp4,sun,well,ptsfa,lll-crg,frog}!hoptoad!tim (uucp)
hoptoad!tim@lll-crg (arpa)

Engineers gleefully note the inability of artists to solve technical
problems, but angrily deny the atrophy of their own aesthetic sense.

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!caip!sri-spam!mordor!jdb
From: j...@mordor.ARPA (John Bruner)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <15530@mordor.ARPA>
Date: Mon, 22-Sep-86 17:11:27 EDT
Article-I.D.: mordor.15530
Posted: Mon Sep 22 17:11:27 1986
Date-Received: Mon, 22-Sep-86 21:27:52 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp>
Reply-To: j...@mordor.UUCP (John Bruner)
Organization: S-1 Project, LLNL
Lines: 60

I seem to have started something that I had really hoped to avoid.  I'm
probably only making things worse by submitting this, but since the net
seems to be a medium devoid of restraint....

I am very dismayed at the general direction that this discussion has
taken -- whether or not "vi" is a good editor.  The line from my posting
which set off all of this discussion was:

> I am far more productive with "vi" on UNIX than with any of
> the mouse-based editors I've run across on the Mac.

This statement is true -- *I* like "vi" and *I* edit *very rapidly* with
it.  It does *not* say "Everyone would be far more productive with 'vi'",
nor does it even say "Everyone would be far more productive with a
keyboard-oriented editor".  I mentioned "vi" because it is the screen
editor that *I* use.  It was a concrete example which I cited only to
expand upon my general statement: *some* people prefer a keyboard
interface (for some tasks) to a mouse-based interface.

I cited other examples which noone seems to disagree with -- why didn't
someone ridicule me for preferring a command interface with history
and aliases to a mouse-based interface?  Perhaps this lack of response
resulted from my failure to mention specific programs which provoke
strong emotional responses in some people, although noone took me
to task for my preference for "dbx" over "dbxtool".

My sole objective in the paragraph containing the "vi" reference was
to state my belief, based upon my own personal experience, that
*some* users prefer a keyboard interface for *some* tasks to a
mouse-based interface (or worse yet, a hybrid interface that makes
one waste lots of time moving one's hands between the keyboard and the
mouse).  I realize now that I should have said "I am far more productive
with my *keyboard-based editor* on UNIX".  Of course, then there
probably would have been flames about "vi", every flavor of EMACS,
the Rand Editor, "ed", "qed", "ex", and who knows what else.

A mouse-based interface is appropriate for many situations and users.
I claimed that a keyboard-based alternative is appropriate for some.
That is all I said.  (I find some support for my opinion in the
existence of command-key equivalents on the Mac and their popularity
among so-called "power users.")

I am *not* knocking Apple's user interface guidelines.  I am *not*
suggesting that the *only* interface be a keyboard-only one.  I am
*only* suggesting that (at least for *some* things) *some* users
desire such an interface as an *alternative*.  Preferences for
user interfaces, like preferences for editors, vary, so I naturally
don't assume that everyone believes as I do.  Unfortunately, too often
it seems that advocates of mouse-based interfaces are not equally
willing to accept that other people may not agree that a mouse is
"the only way."

I do have some ideas on the original subject: adapting UNIX programs to
a Mac interface (both for transport to the Mac and for the implementation
of a Mac-like interface on top of UNIX), but as this posting is getting
rather long I'll put that material off until later.
-- 
  John Bruner (S-1 Project, Lawrence Livermore National Laboratory)
  MILNET: jdb@mordor [j...@s1-c.ARPA]	(415) 422-0758
  UUCP: ...!ucbvax!decwrl!mordor!jdb 	...!seismo!mordor!jdb

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10 beta 3/9/83; site utecfa.UUCP
Path: utzoo!utcsri!utai!utecfa!edusoft
From: edus...@utecfa.UUCP (Educational Software)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Porting UNIX Applications to the Mac
Message-ID: <1897@utecfa.UUCP>
Date: Tue, 23-Sep-86 12:52:41 EDT
Article-I.D.: utecfa.1897
Posted: Tue Sep 23 12:52:41 1986
Date-Received: Tue, 23-Sep-86 14:43:46 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp>
Organization: Engineering Computing Facility, University of Toronto
Lines: 52

Larry Tesler writes in article 1...@apple.UUCP

> In article <2...@uwmacc.UUCP> dub...@uwmacc.UUCP (Paul DuBois) writes:
> >Mac users (some of 'em, anyway) like to talk about modeless
> >operation, but let's not forget:  the mouse *IS* a mode.
> >Modelessness is a myth, propagated sometimes by people who should
> >know better.

> If I can figure out how to use vi, I'll reply.  I agree that modelessness
> is a technically vague term.  It could be argued that even a text editor
> like MacWrite has one mode, "obey-next-input mode".  But if a program has
> one mode, it has no mode changes, and thus we call it modeless.  It is
> also arguable that a font change command produces a mode, but so does a
> caps lock key; I call either a "shift", which, as modes go, is innocuous
> because the effect of forgetting which mode you are in is certainly less
> drastic than that of typing "23d Street" without first entering insert
> mode in vi.
> 
> Depending on how you choose to define "mode", the mouse could be called a
> mode, but then so could the "7" key on a typewriter.  A useful definition
> of mode is a state of a user interface that affects the interpretation of
> subsequent inputs without obvious indication.  It is possible on the Macintosh,
> using clover keys, to bring up a dialog box and thus enter a mode unknowingly.
> But it is exceedingly rare compared with systems like vi that overload the
> typing keys with functional meanings.
> 
> Let me add that, although I agree vi is an obnoxious editor, I do think it
> deals with the mode problem gracefully.  Bad keystrokes often beep, undo is
> always available for one command, and most vowels enter insert mode so it is
> difficult to type a word as a command.
> 
> Modelessness is not a myth.  Like "seamlessness" or "painlessness", it is an
> ideal that may rarely be attainable but is always worth approximating.  The
> alternative is surely inhumane computing.

I don't really know whether modelessness is a myth or not, (though I 
suspect it is a myth).

For example, the dialog boxes and file selection boxes and pull-down
menus and click-drag mouse functions are ALL modes.

The idea is, however, to keep the modes simple and small, so that
a user's options and how to get at them are obvious.

So, MacWrite has lots of little modes, and vi has two big modes.

-----

bill idsardi
educational software products

.... utzoo!utcsri!utecfa!edusoft

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!lll-crg!lll-lcc!pyramid!voder!apple!lsr
From: l...@apple.UUCP (Larry Rosenstein)
Newsgroups: net.micro.mac
Subject: Editor Interfaces
Message-ID: <179@apple.UUCP>
Date: Tue, 23-Sep-86 20:05:42 EDT
Article-I.D.: apple.179
Posted: Tue Sep 23 20:05:42 1986
Date-Received: Wed, 24-Sep-86 02:58:39 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp> <15372@mordor.ARPA> 
<981@cit-vax.Caltech.Edu> <1279@jade.BERKELEY.EDU>
Reply-To: l...@apple.UUCP (Larry Rosenstein)
Organization: Advanced Development Group, Apple Computer
Lines: 33

In article <1...@jade.BERKELEY.EDU> m...@eris.UUCP (Mike Meyer) writes:
>Actually, I can. Somewhere I've got a paper describing a study done on
>editor interfaces, and it turns out that the fastest interface - in
>general - is a foursome of arrow keys plus function keys. Second is an
>emacs-like interface (vi wasn't in the study), and third is the mouse.
>Finding the mouse seems to be the killer.
>

There was a paper entitled "The Evaluation of Text Editors: Methodology and
Empirical Results" by Teresa L. Roberts and Thomas P. Moran in the April
1983 Communications of the ACM.

This study compared 9 different editors (including Emacs, Teco, and several
Xerox mouse-based editors) using predicted and actual times to perform a
variety of tasks.  There were a couple of interesting things in the paper.

First, in their predicted times, they concluded that "the homing time
between the keyboard and pointing device is not a major problem".  The
exception to this was the WANG editor that relies heavily on function keys
separate from the main typing array.  

Second, in the actual timings with expert users the 2 fastest editors were
mouse-based, the third was the WANG.

-- 
Larry Rosenstein

Object Specialist
Apple Computer

AppleLink: Rosenstein1
UUCP:  {sun, voder, nsc, mtxinu, dual}!apple!lsr
CSNET: l...@Apple.CSNET

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!lll-crg!nike!ucbcad!ucbvax!hplabs!tektronix!
teklds!zeus!bobr
From: b...@zeus.UUCP (Robert Reed)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Modelessness (Was porting UNIX applications to the mac)
Message-ID: <585@zeus.UUCP>
Date: Wed, 24-Sep-86 15:19:39 EDT
Article-I.D.: zeus.585
Posted: Wed Sep 24 15:19:39 1986
Date-Received: Fri, 26-Sep-86 01:00:22 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp> <1897@utecfa.UUCP>
Reply-To: b...@zeus.UUCP (Robert Reed)
Organization: CAE Systems Division, Tektronix Inc., Beaverton OR
Lines: 51

Bill Idsardi writes in article 1...@utecfa.UUCP
> 
> I don't really know whether modelessness is a myth or not, (though I suspect
> it is a myth).
> 
> For example, the dialog boxes and file selection boxes and pull-down menus
> and click-drag mouse functions are ALL modes.
> 
> The idea is, however, to keep the modes simple and small, so that a user's
> options and how to get at them are obvious.
> 
> So, MacWrite has lots of little modes, and vi has two big modes.

Proving the myth of modelessness by picking at nits seems to be a waste of
time.  Larry Tesler gave a reasonable definition of the "modes" of which
people speak when they talk about modeless programming:

    A useful definition of mode is a state of a user interface that affects
    the interpretation of subsequent inputs without obvious indication.

The operant words here are "WITHOUT OBVIOUS INDICATION."  We can argue all
month about whether holding down the shift key or pushing the mouse button
while looking at a pull-down menu constitutes a mode in the strictest
definition, but all of this would be beside the point.  The idea behind
modeless programming is to eliminate surprises.

If I click-drag an object or pull down a menu, or hold down the shift key,
it is a conscious act for which I am getting direct feedback from the
system.  As a novice user of vi, I was constantly surprised by trying to
enter text, only to find that I was in command mode (with no obvious
indication).  That is the point.

One additional attribute of systems which are objectionably modal is their
way of navigating through the modes.  If holding the shift key is considered
a mode, it is not very objectionable because I can get out of it by just
letting go.  The same goes for pulldown menus.  If I don't like the choices,
I can intuitively avoid them by moving the cursor away before letting go.
Getting out of insert mode in vi, is not quite as easy, but can be easily
acquired through the learned behavior of hitting the ESC key.

The lesson here is NOT that systems should have no global states (i.e.,
modes) but that:

    o  Users should be able to know, without having to query, those states
	of the system that will affect what they are about to do.

    o  If in a state that the user no longer desires, they should be able to
	correctly guess how to get out of it (e.g., letting go of the shift
	key).

Robert Reed, Tektronix CAE Systems Division, b...@zeus.TEK

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!watmath!clyde!cbatt!cbosgd!mark
From: m...@cbosgd.ATT.COM (Mark Horton)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Modelessness (Was porting UNIX applications to the mac)
Message-ID: <2637@cbosgd.ATT.COM>
Date: Mon, 29-Sep-86 16:19:04 EDT
Article-I.D.: cbosgd.2637
Posted: Mon Sep 29 16:19:04 1986
Date-Received: Tue, 30-Sep-86 20:58:02 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp> <1897@utecfa.UUCP> 
<585@zeus.UUCP>
Organization: AT&T Bell Laboratories, Columbus, Oh
Lines: 58

In article <5...@zeus.UUCP> b...@zeus.UUCP (Robert Reed) writes:
>    A useful definition of mode is a state of a user interface that affects
>    the interpretation of subsequent inputs without obvious indication.
>
>The operant words here are "WITHOUT OBVIOUS INDICATION."  We can argue all
>month about whether holding down the shift key or pushing the mouse button
>while looking at a pull-down menu constitutes a mode in the strictest
>definition, but all of this would be beside the point.  The idea behind
>modeless programming is to eliminate surprises.
>
>If I click-drag an object or pull down a menu, or hold down the shift key,
>it is a conscious act for which I am getting direct feedback from the
>system.  As a novice user of vi, I was constantly surprised by trying to
>enter text, only to find that I was in command mode (with no obvious
>indication).  That is the point.

Sorry, Bob, I disagree.  Your version of vi (3.7) doesn't show you when
you're in input mode, but mine (3.10) does; so does the MS DOS PC/VI
clone.  (It says "INPUT MODE" right there on the bottom line, or "I"
if you have terse set.  There are similar messages for r and R modes.)
In System V release 2, you can get this by putting "set showmode"
in your EXINIT, in release 3 it's on by default.

In spite of this, I still consider vi a moded editor, and I think most
others do too.  As an extreme example, ex command mode is certainly a
mode, with a very obvious visual indication (the : prompt and cursor
at the bottom of the screen.)

There's nothing wrong with being moded, it's just a personal preference.
I've taught vi to many novices, such as secretaries; I stick to a 10
command subset and they seem quite happy.

Mice and other pointing devices are handy for lots of things, but with
only two hands, you can't keep one hand on the mouse all the time.  A
really good mouse interface never has your hands on the keyboard, you
do everything with the mouse.  (MacPaint is a good example of this.)
But for a text editor, you can't reasonably input new text with a mouse,
and there's the problem.  There are so many things you want to do in a
complex text editor that you can't really put them all on a menu without
having zillions of menus and never being able to find anything.  This
goes for shell commands too.

A person who has learned a keyboard oriented editor like vi or emacs
becomes very familiar with that editor.  Commands become reflexive
habits, and switching to another editor is very painful; this is why
there are so many flames about editors.  I personally have the vi
command set hardwired in my fingers, so I'm not anxious to learn another
text editor or word processor.  It took a quantum leap in editor quality
to get people to switch from line editors to screen editors, and there
are still plenty of line editor users out there.  (My office mate hunts
and pecks at ed.)  It will take a similar quantum leap, plus near
universality of mice as standard input devices, plus a mousecap or
similar notion, to make people jump from screen editors to mouse editors.
So far I haven't seen the quantum leap, at best things seem about even.
(Cursor motion is easier but commands like "delete 2 sentences" or
"find the matching parenthesis", or even a simple search, are harder.)

	Mark Horton

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!watmath!clyde!bellcore!ulysses!allegra!mit-eddie!genrad!decvax!
tektronix!teklds!zeus!bobr
From: b...@zeus.UUCP (Robert Reed)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Modelessness (Was porting UNIX applications to the mac)
Message-ID: <619@zeus.UUCP>
Date: Wed, 1-Oct-86 15:19:41 EDT
Article-I.D.: zeus.619
Posted: Wed Oct  1 15:19:41 1986
Date-Received: Sat, 4-Oct-86 08:59:31 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp> <1897@utecfa.UUCP> 
<585@zeus.UUCP> <2637@cbosgd.ATT.COM>
Reply-To: b...@zeus.UUCP (Robert Reed)
Organization: CAE Systems Division, Tektronix Inc., Beaverton OR
Lines: 45

In article <2...@cbosgd.ATT.COM> m...@cbosgd.ATT.COM (Mark Horton) writes:
>
>Sorry, Bob, I disagree.  Your version of vi (3.7) doesn't show you when
>you're in input mode, but mine (3.10) does; so does the MS DOS PC/VI
>clone.  (It says "INPUT MODE" right there on the bottom line,...

This change sounds like a definite improvement and one that I wouldn't
criticize without having a chance to see it, but an immediate concern of
mine would be how visible this indicator is for someone whose focus of
attention is the cursor, not the bottom of the screen.  I still might not
consider this indication as "obvious."

>There's nothing wrong with being moded, it's just a personal preference.

I agree that modes are useful and far be it from me to presume that either
vi or emacs be considered modeless.  My argument was not for the elimination
of modes, but for the elimination of modes which demonstrate the two
following features:

    o  Their presence is not obvious to the user (whatever this means in
	terms of visual or mechanical feedback).

    o  The mechanism for exiting them is not obvious.

There are features of both vi and emacs that arguably fall within these
dictates.  The criterion for "obviousness" is necessarily vague, because
level of expertise will affect the user's perceptions of natural behavior.
Knowing to hit ESC in vi is a learned behavior, just as is knowing to hit ^G
in emacs to abort multi-keystroke commands.  Neither is particularly obvious
if you don't know about them in advance.

>Mice and other pointing devices are handy for lots of things, but with
>only two hands, you can't keep one hand on the mouse all the time.
>
>...for a text editor, you can't reasonably input new text with a mouse,
>and there's the problem.

Agreed.  Despite the attractiveness of the "cut and paste" style text
editing paradigm, the actual mechanics of using such a system for text
editing are cumbersome.  That is not the same as saying that keyboard driven
editing and cut-and-paste editing cannot be used in concert.  Cut-and-paste
grafted onto emacs would be a definite wart, but a useful one.  


Robert Reed, Tektronix CAE Systems Division, b...@zeus.TEK

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!ll-xn!mit-amt!mit-eddie!barmar
From: bar...@mit-eddie.MIT.EDU (Barry Margolin)
Newsgroups: net.micro.mac,net.unix
Subject: Re: Modelessness (Was porting UNIX applications to the mac)
Message-ID: <3360@mit-eddie.MIT.EDU>
Date: Wed, 1-Oct-86 22:56:37 EDT
Article-I.D.: mit-eddi.3360
Posted: Wed Oct  1 22:56:37 1986
Date-Received: Sat, 4-Oct-86 01:33:20 EDT
References: <1572@cbdkc1.UUCP> <1091@hoptoad.uucp> <1897@utecfa.UUCP> 
<585@zeus.UUCP> <2637@cbosgd.ATT.COM>
Reply-To: bar...@mit-eddie.UUCP (Barry Margolin)
Organization: MIT, EE/CS Computer Facilities, Cambridge, MA
Lines: 44

In article <2...@cbosgd.ATT.COM> m...@cbosgd.ATT.COM (Mark Horton) writes:
>In article <5...@zeus.UUCP> b...@zeus.UUCP (Robert Reed) writes:
>>    A useful definition of mode is a state of a user interface that affects
>>    the interpretation of subsequent inputs without obvious indication.
>>
>>The operant words here are "WITHOUT OBVIOUS INDICATION."
...
>>As a novice user of vi, I was constantly surprised by trying to
>>enter text, only to find that I was in command mode (with no obvious
>>indication).  That is the point.
>
>Sorry, Bob, I disagree.  Your version of vi (3.7) doesn't show you when
>you're in input mode, but mine (3.10) does; so does the MS DOS PC/VI
>clone.  (It says "INPUT MODE" right there on the bottom line, or "I"
>if you have terse set.  There are similar messages for r and R modes.)
...
>In spite of this, I still consider vi a moded editor, and I think most
>others do too.  As an extreme example, ex command mode is certainly a
>mode, with a very obvious visual indication (the : prompt and cursor
>at the bottom of the screen.)
>
>There's nothing wrong with being moded,

I think that we need to decide how "obvious" the indications must be
before one is willing to call something "modeless".  I don't consider a
word or two somewhere else on the screen, or a change in shape of the
cursor (as is common in many PC applications) obvious enough.  However,
moving the cursor out of the window, as is done for Emacs ESC-X commands
or Macintosh dialogs, is about as obvious as you can get without
grabbing the user by the collar and screaming "What extended command do
you want?" in his ear.

Emacs and MacWrite, however, are only modeless to a slightly greater
extent than vi.  Emacs has major (C, Lisp, Fundamental) and minor (Auto
Fill, Overwrite, Macro Learn) modes.  MacWrite has modes that specify
the justification, font, and style of the text to be typed in.  I think
that the difference between these and vi is the extent to which use of
the editor depends on the modes; a novice Emacs user might hardly ever
change modes, but a vi can't be used without going between insert,
overwrite, and edit modes relatively frequently.
-- 
    Barry Margolin
    ARPA: barmar@MIT-Multics
    UUCP: ..!genrad!mit-eddie!barmar