Xerblin is a completely general Human-Computer interface.
It provides a single metaphor for interacting with computers that is simple enough to teach to children or the elderly yet provides facilities that are useful to advanced programmers. It can integrate all levels of software from the Desktop to assembly language.
Basic Design (Level 0)
There are three basic user-facing elements to a Xerblin system.
- Stack - a place to put objects for user manipulation. This is similar to a Clipboard, however more than one item can be on it at a time and ExecutableWords (see below) operate on the items on the Stack by convention.
- Dictionary - a place to store ExecutableWords. Any word that is Inscribed into the Dictionary can be executed from the user interface.
- Interpreter - A very simple command interpreter that takes care of running executed words on the Stack. It resembles a Forth interpreter.
In addition to the above three UI elements there are discrete commands called ExecutableWords that provide the basic functionality of the system and can be composed into more complex commands.
- ExecutableWords - The basic units of functionality in Xerblin, these live in the Dictionary and act upon the Stack. They can be composed into compound commands using four primal relations.
The builtin ExecutableWords can be composed into compound commands using the following four primal relations.
- Sequence - do one thing after another.
- Loop - do something over again.
- Branch - do one thing or another.
- Parallel - do two things that don't conflict.
Using the above four relations, compound commands can be composed that perform more involved tasks using built-in or user-provided "primitive" ExecutableWords and other compound commands. This composition can be done by program, by command line, in the GUI using the mouse and keyboard, or by means of parsing languages.
With a rich set of basic Executable Words and the four kinds of Compound Executable Words you have a completely general computer interface that allows for extreme customization and great flexibility yet can be understood by the average user.
Additionally, any program written in any computer language can be decomposed into this format, allowing the more advanced user several interesting possibilities for program development in Xerblin.
GUI Interface (Level 1)
On top of this simple, elegant, extremely efficient model of computer programs there are several kinds of User Interface.
- here is a Command-Line Interface that allows for textual input and output including scripting.
- There is a text-based GUI that has several very useful features.
- There is a Listbox that provides an interactive graphical model of the Xerblin Words, and Lists (for instance the Stack itself) and permits direct-manipulation interaction.
(And there is also a 3D Environment that allows for several sophisticated methods of interaction and design, but it's not going to be ready for the "1.0" release.)
Each of these different interfaces access and control the same Xerblin environment, and it is perfectly alright to use them interchangeably as their strengths and weaknesses indicate, so that you might use the Text interface to author a script which is then sent to the Xerblin Interpreter via the command line interface for execution.
The architecture of the Xerblin system consists of a main, central Xerblin Interpreter wherein the Executable Words and environment of the system reside, and a set of client windows that provide the different aforementioned interfaces to the interpreter.
The complete state of the system can be saved to a file or stream at any time, and then reloaded later or on another machine. This, with a little help from a versioning filesystem (such as provided by Subversion or GIT) permits a sort of time independence. One can go back in time, as it were, to previously saved states of the Xerblin environment and reload them, just like many video games have the capacity to save and reload games.
The proof-of-concept demo version of Xerblin is written in Python and is available for download. It currently contains a the Xerblin code and a script "xerblin" that starts with a Text-based Interface with a Guide loaded as well as a ListBox viewer to visualize the Xerblin Stack.