[comp.sys.ti.explorer] clim for explorer ii

nagase@dsg.csc.ti.com (N Nagase) (02/02/90)

FYI.  I had no intention to make this subject a controversial issue,
but I feel that Mr. McKay's message below needs to forwarded to those
who have read the original Kerry's message.  Since Mr. McKay
has given us the permission to distribute a wider audience, here it is:
I believe Mr. McKay explains very well on some of the issues that Kerry
had pointed out.

Constructive messages are welcome, but let's not debate over it...

Regards,
Nobi

  ------- Forwarded Message

Date: Tue, 23 Jan 90 16:52 EST
From: Scott McKay <SWM@SAPSUCKER.SCRC.Symbolics.COM>
Subject: Re: [(Robert O Schmidt):  clim for explorer ii]
In-Reply-To: <2842094478-3535316@Foxtrot>

    Date: Tue, 23 Jan 90  08:41:18 CST
    From: N Nagase <nagase@dsg.csc.ti.com>

I was attempting to compose a detailed message to answer Mr. Schmidt's
questions, but some inaccuracies in Mr. Kimbrough's reply (as forwarded
by Mr. Nagase) need to be addressed.  It is understandable how these
inaccuracies might arise: the CLIM specification currently publicly
available is out of date, and even the most current CLIM specification
glosses over some of the areas which Mr. Kimbrough alludes to.  All of
the people working on the CLIM specification and implementation are aware
of these omissions, and we are working actively to address them.

You may feel free to distribute this to a wider audience.

    ------- Forwarded Message

    The Standard Lisp Environment (SLE) offers  a broad range of tools  for creating
    object-oriented, graphical user interfaces based on the X Window System.  SLE is
    a standard software  platform for  developing portable  Common Lisp applications
    for the Explorer and other Common Lisp environments.

    Many of the SLE components for user interface programming appear in Release 6.0.

	    CLX     The basic Common Lisp programmer interface to the X Window
		    System.

	    X11M    An X server for the Explorer monochrome display, compatible with
		    X Version 11 Release 3.

	    CLUE    A toolkit for creating user interface objects using CLX and
		    CLOS.

    Future enhancements  planned  for  SLE  include  CLIO,  a  set  of  classes that
    implement many  common  user  interface  components,  including  buttons, menus,
    scrollers, dialogs, text editing,  image display, etc.   An important aspect  of
    CLIO is  that  it  defines  a  programmer  interface to these components that is
    independent of  their  "look-and-feel".   CLIO  allows  a program to be portable
    among different standard look-and-feel environments, including Open Look, Motif,
    and Macintosh.   Also  planned  for  SLE  are  CLOS-based tools for creating and
    interacting with hierarchies  of graphical  primitives such  as lines, polygons,
    curves, and text.

    CLIM (Common Lisp  Interface Manager)  is a  Lisp user  interface toolkit  being
    developed by International Lisp  Associates.  CLIM is  designed to make  many of
    the features of Symbolics Dynamic Windows portable to different window  systems.

It is true that CLIM is an intellectual successor to Dynamic Windows and
that it the intention of CLIM to include many of the features of DW.
However, it is explicitly not a goal to just make a portable version of
DW, since a number of things in DW have since proven to not be portable
(or are out-and-out bad decisions or mistakes).

There will, of course, be conversion tools and macro packages to ease
the transition from DW to CLIM.

    There are currently no plans for CLIM to be available on the Explorer

So far as I know, this is true.  Note that CLIM will almost certainly
work on X Windows running on Explorers.

    CLUE and CLIO are designed to  enable the delivery of portable,  well-integrated
    Lisp applications  on  conventional  systems.   CLUE/CLIO are closely integrated
    with the X  Window System  because X  is the  standard user  interface substrate
    found  on  all  delivery  platforms  for  sophisticated  Lisp  applications  ---
    including supercomputers, workstations,  new-generation personal  computers, and
    even Lisp  machines.   However,  CLIM  falls  short  of  these goals for several
    reasons:
        
In fact, CLIM does not fall short of any of these goals, although the
state of the current specification might lead one to believe that CLIM
does fall short.

      1. Limited power
        
	     Because CLIM  is  designed  to  be  portable  across  different  window
	     systems, it is  unable to  access the  full power  of any  of them.  In
	     particular, a CLIM program running on  the X Window System will  not be
	     able to use certain X features.

This is not so.  At any time, a programmer using CLIM can directly call
X features.  However, doing so trades off against strict portability.
That is, once a programmer calls an X-specific feature, his program is
no longer completely portable to, say, MS Windows.

	     It might  appear  that  the  missing  features  are too "low-level" for
	     anyone  to  worry  about.    But  experience  shows   that  programming
	     sophisticated user interfaces  is complex  and requires  access to  all
	     levels of the system.  While most applications may not need the missing
	     features very often, no access at all can mean significant problems ---
	     abandoning   good   solutions   or   falling   back   on   awkward   or
	     system-dependent work-arounds.

Exactly so, which is why CLIM does not interfere with access to lower
level window system features.

	     In SLE, CLUE and CLIO  are built on top  of CLX but do  not "cover" it.
	     All CLX  functions  are  available  to  application programs.  The true
	     application interface for  UI programming  is CLX+CLUE+CLIO,  with each
	     system providing only those  capabilities not already  present in lower
	     levels.
        
This statement applies to CLIM as well, except that, right now, the
interface for UI programming is CLX+CLIM.  (Note that it would be simple
to write a CLUE back-end to CLIM!)

      2. Lisp-ocentric
        
	     Much of what CLIM offers is a look-and-feel environment different  from
	     any other found on conventional delivery platforms.  Based on Symbolics
	     Dynamic Windows, CLIM is a system originally designed specifically  for
	     Lisp programming.   Some  key  mechanisms  of  CLIM user interfaces ---
	     mouse sensitivity, mouse documentation --- do not appear in any of Mac,
	     Presentation Manager, Motif, Open Look, etc.

Right now, CLIM implements some of its own look-and-feel, which is indeed
based on the Dynamic Windows look-and-feel.  The historical reason for
this is that the people designing and implementing CLIM are most familiar
with the DW look-and-feel, and understand those issues best.

However, that will not remain the case for long.  CLIM's design includes
an adaptive toolkit interface (we sometimes call it "chameleon mode") in
which it directly uses the underlying "widgets" of the toolkit CLIM is
hosted on.  That is, in chameleon mode, CLIM menus have the exact
appearance of, say, OpenLook menus because they *are* OpenLook menus.

Mouse-sensitivity does exists on others UIMSs, so Mr. Kimbrough must be
referring to highlighting.  CLIM can provide highlighting, which gives
the user immediate context-sensitive (semantic) feedback.  CLIM can also
provide mouse documentation.  These features need not be used, but they
are an extremely valuable bit of additional functionality for any
complex user interface, as anyone who has used Symbolics or TI lisp
machines can attest to.

	     In delivery environments, the level at which look-and-feel distinctions
	     appear in the  application architecture  is chiefly  the component,  or
	     "widget", level --- controls, menus,  dialogs, text editing, etc.   But
	     the component level is barely discernible in the CLIM architecture.  It
	     is therefore unclear how a CLIM program can play the look-and-feel game
	     of its delivery environment, much less how it can do this in a  fashion
	     portable to many different look-and-feel environments.

CLIM intentionally hides the component level except when the user decides
that he wants to get to that level of detail.  The component level can be
accessed via things called that are tentatively named "views".  The CLIM
specifications which Mr. Kimbrough has probably seen are silent on this
issue, and that is why it is "barely discernible".  The specification now
being worked on explicitly addresses the widget level.

Things like dialog and menu layout are, by default, handled automatically
by CLIM.  Think about it: for the most part, laying out menus and dialogs
by directly speaking about all of the widgets which comprise the menu or
dialog is just so much busy work.  If the UIMS does that for you, then
you do not have to do it yourself.  Naturally, if you want to lay out
menus and dialogs yourself, you are free to.

	     CLX and CLUE are base mechanisms that are "policy-free"; that is,  they
	     can be used to implement any  look-and-feel.  CLIO represents a set  of
	     components which are implemented to conform to a standard look-and-feel
	     style  guide.    But,   the   programmer   interface  is look-and-feel-
	     independent.   This  means  that  an  application  can  adapt  to   the
	     look-and-feel that  appears  in  the  delivery  environment  simply  by
	     changing the CLIO implementation used.

Ultimately, CLIM allows you to access the look-and-feel of the window
system toolkit it is hosted on.  The programmer interface to CLIM is
also independent of look-and-feel.

      3. Architectural Oddity

	     The CLIM architecture evolved from the peculiar world of Lisp machines,
	     and in many ways it is out  of step with current UI programming  models
	     used elsewhere.

Actually, the CLIM architecture is only out of step with current UI
programming models insofar as it is ahead of them.  If you read Gene
Cicarelli's MIT Master's thesis ("Presentation Based User Interfaces",
MIT AI-TR 794), or in recent work by Pedro Szekely or Dan Olsen, or in
the paper "A Presentation Manager based on Application Semantics" (by
myself, Mike McMahon and Bill York), or in any of the papers in which
Brad Myers mentions the difficulty of doing good semantic feedback, you
will see that my claim that CLIM is ahead of most everything else is not
just an idle boast.  I can forward some of these papers to you if you
would like.

	     The  CLIM  architecture  defines  layers  both  at  a  high  level   of
	     abstraction   (e.g.     command    processor,    presentation    types,
	     accept/present) and at a low  level of abstraction (e.g.   graphics and
	     window system interface).  However,  certain intermediate levels  (e.g.
	     components, or widgets)  are not  well-defined.  Some  of the resulting
	     problems with  look-and-feel  integration  were  mentioned  previously.
	     Another drawback is that important  tools in the larger  UI development
	     environment need  to  operate  at  the  widget  level  --- for example,
	     interactive UI construction tools such as Action!, GUIDE, and UIMX.

As I said above, the publicly available CLIM specifications are
incomplete with respect to the widget level.  Mr. Kimbrough is right
that interactive UI construction tools are important, and you can rest
assured that CLIM will be more than adequate to support such tools.

	     CLIM tends to draw upon a model of interaction that is synchronous  and
	     based  on  typed  commands.    However,  modern  user   interfaces  are
	     asynchronous, are based  on a  uniform event  stream uniting  all input
	     devices, and  are  oriented  toward  graphical  interaction  instead of
	     typing.  Of  course,  this  is  not  to  say that a graphical interface
	     cannot be implemented in CLIM.  But  many features of CLIM ---  command
	     processor, accept/present --- act primarily to enhance a user's ability
	     to "type in" one command at a  time, possibly using pointing as a  kind
	     of shorthand for one or more arguments.

(First an aside: most of the event-loop model UI toolkits are
traditionally used in a synchronous manner.  Nearly every Mac application
I have seen and many X applications are synchronous, except for a small
class of UI objects best called "panic buttons".  In any event, CLIM also
is implemented based on a "uniform event stream uniting all input
devices", so synchronous vs. asynchronous is a red herring.)

It is incorrect to think that CLIM is oriented toward typing.  In fact,
ACCEPT and PRESENT provide for transparent, mixed-mode user interfaces
which support typing as well as pointing devices.  In such a mixed-mode
style, a user can use a pointing device (such as a mouse) to accelerate
the typing process, or he can use the mouse as the only input device.

By the way, CLIM's command model has very little to do with typing.  A
"command" is merely an interface to some operation in the application;
the "command" specifies the types of arguments that the application
operation wants to see.  A "command" says *nothing* about the interaction
style; it is perfectly reasonable to have a completely iconic, direct
manipulation user interface implemented entirely in terms of commands,
ACCEPT and PRESENT.  In fact, I have written a number of such
applications myself which have non-trivial direct manipulation user
interfaces.

What Mr. Kimbrough has not mentioned is the most important aspect of
CLIM, namely, that it provides excellent semantic integration with the
underlying application (via "presentation types").  All user interface
interactions are expressed in terms of semantically typed objects rather
than in terms of widgets.  In addition to being a very concise way of
expressing a user interface, complete UI consistency is gained for free,
and obeys the usual object-oriented model of behavior inheritance.

Traditional (or archaic, if you prefer) command-line interfaces can be
expressed via presentation types, but highly interactive direct
manipulation interfaces actually even simpler in the presentation-based
UI model.  Dialogs in particular are also very easily specified using
presentation types.  The paper "A Presentation Manager Based on
Application Semantics", which can be found in the proceedings of UIST
`89, explains this quite well.

    ------- End of Forwarded Message

To reply to and elaborate on a few points make by Mr. Rice.  Points I
have nothing to add to I simply omitted; I hope that I have in no way
twisted your intention.

     - CLIM is intended to be portable, providing an abstract
       interface to high-level window operations.
    
CLIM provides an abstract interface to UIMSs, not just to window systems.

     - CLIM is claimed to be a window system (as opposed to a
       low-level windowing protocol (like X).  It's supposed
       to have the following characteristics amongst others:
    
CLIM is a UIMS, not a window system.

     - From the above you will see that it looks like they've
       reimplemented a large slice of the Genera window
       system.  This is not entirely surprising, since a
       number of ILA's people are ex-Symbolics employees.
    
As I said above, CLIM is the intellectual succesor to Dynamic Windows,
not simply a portable reimplementation of the same old stuff.

     - CLIM is supposed to work on the native machine's
       windowing substrate.  They have an X version that
       apparently works on random unix boxes running X, a
       Quick-draw version, a Symbolics version and an MS
       windows version to run with the 386 Symbolics product.
    
This is correct.

     - Eventually they plan to have a portable interface to
       things like dialog boxes.  This is intended to give the
       look and feel of the underlying window system for free.
    
This is correct.

     - There is no grapher.  In fact they will not be selling
       any program development tools (yes, I know a grapher is
       a user tool too).  This is because of an agreement with
       the hardware and LISP vendors, each of which would like
       to be the best CLIM development environment.
    
There is a grapher running under CLIM as of Novemeber.

     - CLIM runs under PCL on their sundry implementation.
       Current versions run under the Victoria day release,
       though they claim that they are working closely with
       Gregor to make it work with the next up-and coming PCL
       release.
    
CLIM is also working under Symbolics' implementation of CLOS, which is a
high-performance implementation for Genera and for CLOE.

------- End of Forwarded Message