[comp.protocols.tcp-ip] supdup protocol and local editing

dan@WILMA.BBN.COM (10/14/87)

> Some work was done a number of years ago (...  at Arizona) to
> investigate how to use a micro to do editing across a 1200 baud link.
> They ...  [applied] a "virtual editor" model at the backend ...
> Editing commands across the link operated on lines, not characters,
> though that wasn't necessarily the interface presented to the user.

I don't know the work at Arizona you refer to, but I did something
very much like this back when I had an ECD MicroMind micro in my
office in 1979.  The MicroMind had a "terminal program" which was also
a full-screen editor.  To edit a file, I sent over the lines I wanted
to change, edited them for awhile, then sent them back.  The
"protocol" across the line "operated on lines, not characters," and
was about as lightweight as you could get: it was the Unix "ed" line
editor command set!  To edit a file, I would invoke ed on it, print a
range of lines, edit them locally, then send a change command to put
them back in the ed buffer.  Keyboard macros in the MicroMind made it
all quick and easy.  Like other people, I was very willing to put up
with a few seconds' wait at the beginning and end of my editing to get
an instantaneous response to each keystroke (and other advantages,
such as a real meta key).  This was done at 2400 baud, because Unix
couldn't receive characters any faster without flow control (which
the MicroMind didn't have).

Sending over integral numbers of lines was just right, since that's
what your local editor wants to deal with anyway.  It also means you can
easily handle having two different representations for "lines"
(records vs. streams, crlf vs. lf, etc.)  on the two machines.  Also,
if the backend "editor" can mark the beginning and end of each region
sent to the local micro in a way which does not change as lines are
added or deleted outside each region (which ed had), then you can
trivially have independent windows on the same file at the same time
with virtually no local "intelligence".

	Dan Franklin

kent@DECWRL.DEC.COM (10/14/87)

Ah. I was off-base -- the work was done at Rutgers, not Arizona. The
full reference is DCS-TR-110, "Software Design Issues in the Architecture and
Implementation of Distributed Text Editors", Robert N. Goldberg, Dept.
of Computer Science, Hill Center for the Mathematical Sciences, Busch
Campus, Rutgers University, New Brunswick, NJ 08903.

I don't have a copy, so I can't tell you more, but I'll repeat what I
recall of the basic premise: the display/user interface portion ran on
a PC and accessed the file through a line editor interface, across a
1200 baud line. The PC viewed the whole file in a manner reminiscent of
virtual memory. The author developed a concept he called "optimal
pre-fetch", based on keystroke analysis of various editors, to allow
the PC half to minimize the time the user spent waiting for lines to be
fetched across the link.

Seems like a good place to start looking, for someone looking to
implement this sort of system. I believe that a simple editor makes a
better interface for this sort of work than a full-blown remote file
system, but it means that youre implementing a fairly special-purpose
interface. In this day of faster communication, it may no longer be
worth the effort.

chris

alan@mn-at1.UUCP (Alan Klietz) (10/17/87)

In article <8710140650.AA03966@ucbvax.Berkeley.EDU> dan@WILMA.BBN.COM writes:
<
<To edit a file, I sent over the lines I wanted
<to change, edited them for awhile, then sent them back.  The
<"protocol" across the line "operated on lines, not characters," and
<was about as lightweight as you could get: it was the Unix "ed" line
<editor command set!  To edit a file, I would invoke ed on it, print a
<range of lines, edit them locally, then send a change command to put
<them back in the ed buffer. 
<
<Sending over integral numbers of lines was just right, since that's
<what your local editor wants to deal with anyway.  It also means you can
<easily handle having two different representations for "lines"
<(records vs. streams, crlf vs. lf, etc.)  on the two machines.  Also,
<if the backend "editor" can mark the beginning and end of each region
<sent to the local micro in a way which does not change as lines are
<added or deleted outside each region (which ed had), then you can
<trivially have independent windows on the same file at the same time
<with virtually no local "intelligence".
<

I wrote a program named "rvi" which does just this, albeit you need
a computer instead of just a smart terminal.   It fetches multiple
screenfuls of text into a sliding window on the file.  (See Volume 7
of the source archives.)

While this scheme gives you low overhead to the host, and avoids
the need to have single-character I/O and short RTTs, it loses 
on slow networks (although some fancy window-prefetching can mitigate
this somewhat.)    It also loses on flexibility (there are some vi
commands that you cannot bloody do with ed).  And you don't get the
file recovery capability of real vi.

Of course, you could build a smart remote editor server and fix some
of these problems.  But for portability, remember that ed and ed
clones are everywhere.

-Al  (alan@uc.msc.umn.edu)

richb@dartvax.UUCP (Richard E. Brown) (10/19/87)

At Dartmouth, we have been using just such a front/back end
editing scheme for 5 years.  The initial implementation was a
Z-80 box with 32K RAM and 24K ROM which acted as a screen manager
for a simple terminal and talked to a back-end editor on a host.
This setup did two things:  a) it provided "scrollback" of the last n
lines of your session (limited by the 32K RAM), and b) cached a
copy of the hosts file, to provide local editing.  Editing
changes were shipped back to the host, line-by-line.  We had
several hundred around campus, with good results.

We now have a Macintosh version which uses the same back end
editor (now implemented on Unix, VAX/VMS, and DCTS, with VM/CMS
to come).  The Mac provides much more scrollback, and places the
screen editing text in a separate window.  It uses the standard
Macintosh cut-copy-paste paradigms.

Rich Brown                           Telephone:   603/646-3648
Manager of Special Projects          E-Mail: richard.e.brown@dartmouth.edu
Dartmouth College                            richard.e.brown@dartcms1.bitnet
Kiewit Computer Center                       richard.e.brown@dartvax.uucp
Hanover, NH 03755                    AppleLink:  A0183

bdale@winfree.UUCP (Bdale Garbee) (10/19/87)

In article <8710140650.AA03966@ucbvax.Berkeley.EDU> dan@WILMA.BBN.COM writes:
>Sending over integral numbers of lines was just right, since that's
>what your local editor wants to deal with anyway.  It also means you can
>easily handle having two different representations for "lines"
>(records vs. streams, crlf vs. lf, etc.)  on the two machines.  Also,
>if the backend "editor" can mark the beginning and end of each region
>sent to the local micro in a way which does not change as lines are
>added or deleted outside each region (which ed had), then you can
>trivially have independent windows on the same file at the same time
>with virtually no local "intelligence".

I spend a lot of time each day using an HP terminal tied into an HP3000 
system dealing with HP's corporate mail system.  The editor in the mail
system works in a very similar fashion, but I find it nearly unbearable.

I guess it depends on what you are used to, but using terminal-level
intelligence to edit portions of files/messages is a problem, particularly
when you want to clip and yank hunks of text that cross the boundaries of
what you have in the local terminal.  In particular, all of the systems I've
used of this type require contortions to insert a large hunk of text in the
middle of a file/message.

The system described (using ed commands and a smart terminal) is a neat trick,
but I'd like to see us avoid designing a protocol based on that model.
-- 
Bdale Garbee, N3EUA			phone: 303/495-0091 h, 303/590-2868 w
uucp: {bellcore,crash,hp-lsd,ncc,pitt,usafa}!winfree!bdale
arpa: bdale@net1.ucsd.edu		packet: n3eua @ k0hoa, Colorado Springs
fido: sysop of 128/19 at 303/495-2061, 2400/1200/300 baud, 24hrs/day