[net.works] Window Management Part II: Personal Communications

csc (06/11/82)

As promised in the preceding item, herewith is a compilation of personal
communications relating to window management strategies.  I was fortunate
to hear from quite a number of people, so this may well be a good summary
of the current state of things.  The answers I received were, however,
somewhat oriented to a specific question I asked: are overlapping windows
useful?  I also asked for details on window cataloguing schemes.


Henry Lieberman at MIT-AI:
I've used 2 systems incorporating overlapping windows: the Lisp
Machine at MIT and Smalltalk at Xerox PARC.  It's a sexy feature,
but I and others don't find myself using it as much as might be
expected.  For situations where you want to share screen among
several programs, some "window made of windows" construct seems
better (Frames in the Lisp Machine, PanedWindow in Smalltalk).
Overlapping windows are good when the screen layout is more dis-
organized; you want to pop up temporary windows, etc.

Paul Johnson at MIT-XX:
My own feeling on overlapping windows is that not providing them would
greatly limit users' flexibility in managing their own work space in a
manner that suits their work style.  Forcing non-overlapping windows on
people is not that great a step forward from our glass tty's..

Tim Rentsch at USC-ECL:
I think you would like overlapping windows if you tried 'em.  It seems a
common (intellectual) reaction to prefer the non-overlapping kind, but
after an hour of use you will probably be convinced.  The problem with
windows that don't overlap is that there is NEVER enough room on the screen
because there is always something of global importance that is of little
local importance.  This is not something that most computer users have
been exposed to, since most computers are heavily into modes.

Jim Guyton at rand-unix:
[who wrote the original window package for the Star]  ...Nothing ever
published unfortuneately; there were some nifty ideas used for screen/
window management.  For example, an "algebra of rectangles" developed
for adding/subtracting rectangles and a relatively easy method of
hiding window clipping problems from the programs that live in them.
Cluttered windows:  A good window system should allow the user to have
as many windows as wanted-- and no more.  One thing that is still debated
within Xerox is what to do upon opening a window-- should all the other
windows make room for it (to minimize overlapping windows) or should the
new window just go on "top"?
  Star took the first approach.  The major windows (that were expected to
stay around for a while) were allocated a large chunk of the screen.  If
there wasn't room, then all the major windows were shrunk a little and
moved in order to make room.  There was (at least initially) a limit of
how many of these windows could be up at once.  Advantage:  usually
does the right thing and frees the user from always having to move/size
new windows.  Disadvantage: may spend too much real time doing something
"nice" for the user that isn't really what is wanted.
  Other programs have taken the other approach.  While much more flexible,
people have complained that they spend a lot of their time setting the
screen up to be exactly what they want.
  The basic problem of course is coming up with one set of rules for what
everyone wants in a window package.  What I'd like to see is a
"profile-able" window package-- such that I can supply the rules.

Bruce Hamilton at Xerox PARC:
  Re overlapping windows: Star doesn't have them, but the Mesa development
environment that we use to create Star does, and I love it!  [Regarding
the inquiry on] "cataloguing schemes": each window has three states:
big, tiny (an icon about 1/2" square) and deactivated.  A tool can be
quickly changed back and forth between the tiny and the big states by
clicking the mouse in the top of the window, and preserves all its internal
state.  A tool can be deactivated by bringing up a window manager menu and
selecting "deactivate". A deactivated tool may lose much of its internal state.
It gets put on the "inactive" menu which can be called up whenever the mouse
is outside all windows.  I like the fine control of being able to grow and
overlap my windows arbitrarily.  It is true that tools in the tiny state
may tend to get lost.  Tiny windows can be moved around but by default they
go to the bottom of the screen and don't overlap (unless they've been moved).
All this is much easier to demonstrate than to talk about.

Larry Rosenstein at MIT-XX:
[I am working on a display manager for the Etude office workstation, as
a Master's thesis.]

[Because of limited time and hardware resources] our model of windows is
NOT the conventional one of arbitrarily overlapping windows.  We also wanted
to avoid as much inherent overhead as possible, in order to get adequate
response time from the system, and felt that a simple display model would be
adequate (whether this is so still remains to be seen).

Part of the reason was philosophical.  It was not immediately clear that
overlapping windows are needed in an office workstation (as opposed to a
general purpose programming workstation).  I think that goals such as
response time and consistent display layout are more important to office
workers than the ability to control the screen layout precisely.

In our workstation, windows can be created anywhere on the screen, but the
system does not automatically resolve conflicts between overlapping windows.
What we do is dynamically change the size and position of windows, so that
they do not overlap.  Each application can create whatever windows it needs;
in Etude, for example, there will be one window for each element (text
column, figure, etc.) on a page and the windows are arranged to model the
desired page layout.

The system takes care of creating "top-level" windows for new applications,
menus, and help information.  For simplicity, these top-level windows are
constrained to use the entire screen width. [Thus, the user sees] horizontal
bands, each containing a different application, menu, or help message.
(This approach also avoids horizontal scrolling when an application's window
is too narrow.  If you think about it, most applications are more sensitive
to their windows width than its height-- if the window's height decreases,
the application simply displays fewer lines.)

[When a new top-level window is allocated, existing top-level windows are
shrunk to create space, and the corresponding applications are notified of
their new window sizes so that they can act accordingly.]

The Xerox Star does support overlapping windows, but does not allow windows
to be arranged arbitrarily.  Different types of windows appear in different
positions, by default.  [Usually windows are designated by the user to
appear in one of two columns.  Users may also specify the distances between
windows.]  ...Menus that were associated with a window were an exception---
they appeared in one corner of the window.  One disadvantage ... (and
advantage of arbitrary screen layouts) is that the user must develop
[an icon-organizing methodology] because some parts of the screen are more
accessible than others.

                         ~   ~    ~    ~

Again, thanks to all, mentioned and not, who sent in material.

For those who are wondering why I'm interested in all this, I am currently
working for the Software Portability Lab in the Department of Computer
Science at the University of Waterloo, which is developing
general purpose, reasonably portable, workstation software.  All software is
written in "Port" (a direct descendant of the UW language "Zed", itself a
BCPL descendant) and makes extensive use of a message-passing kernel.
  The user interface, certainly the most heatedly debated part of 
the software, is still in its early stages and not well defined yet.  The
goal is to develop something that will be easily learnt, allow applications
all the freedom they need, and run reasonably on an 8086 Multibus machine.
I will try to get something on the net about it when it becomes more
interesting.
  peter rowley, u. waterloo, (decvax!watmath!csc)