# Archy (software)

Archy is a software system that had a user interface that introduced a different approach for interacting with computers with respect to traditional graphical user interfaces. Designed by human-computer interface expert Jef Raskin, it embodies his ideas and established results about human-centered design described in his book The Humane Interface. These ideas include content persistence, modelessness, a nucleus with commands instead of applications, navigation using incremental text search, and a zooming user interface (ZUI). The system was being implemented at the Raskin Center for Humane Interfaces under Raskin's leadership. Since his death in February 2005 the project was continued by his team, which later shifted focus to the Ubiquity extension for the Firefox browser.
Archy in large part builds on Raskin's earlier work with the Apple Macintosh, Canon Cat, SwyftWare, and Ken Perlin's Pad ZUI system. It can be described as a combination of Canon Cat's text processing functions with a modern ZUI. Archy is more radically different from established systems than are Sun Microsystems' Project Looking Glass and Microsoft Research's "Task Gallery" prototype. While these systems build upon the WIMP desktop paradigm, Archy has been compared as similar to the Emacs text editor, although its design begins from a clean slate.
Archy used to be called The Humane Environment ("THE"). On January 1, 2005, Raskin announced the new name, and that Archy would be further developed by the non-profit Raskin Center for Humane Interfaces. The name "Archy" is a play on the Center's acronym, R-CHI. It is also an allusion to Don Marquis' archy and mehitabel poetry. Jef Raskin jokingly stated: "Yes, we named our software after a bug" (a cockroach), further playing with the meaning of bugs in software.

## Basic concept

The stated goal of Archy is to design a software system starting from an understanding of human cognition and the needs of the user, rather than from a software, hardware, or marketing viewpoint. It aims to be usable by disabled persons, the technology-averse, as well as computer specialists. This ambitious plan to build a general purpose environment that is easy to use for anyone is based on designing for the common cognitive capabilities of all humans.
The plan includes making the interface as "modeless" as possible, to avoid mode errors and encourage habituation. In order to achieve this, modal features of current graphical user interfaces, like windows and separate software applications, are removed.

## Features
### Persistence

All content in Archy is persistent. This eliminates the need for, and the concept of, saving a document after editing it. The system state is preserved and safe from crashes and power outages: if the system crashes or power goes off, one simply restarts the system and takes up working where one left off when the problem occurred.

#### Universal undo

A detailed history of the user's interaction allows all actions to be undone since his/her very first action performed within Archy, and re-done again up to the most recent action. Universal and unlimited undo is one key element for the design goals stated in The Humane Interface, since it allows for all the user's work to be recovered in any case.

### Leaping

A main feature of the interface is Leaping, a means of moving on-screen via incremental text-search. The system provides two commands, Leap-forward and Leap-backward, invoked through dedicated keys (meant to be pressed with the thumbs), that move the cursor to the next and prior position that contains the search string. Leaping is performed as a quasimode operation: press the Leap key and, while holding it, type the text that you want to search; finally release the Leap key. This process is intended to habituate the user and turn cursor positioning into a reflex.
Leaping to document landmarks such as next or previous word, line, page, section, and document amounts to leaping to Space, New line, Page, and Document characters, which are inserted using the Spacebar, Enter, Page and Document keys respectively. On a standard computer keyboard, Archy uses the Alt keys as Leap keys, Backquote (`) as a Document character and Tilde (~) as a Page character.
The cursor can still be moved forward and back by one character using the Left and Right arrow keys, and the text can be scrolled up and down by one line using the Up and Down arrow keys. This is known as Creeping.

### Commands

Another feature is intended to provide the power of a command line interface in a graphical user interface (GUI). Command names can be inserted and executed at any place in the interface. This reduces the need to move a mouse pointer to a menu bar or toolbox to execute commands, and allows for quickly composing the results of several commands in sequence.
To use a command the user types the command name while holding down the command key (the caps-lock key). Most command names are filled in automatically, so the user needs to type only until the full name appears.
Since a command can be used anywhere, applications are obsolete as the core of the interface's design. Installing a new package of commands provides a functionality related to their common task. In this way, the user is not restricted to the closed environment of a single application in order to use these functions. Rather, the API is exposed to the user so that these functions can be used system-wide and combined in ways unforeseen by the designer. Ideally, commands could be installed in the system one by one, so that users can acquire and install only what they need.
Many commands operate on selected areas of text. Selections are displayed by using a background color. Several selections can be active at once, and the color of a given old selection changes as newer selections are made. For example, to send an e-mail message, you might type and select the text of the message, type and select the address of the recipient, and invoke the SEND MAIL command.

### Zoomworld

Archy's zooming user interface (ZUI) element is called Zoomworld. It is a spatial, non-windowing interface: an infinite plane expanding in all directions and zoomable to infinite detail. Extra information on an item is provided by "flying" closer to inspect it, and the destinations of hyperlinks are inserted in-place instead of being represented by textual reference. Browsing in this Zoomworld can be done with a mouse; leap functions are used as a search facility.
Archy's project developed some guidelines for Zoomworld and a working proof of concept, but the built prototype did not include code for zooming.
Project members claim that a similar, but limited, zooming interface was tested in real world applications with remarkable success. With a single minute of training, novices were competent and comfortable with the system. Computer experts reportedly took longer, since they had more preconceived expectations to unlearn. The zooming hospital information system is described in The Humane Interface, including some screen shots.

## License

Archy was initially licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.0 License. This simply stated that "you must give the original author credit, you may not use this work for commercial purposes, and if you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one."
Given the "non-commercial" clause, it is not free software. In November 2017, Aza Raskin changed the license to the MIT License

## Commentary

The interface and functionality of The Humane Environment was compared and found similar to the Emacs editor for its text-based interface without dialog boxes, and its reliance on incremental search and a modifier key for issuing commands. Archy provides an increased focus on learnability and an emphasis in removing modes, which are common in Emacs. The requirement for the LEAP key to be pressed while searching as a quasimode has been criticized as uncomfortable. But note that the LEAP keys in the original Canon Cat are the two large red keys below the space bar; Archy uses the two ALT keys on either side of the space bar, found on most standard keyboards, which are a compromise to using it on commonly available hardware.