View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide

The Morphic User-Interface Framework

The Morphic User-Interface Framework, by John Maloney of Disney Imagineering R&D

Current Draft: morphic2.pdf (Updated July 24)

Promised Reviewers:
Jörn Eyrich (
Ned Konz (


Question for reviewers:
Should the section on design principles come earlier (right after the introduction)?

From Jörn:


I like this chapter very much. I haven't done any Morphic programming yet (so I guess I'm a perfect representative of the target audience). Especially after having read some of the complaints about the complexity that has crept into Morphic over time, it is great to be able to read about the principles and the simple and powerful (my favourite definition for "elegance", btw) ideas behind it and the resulting implementation.
After reading this, I think readers will feel confident to be able to dive into Morphic and learn more about the system by using it.

text to be added: +xxx+
text to be deleted: -xxx-

From John Maloney:

Thanks, Jrn, for your review and detailed corrections. I've sent a new version to Mark that fixes most of these; the PDF should appear here by
Monday; it's marked as the draft of "July 21". No need for further typo reports based the older version, thanks!

I'd love feedback on the examples, if anyone has the time to work through them. The interaction, drag-and-drop, and animation parts are much more fun to see and touch on the screen than to read about. There isn't much code, but is it a burden to type it in? I could provide a text file for the CD from which one could cut and paste. (I wouldn't want provide it as a filein, since I want the reader to experience the incremental process of creating a new kind of morph from scratch.)

From Ned Konz:


Comments and corrections for the July 20th version:

If I resize the PicoPaintMorph, it causes the old Form (which can be >4MB) to be discarded. However, there hasn't been a garbage collect yet.
By repeatedly resizing (esp. with big screens, like my 1600x1200 screen), you can quickly run out of memory and lock the system up! Perhaps limiting the size here would be a good idea (how do we do that?), or forcing a garbage collect upon resizing.


This is great, John! It's a full version of the page you posted on the Swiki long ago! A few bugs:

This is GREAT! A few nits:

Adding Livenes - The ref to the 1981 Larry Tesler article is probalby lost to all but those in the smalltalk community.

Layout Morphs - An example here and under Layout Attributes might help.

Other than that a fantastic chapter.

Bruce O'Neel

The chapter was fun to read! And since I haven't done that much with Morphic yes, I probably am part of the right audience :)


The examples made the point. They are so small, so that it didn't feel like a burden at all to type them in. Because of the almost instantaneous feedback it was actually fun to build them. So, I would probably not provide any files to load or cut&paste.

In the PicoPaintMorph I got caught by a little detail, though. Besides having to provide implementations for #mouseDown: and #mouseMove:, I expected to work on the #mouseUp: method as well. (You mention some details regarding "mouse transactions" in the How Morphic Works – Input Processing chapter, but still ... :~)

Robert Hirschfeld

Link to this Page