[comp.lang.lisp] Lisp, X Toolkit Available for free

bam@a.gp.cs.cmu.edu (Brad Myers) (03/22/90)

This message contains the announcement of the Garnet toolkit, which was
first distributed last December, as well as the announcement of a meeting
on Garnet at the SIGCHI Conference in Seattle.

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
                 Announcing the Availability of Garnet:
     Generating an Amalgam of Realtime, Novel Editors and Toolkits

The Garnet research project in the School of Computer Science at Carnegie
Mellon University is happy to announce the release of our toolkit for
general use.  The Garnet Toolkit helps to implement highly-interactive,
graphical, direct manipulation programs for X/11 in CommonLisp.  These
programs typically have a number of graphical objects (up to about 2500) on
the screen that can be manipulated by the mouse and keyboard.  Typical
applications of the Garnet toolkit include: drawing programs such as
Macintosh MacDraw, iconic file manipulation programs such as the Macintosh
Finder, box and arrow diagram editors such as graphs and PERT charts,
graphical programming languages, board game user interfaces, simulation and
process monitoring programs, user interface construction tools, some forms
of CAD/CAM programs, etc.  The Garnet Toolkit does not help with text
editing (except for small labels or property-sheet fields).

Important features of the toolkit include:
* Coverage of the entire user interface, including the contents of the
  applications' windows.

* Look-and-feel independent, while still providing a high-level of support.
  A set of "widgets" is provided for those who do not wish to define a
  look-and-feel.

* An object-oriented architecture using a prototype-instance model.

* Constraints integrated with the object system, so that any slot (instance
  variable) of any object can be declared as a "formula" which will be
  re-evaluated whenever there is a change in any other objects it references.

* Automatic graphic object updating.  Graphical objects are retained and
  remember their position on the screen.  Whenever any property changes,
  they erase and redraw themselves, along with any other damaged objects.

* Separation of input handling from graphics programming, through the use
  of "interactor" objects, which encapsulate interactive behaviors.

* Hiding all of X/11.  The programmer using the Garnet Toolkit never makes
  Xlib (CLX) calls or receives Xlib events.

In the future, high level tools including a sophisticated Interface Builder,
called Lapidary, will be released.  Garnet is implemented on top of the CLX
interface to X/11, and will work for any CommonLisp.  So far, we have it
working on Allegro, Lucid, and CMU CommonLisps on various hardware.
There is very little implementation-specific code, so porting to other 
platforms should be simple.  Garnet does NOT use CLOS or any existing 
X toolkit (such as Xtk or Motif).  The toolkit comes with debugging tools,
complete reference manuals, and a tutorial.

Garnet is being developed under a grant from DARPA.  Papers about Garnet have
appeared at OOPSLA (1988), SIGCHI (1989 & 1990), UIST (1989), and the
X Conference (1990).

Garnet source and binaries are available for free, but you need to have a
license from CMU.  Already, over 20 sites are licensed and over 100 have
expressed interest.  Send requests (including a full work or university
physical mail address) for additional information or a license to:

	Brad A. Myers
	School of Computer Science
	Carnegie Mellon University
	Pittsburgh, PA  15213-3890
	(412) 268-5150
	brad.myers@cs.cmu.edu

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

I am happy to announce that we will have a meeting on Garnet at the SIGCHI
conference in Seattle, and I hope that you will be able to attend if you
are interested in learning more about Garnet.  The meeting is on
Thursday, April 5, at 8:30 am until 10am in the Convention Center, room 607.
The meeting will be informal, and the agenda is not fixed, but I thought 
I would lead a discussion of the following things:

	* A quick overview of the goals of Garnet.
	* A brief tutorial on the ``best'' ways to program in Garnet.
	* Discussion of what others (e.g. y'all) are doing with Garnet.
	* Thoughts on future enhancements to Garnet.

Both current users and other people interested in Garnet are invited.
The room is quite large (it seats 120 people), so invite your friends.