The Moldable Development Environment

A Moldable Development Environment makes it inexpensive to create custom tools. It is built as a language made out of interactive and visual operators that can be extended and combined in many ways.

Glamorous Toolkit is an elaborate implementation of such an environment.

A basic example from Glamorous Toolkit

As an example, let us consider inspecting the object corresponding to the current working directory. A default inspector would show this. It's an accurate description of the variables of the FileReference AbstractFileReference subclass: #FileReference instanceVariableNames: 'filesystem' classVariableNames: '' package: 'FileSystem-Core-Public' instance.

Now consider the very same object viewed like this:

Which one is more recognizable? Which one makes you feel more comfortable? Likely the second one. We do not have to think whether the instance represents a file or a directory. The view clearly shows the contents of the directory through a view that is already familiar to you.

While the first view is generic in that it is applicable to any object, the second one is useful exactly because it is specific. In fact, each point of view can benefit from a specific view. It is for this reason that the inspector offers multiple views and enables you to craft your own for every single object.

This was an example of using the Inspector. To exploit the full potential of Glamorous Toolkit you need to contextualize it through programming. To this end, Glamorous Toolkit offers multiple ways to extend the tools and to express views and other interactions. Throughout the environment the goal of the engines is to make the cost of custom tools as inexpensive as possible. For example, this applies to how you search (see Spotter), how you write code (see Coder) or how manage your knowledge base (see Lepiter).

This apparently small change in perspective has a dramatic influence on how you can approach software systems.