Abstract

Yoshiki Ohshima Aran Lunzer Bert Freudenberg Ted Kaehler

yoshiki@vpri.org, aran@acm.org, bert@freudenbergs.de, ted@vpri.org

KSWorld is built using KScript. The fields, or slots, of graphical widgets in KSWorld are reactive variables. Defini- tions of such variables can be added or modified in a local- ized manner, allowing on-the-fly customization of the visual and behavioral aspects of widgets and entire applications. Thus the KSWorld environment supports highly exploratory application building: a user constructs the appearance inter- actively with direct manipulation, then attaches and refines reactive variable definitions to achieve the desired overall behavior.

Figure 1.

The Frank Document Editor.

KScript and KSWorld: A Time-Aware and Mostly Declarative Language and Interactive GUI Framework

Viewpoints Research Institute

1. Introduction

an entire system: a typical desktop OS and commonly used application suite amount to over 100 million lines of code. Our group’s early experiences with personal computing led us to understand that much of this complexity is “acciden- tal”, rather than inherent. In the STEPS project we therefore explored how to reduce such accidental complexity in soft- ware, setting as our domain of interest the entire personal computing environment [1].

As one way of measuring progress on our complexity goal, we provide an overview of the number of lines of code in KSWorld. The total for the KScript compiler, the FRP evaluator, the framework, document model and document editor is currently around 10,000 lines.

In this paper we focus on the end-user authoring envi- ronment. We feel that end-users should be able to make ap- plications of the same kind as those they are using. Toward

KScript is a dynamic language based on the declara- tive and time-aware dataflow-style execution model of Func- tional Reactive Programming (FRP), extended with support for loose coupling among program elements and a high de- gree of program reconfigurability.

The software for today’s personal computing environments has become so complex that no single person can understand

We report on a language called KScript and a GUI frame- work called KSWorld. The goal of KScript and KSWorld is to try to reduce the accidental complexity in GUI framework writing and application building. We aim for an understand- able, concise way to specify an application’s behavior and appearance, minimizing extra details that arise only because of the medium being used.

We illustrate our use of KSWorld to build an editor for general graphical documents, including dynamic documents that serve as active essays. The graphical building blocks for documents are the same as those used for building the editor itself, enabling a bootstrapping process in which the earliest working version of the editor can be used to create further components for its own interface.