DAVE'S LIFE ON HOLD

Phosphor - the Light Bearer

Phosphor is a new Javascript development environment, written in Javascript, and runs in Safari 4. It provides a direct manipulation model for editing Javascript objects using a multi-purpose text block. It allows you to inspect and edit live Javascript objects.


Phosphor uses Phos as its underlying object framework / display subsystem. It also adds support for interactive Image, Movie, and Sound objects. These objects are likely to be rolled back into the Phos system in future versions, and provide an easy means to rapidly prototype Javascript interfaces.


Future Direction


There is still some work left to do to package widgets up for sharing and embedding in webpages. While Phos adds AJAX support to all of the objects, there is still some work necessary to make the json deserialization process properly reinitialize saved object state. Once that is done, however, it will be possible to trade live objects across browsers and deploy static applications using Phosphor.


The goal of this project is to create an interactive programming environment that is suitable for teaching children of all ages how to program. It is loosely inspired by Squeak Etoys and the of UI is based on the work of Randall Smith and David Ungar. Specifically, the concept that Javascript objects are represented as a collection of slots, and each slot is directly manipulable. There is no need for creepy action at a distance, typical of the edit, compile, run cycle common to most development environments.


Getting the Code


You can either use the current web app or download the code from the source repository using git:



git clone git://github.com/cthulhuology/Phos.git

There are a few minor variations between the two code bases mostly to account for the changes required to run it on Google Apps. The tutorial code has been removed from the version in git, as it isn't really applicable to everyday use. If you wish to use Phosphor in your own applications, I recommend using the version stored in git.