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. *