From: bam+@cs.cmu.edu (Brad Myers)
Newsgroups: comp.object
Subject: KR object system
Date: 8 Nov 92 15:01:13 GMT
Organization: School of Computer Science, Carnegie Mellon

Apparently, there was a post here about the KR object system, which supports
a prototype-instance object system integrated with constraints.  KR is 
implemented in Lisp, and runs in any full Common Lisp.

KR is quite efficient, and probably one of the most widely used 
prototype-instance object systems (as opposed to a class-instance object
system).  Any slot (variable) of any object can contain a constraint in place
of a regular value.  The constraint can be an arbitrary Lisp expression, and
will be re-evaluated whenever the constraint changes.

KR is part of the Garnet User Interface Development Environment.  When used 
with the Garnet graphics system, if the object is a graphical object, then it
will be automatically redrawn whenever the constraint's value changes.

The Garnet system (with KR in it) is available for free, and an overview is
below.  Note that the Garnet requires X/11, but the KR part will work by
itself on Lisps on Macintoshes or PCs (without the graphics system).  However,
the instructions for FTPing, which includes the documentation, assume that
you are getting the entire system.

Programming with KR is described in a recent paper from OOPSLA'92:

Brad A. Myers, Dario A. Giuse, and Brad Vander Zanden. ``Declarative
Programming in a Prototype-Instance System: Object-Oriented
Programming Without Writing Methods,''  Proceedings OOPSLA'92:
ACM Conference on Object-Oriented Programming Systems, Languages, and
Applications.  October 18-22, 1992.  Vancouver, BC, Canada.  
SIGPLAN Notices, vol. 27, no. 10. pp. 184-200.

Thank you for your interest in Garnet.

Brad A. Myers
School of Computer Science
Carnegie Mellon University
5000 Forbes Avenue
Pittsburgh, PA  15213-3890
(412) 268-5150
FAX: (412) 681-5739
bam@cs.cmu.edu


-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
-*-*-*-*-*-  THE GARNET USER INTERFACE DEVELOPMENT ENVIRONMENT  -*-*-*-*-*-*-
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-


Garnet is one of the most sophisticated User Interface Development
Environment in the world.  It helps implement highly-interactive,
graphical, direct manipulation programs for X/11 in Common Lisp.
Typical applications include: drawing programs such as Macintosh
MacDraw, user interfaces for expert systems and other AI applications,
box and arrow diagram editors, graphical programming languages, game
user interfaces, simulation and process monitoring programs, user
interface construction tools, CAD/CAM programs, etc.  

General features include:

* In the Public Domain.  No licensing restrictions!

* Coverage of the entire user interface, including the contents of the
application windows.

* Three high-level interactive design tools:
	- Gilt: an interface builder which allows widgets to be placed
	  with a mouse.
	- Lapidary: allows new widgets and application-specific
	  graphics to be designed using a mouse without programming.
	- C32: a spreadsheet interface for specifying constraints.

* Independence from X/11 and its complexities, since programmers using
Garnet never make Xlib (CLX) calls or receive Xlib events.

* Object-oriented programming using a prototype-instance model. 

* Automatic constraint maintenance, so properties of objects can depend on
properties of other objects, and be automatically re-evaluated when the
other objects change.

* Automatic display management.

* Built-in, high-level input event handling.

* Support for gesture recognition, so innovative interfaces can be
investigated.

* Two complete widget sets: one with the Motif look-and-feel (the only
Motif widget set implemented in Lisp), and the other with a Garnet
look-and-feel.

* Widgets for multi-font, multi-line, mouse-driven text editing.

* Optional automatic layout of application data into lists, tables, trees,
or graphs.

* Automatic generation of PostScript for printing.

* Support for large-scale applications and data visualization.

Garnet is implemented on top of the CLX interface to X/11, and works in
virtually any Common Lisp environment, including Allegro, Lucid, CMU, and
Harlequin Common Lisps on Sun, DEC, HP, Apollo, IBM 6000, and many other
machines.  Garnet does not use CLOS or any existing X toolkit (such as Xtk
or CLIM).  The toolkit comes with debugging tools, complete reference
manuals, and tutorials.

Garnet is being developed under a grant from DARPA, along with additional
industry support.  Papers about Garnet have appeared in OOPSLA (88, 92), SIGCHI
(89, 90, 91), ACM TOIS (July 90), Visual Computer (Feb 92), and UIST (89,
91, 92).  An overview article is in the November 1990 issue of IEEE Computer
(pp. 71-85) and March 18, 1991 issue of Nikkei Electronics (pp. 187-205). 

Garnet is available for free by anonymous FTP.  To retrieve it, ftp to
a.gp.cs.cmu.edu (128.2.242.7).  When asked to log in, use "anonymous", and
your name as the password.  Then change to the garnet directory (note the
double garnet's) and get the README explanation file:
	ftp> cd /usr/garnet/garnet/
	ftp> get README
Now, follow the directions in the README file.

There is an international Usenet newsgroup for Garnet called
comp.windows.garnet.  If you can't read that, then send mail to
Garnet@cs.cmu.edu to be added to the mailing list.

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


/---------\						Generating an
\\--------\\						Amalgam of
 \\        \\						Real-time,
  \\        \\						Novel
   \\     G  \\  A     R     N     E     T		Editors and
    \\        \\					Toolkits
     \\        \\ 
      \\--------\\
       \_________/
Newsgroups: comp.object
From: gt@rundart.demon.co.uk (Giles Todd)