[comp.windows.x] Serpent Alpha Release 0.7

Serpent.Project@SEI.CMU.EDU (11/22/89)

The Software Engineering Institute announces the Serpent User Interface
Management System, Alpha Release 0.7.  Serpent is available via anonymous ftp
from expo.lcs.mit.edu (18.30.0.212) and can be found in
contrib/serpent.tar.Z. The compressed tar file takes up about 1.5 MB.

Serpent Alpha Release 0.7 represents a significant change over Alpha
Release 0.6, in terms of directory structure, file names, and usage.
There are new functions/capabilities, and some new demonstrations. See
notes/README for more information and to get started.

Serpent represents a new generation of User Interface Management Systems
which manage the total dynamic behavior of an interface and which allow
applications to remain uninvolved with the details of the user interface.

Serpent is a UIMS which is designed to manage the specification and dynamic
behavior of (relatively) arbitrary toolkits.  It provides for a fixed
application programmer interface across changes in toolkits.  This allows an
application to evolve from one toolkit to another, and Serpent manages all
of the interactions between the toolkits.

There is a language which is used to describe the user interface and its
dynamic behavior.  There is an editor (under construction) which will allow
the interface to be built using standard type drawing facilities.   Only the
language and its supporting software is being released at this time.  The
language is very simple for specifying simple interfaces ("Hello World" is
reproduced in its entirety following the text) and is powerful enough to
provide for drawing and visual programming demonstrations (both are
included in the released software).

Serpent is intended to be used either with an application (in a production
environment) or without an application (in a prototyping environment).
There is an interface description language used both by the application to
describe its interface to Serpent and by the toolkits to describe their
interfaces to Serpent.   Applications and toolkits written in either C or Ada
can be used with Serpent, although the interface description mechanism is
designed to be extensible to other languages.

The use of Serpent depends upon the types of toolkits which have been
integrated into it.  The released version of Serpent is based on the Athena
Widget Set under the X Toolkit.  The usage of the toolkit includes moving and
resizing capability for widgets and point specification capabilities for form
widgets (to allow pointing for the positioning of new widgets).

The Hello World program is:

#include "saw.ill"

|||

OBJECTS:

   hello: label_widget
      {ATTRIBUTES:
        label_text: "Hello world";
        }

mayer@hplabsz.HPL.HP.COM (Niels Mayer) (11/23/89)

In article <8911221406.AA19705@gh.sei.cmu.edu> Serpent.Project@SEI.CMU.EDU writes:
>Serpent represents a new generation of User Interface Management Systems
>which manage the total dynamic behavior of an interface and which allow
>applications to remain uninvolved with the details of the user interface.
>
>The Hello World program is:
>
>#include "saw.ill"
>
>|||
>
>OBJECTS:
>
>   hello: label_widget
>      {ATTRIBUTES:
>        label_text: "Hello world";
>        }

The Serpent UIMS sounds interesting, but I'm still unclear on what it is,
and what it does.

Unfortunately, the posted example doesn't show much. I can do the same
thing in WINTERP (to hit expo.lcs on Nov 24) in approximately the same #
lines of code. You can probably do that in UIL with the same amount of
code. (Infact the above example looks very similar to a UIL
specification.).

Does your UIMS just allow you to diddle with the visuals/layout of the UI,
but not the semantics? UIL seems to do that already and it obviously won't
get you very far. I would find it difficult to write an abstraction for the
"functionality" of a program that would allow a simple UI specification
file to handle both a button-based and pulldown-menu variant of a
particular application. For example, imagine what kinds of description
files would be needed to change a pushbutton-based interface, like that of
xmh, into an application that uses pulldown menus exclusively...

It seems that a large portion of the semantics of a program is mixed in
with the UI style it expects to use; IMHO you can't really get a good
handle on changing a UI style without providing a way to manipulate the
semantics of your program -- in other words you need to the full power of a
programming language as a UIMS.... and at that point a UIMS is nothing more
than a high-level UI library....

So How do you go about making the program-semantics/UI separation in
Serpent?

Other questions:

(1) Does your UIMS support abstractions to allow the management of
dialogues between user and application? (often implemented via state
machines).

(2) Do you have any small but realistic example applications built with
Serpent that show off the power of this UIMS? My favorite canonical sample
application is a grep-search-browser. Most of the "semantics" goes on
inside the unix command 'grep' all the "UIMS" has to do is provide the
interface.

(3) Is serpent interactive/interpretive or compiled? If I want to change
the color of a widget, or change the functionality behind a button, do I
have to bring Serpent down, and then reload (recompile) it again?

-------------------------------------------------------------------------------
	    Niels Mayer -- hplabs!mayer -- mayer@hplabs.hp.com
		"Charter Memeber -- UIL Haters Anonymous"
		  Human-Computer Interaction Department
		       Hewlett-Packard Laboratories
			      Palo Alto, CA.
				   *