The Amulet User Interface Development Environment

Special Interest Group Meeting at CHI'96

Brad A. Myers
Human Computer Interaction Institute
School of Computer Science
Carnegie Mellon University
Pittsburgh, PA 15213-3891
(412) 268-5150


User Interface Management Systems, Toolkits, User Interface Development Environments, Interface Builders, C++.


The User Interface Software Group at CMU is investigating ways to make the design, prototyping, and implementation of user interfaces substantially easier. Unlike other user interface development environments that deal only with widgets like menus, scroll bars and buttons, we concentrate on the insides of application windows, which is the part that takes most of the programmerŐs time to design and implement. Typical applications of the technology include visualizations and visual programming environments, drawing programs, user interfaces for expert systems, graph editors, graphical programming languages, game user interfaces, simulation and process monitoring programs, user interface construction tools, CAD/CAM programs, etc.

We have developed two User Interface Development Environments. Garnet [1] is in Common Lisp and runs under X/11 and Macintosh, and has been available for anonymous FTP for about six years. There are nearly 100 projects world-wide using Garnet. To get Garnet, visit the Garnet web page. Amulet is a new system in C++ that runs on X/11, Microsoft Windows NT or Windows 95, and the Macintosh. Amulet incorporates the best ideas of Garnet, as well as new innovations such as a command architecture that supports better modularization and undo [2]. Amulet is also available for anonymous FTP, and there are about 10 projects using it. To get Amulet visit the Amulet web page.

In developing Amulet, we have three primary goals: the first is to make it useful for user interface researchers. This means that Amulet makes it easy to build new kinds of interactive tools and new kinds of widgets, investigate new constraint solving algorithms, and explore innovative interactive technologies. For example, Amulet is the first system to be designed to support multiple constraint solvers operating at the same time, so that researchers can investigate new solver technologies. The second goal is to be useful for students, which means that the system should be easy to learn. Amulet is currently being used by at least three courses at two universities. Finally, we are committed to creating tools useful for general developers, which means providing sufficient performance, robustness and documentation.

Important features of Amulet include:

  • A dynamic, prototype-instance object system that makes prototyping easier.
  • Constraints integrated with the object system, so any value of any object can be computed by a formula which is automatically re-evaluated whenever necessary.
  • A high-level object-oriented output graphics model that handles automatic refresh of objects when they change.
  • A high-level input model that makes it easy to add conventional and gestural behaviors to objects.
  • Built-in support for undo and help.
  • Flexible widgets, such as buttons, menus, scrollbars, text input fields and pull-down menus, implemented using the Amulet intrinsics, which you can easily parameterize or even replace with your own.
  • Interactive debugging tools, including an "Inspector."
  • Amulet is an on-going research project. In the future, Amulet will support 3D, speech, multi-media, multiple people operating at the same time, WWW access, extensive end-user customization, and interactive, demonstrational tools for building interfaces without programming. This special interest group meeting will discuss the present and future designs of Amulet.


    This research is sponsored NCCOSC under Contract No. N66001-94-C-6037, Arpa Order No. B326. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of NCCOSC or the U.S. Government.


    1. Myers, B.A., Garnet: Comprehensive Support for Graphical, Highly-Interactive User Interfaces. IEEE Computer, 1990. 23(11): p. 71-85.

    2. Myers, B.A. and Kosbie, D. Reusable Hierarchical Command Objects. in Proceedings CHI'96: Human Factors in Computing Systems. 1996. Vancouver, BC, Canada. To appear. Postscript