I got pretty fired up last week when I started thinking about designing an IDE and interface builder in the browser, for touch. I hadn't done much research to see what already existed in this space, but I was familiar with Squeak, a Smalltalk environment written in Smalltalk.

It turns out that there already is a system that is effectively Squeak ported to Javascript: the Lively Kernel.

<iframe src="http://blip.tv/play/g_MngvTbawI.x?p=1" width="720" height="433" frameborder="0" allowfullscreen>

The lively kernel seems, on the surface, to satisfy most of the desires I had when I talked about "dynabook software" last week. After all, Squeak was heavily inspired by the Dynabook concept and contributed to by Alan Kay himself. However, there's two critical differences between what I'd like to have and the Lively Kernel environment.

One, it's a little slow under load. You can see it in the video above, when Dr. Ingalls starts really taxing it by live-editing the synthesizer and the engine simulation, but it especially struggles on mobile systems like my iPad, even while single-tasking. I haven't figured out whether that's a function of the resolution, the processor, or both. I need to do some more profiling work to find out for sure. Two, the software is not designed for touch. This may seem like a trivial difference, but I'd argue that touch interfaces have the potential to be the best out of those we have access to technologically right now, and we have to work with what we've got before we can move on to something better. Third, my final goal with this project is simply becoming a better programmer by taking on ambitious but tractable projects, and the Lively Kernel serves as an existence proof of the fact that this is a tractable problem, making it more attractive for my needs, not less.

So, in short, yes, prior art exists, but that doesn't mean I can't improve on it. Facebook's React library (and its novel approach to rendering to the DOM) will probably play a pivotal role in that. I need to spend some time looking into the Morphic graphics model, and verify that it might be improved by doing this work. Maybe that's another direction this project can take: modifying the view layer of the Lively Kernel's Morphic implementation to use React. We'll see.