• Ingen resultater fundet

1.6 Related Work

1.6.4 Examples of tailorable systems

GNU Emacs [Sta84, Sta85] is a highly tailorable text editor. It is written in C and has, embedded within it, a lisp interpreter. The interpreter has access to many of the C-level functions. The editor can be tailored in many ways. First, new lisp functions can be written and dened as user-invocable commands. The bindings for the various input devices (keyboard, pointer) can be changed by the user. Furthermore, existing commands can be modied by attaching user-dened functions onto the provided hooks

3not to be confused with Beta patterns.

(or callbacks). GNU Emacs has been highly customized, and today, numerous packages, which customize it in various ways (e.g. language-specic modes, mail, news), exist.

Commercially, there are systems like Microsoft Excel [Mic93] and Microsoft Word [Mic91].

In Excel, for example, it is possible to construct macros (commands) which are written in a simple scripting language, and in terms of its primitive operations. The menu-bar and the tool-bar are also highly customizable. Furthermore, various highly customized spreadsheets can be created by dening various constraints between the cells. This pro-cess, however, can be viewed as just using the system rather than tailoring it. Word oers similar capabilities in that its entire menu-bar and tool-bar can be customized. In addition, these systems also have a notion of an \add-on" by which, other independently development sub-components | like a dictionary, or a bibliography manager | can be loaded into the system, even during execution.

Hypercard [Goo87] can be viewed in two equally justiable ways: as an end-user pro-gramming environment, or as a tailorable stack manager. It is an end-user propro-gramming environment as users construct various applications with it, applications which may or may not be based on cards. It is a tailorable stack manager for it provides a generic stack concept and allows users to customize this stack in a variety of ways. Hypercard uses a simple scripting language known as Hypertalk [App88]. This language allows one to dene the behavior of various aspects of a stack and the cards that comprise the stack.

It is an example of a domain-specic end-user language, specialized to handle cards and stacks.

Applescript [App92] is a general scripting language available on the Macintosh. The prim-itives of this language provide access to various scriptable applications on the Macintosh.

The language resembles Hypertalk in many ways. As an example, a script to ask Excel to open a specied worksheet, select a range of cells, and plot a chart with them, can be written. When such a script is evaluated, in possibly another application, appropriate apple-events are generated and sent to Excel, which must process them and execute the specied commands. In this way the user can tailor his/her workspace. In some script-able applications, every menu-item is implemented by an Apple-script. This script may be edited by the end-user, thus oering the user some potential to tailor the application itself.

In the Unix environment, there are a number of tailorable applications. The various shells, available under Unix, have conguration les which allow customization through the setting of variables and the denition of new commands. The X Window system can be tailored in a variety of ways: from choosing window managers to setting the defaults for various applications. Even X servers can be extended to support additional features.

[Rya90] contains a survey of various scripting languages.

[ZC92, JNZM93] presents a framework for interactive, extensible, information-intensive applications. A part of this framework is an extension language. The unit of program-ming in this language is like a formula. These formulas are like the types found in spreadsheets, only they are generalized. This is because their applications support other visual formalisms in addition to spreadsheet-like grids of cells. The extension language is processed by an embedded Scheme interpreter. This interpreter is able to call new C++

functions without itself being modied or even recompiled. In this way the end-user gets access to the internals of the original application.

A text editor with support for extensible objects oating in text is presented in [Szy92].

In this model, a text is a sequence of elements. Each such element is either a normal character, or an instance of some extension class. Implementing new classes is the primary way of extending the editor. This simple model of extensibility oers the tailor a number of possibilities.

[MCLM90] describes a tailorable system based around the use of distributed on-screen buttons. Buttons are screen objects in Xerox Lisp which look \pressable." When pressed they carry out an action. They can be used without any understanding of the details of the encapsulated action, and thus are a convenient way to tailor the Xerox Lisp environment for individualuser needs. The paper discusses various tailoring techniques centeredaround buttons. Their claim is that this with this approach, they were able to enable non-programmers to tailor their own workstation environment. This, they claim, is because they have a tailoring architecture which supports a large number of tailoring techniques at diering levels of complexity.

Aquanet [MHRJ91] is a hypertext tool with a goal to provide users with the ability to customize knowledge structures for their specic task. This is accomplished through schemas; every session is controlled by a schema that denes a set of allowable basic objects and relation types. It denes the nature and organization of the knowledge structure the user can construct.

SHARE [Gre91] is a \policy-free" view-sharing system whose kernel supports primitives upon which one can build a broad range of policies to manage oor control. View-sharing software allows any unaltered single-user application to be brought into a meeting. In such a system, it is important that it be possible to switch between dierent policies depending on user preferences and the operating environment. SHARE supports this by providing an extensive library of oor-control policies for groups to choose from. The paper claims that programming the policies proved easy and quick, but it doesn't say if this programming is meant to be done by the end-users.

The Intermedia system [Mey86] is discussed in some detail in Chapter 6. It is a frame-work for building hypermedia applications. Notecards [TMH87] is also presented in some

detail in the same chapter. It provides the user with a semantic network of electronic notecards interconnected by typed links. The system's goal is to be adaptable; it does this (1) through being exible: this stems from the multiple interpretations of individual cards and links depending on the context; (2) through being parameterized: for example, one parameter determines whether Browsers distinguish link types by dierent styles of dashing or whether all link types are drawn the same; (3) though being integratable: for example, it has been used to provide access to remote databases and also been inter-faced to a mail system; (4) through being tailorable: for example, users may create new functionality by using the programmer's interface, which can allow users to modify the characteristics of individual cards and links as well as for building new structures.

This dissertation presents techniques for building tailorable applications like these and more. The focus of this dissertation has not been so much on inventing scripting languages as it has been on presenting general techniques for building tailorable systems. Once a tailorable architecture for an application is designed, the scripting language can be easily constructed as a specialization of Beta. This dissertation also shows how to build applications which allow source-level tailoring, as in Notecards and Intermedia, but with a smaller overhead.