Newsgroups: comp.windows.garnet,comp.lang.lisp,comp.lang.lisp.mcl,comp.answers,news.answers
Subject: Garnet Toolkit Frequently Asked Questions
Followup-To: comp.windows.garnet
Summary: Garnet User Interface Development Environment for Lisp
Approved: news-answers-request@MIT.EDU

Archive-name: garnet-faq
Last-modified: October 4, 1996--BAM
Posting-Frequency: occassionally

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

Frequently Asked Questions (FAQ) about Garnet.

This file is stored as:
	ftp://a.gp.cs.cmu.edu/usr/garnet/garnet/FAQ

------------------------------------------------------------------------
The following questions about Garnet are answered below:

[1] What Is Garnet?
[2] How do I get Garnet?
[3] Does Garnet run on a Macintosh or a PC?
[4] Which forms of Lisp does Garnet work in?
[5] What hardware does Garnet run on?
[6] How do I get CMU CL (a free, public domain lisp)?
[7] How do I get MCL (Macintosh Common Lisp)?
[8] I am having trouble getting CLX to work...
[9] Why doesn't Garnet use CLOS?
[10] When will there be a C or C++ version of Garnet?
[11] What will happen to the Lisp version?
[12] Why the change to C++?
[13] What do all the acronyms stand for?
[14] How can I learn more about Garnet?

------------------------------------------------------------------------
[1] What Is Garnet?

Garnet is a user interface development environment for Common Lisp and
X11 or Macintosh developed by the User Interface Software Group in the
Human-Computer Interaction Institute at Carnegie Mellon University.
Garnet helps you create graphical, interactive user interfaces for
your software.  It is a large scale system containing many
features and parts.

* Toolkit intrinsics:
   - A custom object-oriented programming system which uses a
	   prototype-instance model. 
   - A graphics layer that hides the differences between X/11 and Macintosh.
   - Automatic constraint maintenance: so properties of objects can depend on
	   properties of other objects, and be automatically re-evaluated
	   when the other objects change.  The constraints can be
	   arbitrary lisp expressions.
   - Built-in, high-level input event handling.
   - Support for gesture recognition
   - 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.
* Two complete widget sets:
   - One with a Motif look and feel implemented in Lisp, and one with
	   a custom look and feel.
* Interactive design tools for creating parts of the interface without
	   writing code:
   - Gilt interface builder for creating dialog boxes
   - Lapidary interactive tool for creating new widgets and for
	   drawing application-specific objects.
   - C32 spreadsheet system for specifying complex constraints.
  (The next parts are not being released.)
   - Jade automatic dialog box creation system.
   - Marquise interactive tool for specifying behaviors.

------------------------------------------------------------------------
[2] How do I get Garnet?
	 
Garnet is available for free by anonymous FTP.  There is currently
only one site from which it is available.   To retrieve Garnet, 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.

** If you are using the Macintosh, then please get the Garnet3.0r1.*
** versions of the files, which were fixed for the new version of MCL by
** Russell Almond.

There are no restrictions on your use or redistribution of Garnet.

NOTE: If you are reading this FAQ from Mosaic or another WWW client,
you can get the README file and perform the ftp operations by
selecting "Garnet FTP directory" off of the Garnet Home Page
http://www.cs.cmu.edu/~garnet -- under the Garnet Information menu.

------------------------------------------------------------------------
[3] Does Garnet run on a Macintosh or a PC?

The latest version of Garnet (V3.0) runs on the Macintosh.  Programs
written on either the Unix or Macintosh version should run pretty much
without change on both kinds of computers.  However, we do not have
Macintosh-look-and-feel widget set, so applications on the Macintosh
will still have to use either the Garnet or Motif look-and-feel
widgets.

There are no plans for a PC version of Garnet (but see the answer to
question [10] below).

The object and constraint system of Garnet, called KR, will work by
itself on other systems, since it only uses straight CommonLisp and no
window manager.  You can FTP just the KR part and the KR manual from
the standard Garnet distribution (see question [2]).
	 
** If you are using the Macintosh, then please get the Garnet3.0r1.*
** versions of the files, which were fixed for the new version of MCL by
** Russell Almond.

------------------------------------------------------------------------
[4] Which forms of Lisp does Garnet work in?

On the Macintosh, we know Garnet works on MCL Version 2.0.1.  On Unix,
Garnet runs on every Lisp that we have come across which has CLX
(interface to X11), which currently includes Allegro, Lucid, CMU,
Harlequin Lispworks, AKCL, CLISP and TI Explorer Lisps.  It appears
that AKCL and CLISP are quite slow.

------------------------------------------------------------------------
[5] What hardware does Garnet run on?

Garnet runs on the Macintosh, or on any machine that has X11 and
Common Lisp implementations.  This is pretty much any workstation
class machine, including Sun, DEC, HP, Apollo, IBM 6000, Silicon
Graphics, etc.

------------------------------------------------------------------------
[6] How do I get CMU CL?

CMU CL is a free, high-quality implementation of full Common Lisp
which works on Suns and other hardware.  CMU Common Lisp is a separate
project unrelated to Garnet.  Garnet does work in CMU CL, and the
following information is from the standard CMU CL FAQ:

   CMU Common Lisp is free, and runs on Sparcs (Mach and SunOs),
   DecStation 3100 (Mach), IBM RT (Mach) and requires 16mb RAM, 25mb
   disk. It includes an incremental compiler, Hemlock emacs-style editor,
   source-code level debugger, code profiler and is mostly X3J13
   compatible, including the new loop macro.  It is available by anonymous
   ftp from any CMU CS machine, such as ftp.cs.cmu.edu [128.2.206.173], in the
   directory /afs/cs.cmu.edu/project/clisp/release. Login with username
   "anonymous" and "userid@host" (your email address) as password. Due to
   security restrictions on anonymous ftps (some of the superior
   directories on the path are protected against outside access), it is
   important to "cd" to the source directory with a single command.
   Don't forget to put the ftp into binary mode before using "get" to
   obtain the compressed/tarred files. The binary releases are
   contained in files of the form
                <version>-<machine>_<os>.tar.Z
   Other files in this directory of possible interest are
   *-source.tar.Z, which contains all the ".lisp" source files
   used to build the various versions. Use "dir" or "ls" to see what is
   available. Bug reports should be sent to cmucl-bugs@cs.cmu.edu.

Please do not send CMU CL questions to the Garnet group: use 
cmucl-bugs@cs.cmu.edu instead.

------------------------------------------------------------------------
[7] How do I get MCL (Macintosh Common Lisp)?

Macintosh Common Lisp is actively supported and developed by Digitool.
Their web site is at http://www.digitool.com/ .  Discussions about MCL
are at news:comp.lang.lisp.mcl .  Digitool also has an FTP site with
patches and contributed code at ftp://ftp.digitool.com:/pub/mcl/ .

------------------------------------------------------------------------
[8] I am having trouble getting CLX to work...

CLX should be supplied with every Common Lisp for Unix.  If you have
trouble with CLX, please contact your Lisp vendor.  We can't help you.

------------------------------------------------------------------------
[9] Why doesn't Garnet use CLOS?

CLOS is the standard Common Lisp Object System, and Garnet uses a
custom object system (called KR) instead.  There are a number of
reasons for this.

The main reason is that Garnet uses a prototype-instance model, rather
than the conventional class-instance model supported by CLOS.  We have
found the prototype model to be more effective for user interface
prototyping and construction.  A second reason is performance: it
appears that KR is more efficient than CLOS for most standard
operations.  Since we have control of KR, we can also optimize the
performance of constraint satisfaction, which would require extra
overhead in CLOS.

------------------------------------------------------------------------
[10] When will there be a C or C++ version of Garnet?

The same group that developed Garnet, the User Interface Software
group at CMU, is now developing a C++ tool instead.  It is very
similar to Garnet, and uses much of the same style of programming.
The C++ version is called Amulet, and more information is available at
	http://www.cs.cmu.edu/~amulet
or mail to amulet@cs.cmu.edu.  Amulet has been released for general
use, and there are projects all over the world using Amulet.  If you
like Garnet or its design, you will probably find Amulet's design
appealing as well, and it runs much faster! 

Amulet currently runs on Unix X/11, Microsoft Windows 95 or NT, and
the Macintosh, using a variety of C++ compilers. 

------------------------------------------------------------------------
[11] What will happen to the Lisp version?

The User Interface Software Group is sorry to report that we can no
longer support Garnet.  The staff people who knew about it have all
left, and we must devote our efforts to Amulet, our new C++ toolkit
(see [10]).  However, a number of Garnet users are still active, so
bug reports and questions to garnet-users@cs.cmu.edu or to the garnet
newsgroup comp.windows.garnet are usually answered by a Garnet user.

If someone is interested in maintaining Garnet and/or integrating the
accummulated patches, please let us know.  

------------------------------------------------------------------------
[12] Why the change to C++?

Political reasons:

* ARPA (our chief funding agency) said we should.

* Many former Lisp users, both in companies and universities, have
been "forced" to switch to C or C++ and the user-base for Garnet was
shrinking.

* We want to have a major impact on the way "real" user interfaces are
programmed, and many people have not felt that things written in Lisp
count as "real".

* The popularity of tcl shows that C programmers are itching for
interactive development of user interfaces, and we think Amulet will
be technically better and easier to use.

Technical reasons:

* We have been repeatedly frustrated that we can create interesting
little utilities really quickly in Garnet, but no-one wants to use
them because (on Unix) the executable image is enormous (typically 12
to 30 megabytes).  They take a lot of diskspace and a long time to
load, and lots of memory to run.  There have also been licensing
issues about distributing Lisp images.

* Speed: We spend 5 years and lots of effort optimizing our Lisp code,
but it was still pretty slow on "conventional" machines.  The initial
version of the C++ version, with similar functionality, appears to be
about THREE TIMES FASTER than the current Lisp version without any
tuning at all.

* Interfaces to interesting external stuff appears immediately in C
but often never in Lisp.  We want to use X extensions, OpenGL, Display
Postscript, multimedia, IPC, network stuff, etc.  There are still no
extensions to CLX for many of the additions to X since R3.


------------------------------------------------------------------------
[13] What do all the acronyms stand for?

GARNET:				KR:			CORAL:
Generating an			Knowledge		Constraint-Based,
Amalgam of			Representation		Object-Oriented
Real-time,						Relations
Novel				OPAL:			And
Editors and			Object			Language
Toolkits			Programming		
				Aggregate		
C32:				Layer			JADE:
CMU's							Judgement-based
Clever and			LAPIDARY:		Automatic
Compelling			Lisp-Based		Dialog
Contribution to			Assistant for		Editor
Computer Science in		Prototyping		
CommonLisp which is		Interface		
Customizable and		Designs			GEM:
Characterized by a		Allowing		Graphics and
Complete			Remarkable		Events
Coverage of			Yield			Manager
Code and 						
Contains a			AGATE:			AMULET:		
Cornucopia of			A			Automatic
Creative			Gesture-recognizer	Manufacture of
Constructs, because it		And			Usable and
Can				Trainer by		Learnable
Create				Example			Editors and
Complex,						Toolkits
Correct				
Constraints that are		MARQUISE:		TALISMAN:
Constructed			Mostly			Toolkit and
Clearly and			Automated,		Application
Concretely, and			Remarkably		Layer for
Communicated using		Quick			Synchronous
Columns of			User			Multiple-user
Cells, that are			Interface		Access over a
Constantly			Software		Network
Calculated so they		Environment
Change				
Continuously, and		SILK:	
Cancel				Sketching
Confusion.			Interfaces
				Like
				Krazy

------------------------------------------------------------------------
[13] How can I learn more about Garnet?

There is an Internet bulletin board called comp.windows.garnet on
which Garnet is discussed.  If you cannot access this, then the
messages are repeated on the mailing list garnet-users@cs.cmu.edu.
Send mail to garnet@cs.cmu.edu to be added if you cannot access the
bulletin board.

There is a World-wide Web page about Garnet which can be accessed via
WWW browsers.  It contains pictures of the Garnet developers, screen
shots from some of your applications, abstracts and postscript for
papers, and links to the Garnet FTP directories and other information.
You can get to the Garnet page by opening the following URL from
within your browser: http://www.cs.cmu.edu/~garnet

The complete reference manuals for Garnet, which include a tour and
tutorial, are available for anonymous FTP (see instructions above).
The best overview article about Garnet appeared in IEEE Computer, vol.
23, No. 11., Nov, 1990. pp. 71-85.  A number of old articles about
Garnet were collected into a CMU Technical Report: "The Garnet
Compendium: Collected Papers, 1989-1990" CMU-CS-90-154, August, 1990.
A new compendium has been printed including 9 recent papers: "The
Second Garnet Compendium: Collected Papers, 1990-1992" CMU-CS-93-108,
February, 1993.  To order either, send mail to reports@cs.cmu.edu.
There have been about 35 refereed papers and 12 technical reports
about Garnet so far, including papers in OOPSLA (88, 92), SIGCHI (89,
90, 91, 92, 93, 94, 95), ACM TOIS (July 90), Visual Computer (Feb 92), and
UIST (89, 91, 92), and a complete bibliography is available on the
Mosaic pages.  The bibliography and the postscript for some articles
are stored in the directory /usr/garnet/garnet/doc/papers/
