What is the difference between a Morph in Morphic and a NSView in Cocoa?

Morphic is much more than NSView or any other graphics class that simply allow the re-implementation of a limited set of features. Morphic is an extremely malleable UI construction kit. Some design ideas behind Morphic makes this intention clear:

  • A comprehensive hierarchy of 2D coordinate systems is included. They are not restricted to Cartesian or linear. Useful nonlinear coordinate systems include polar, logarithmic,hyperbolic and geographic (map like) projections.
  • Separation of the handling of coordinate systems from the morphs themselves. A morph should only need to select its preferred coordinate system, instead of needing to convert every point it draws to World coordinates by itself. Its #drawOn: method and the location of its sub-morphs are expressed in its own coordinate system.
  • Complete independency of Display properties such as size or resolution. There is no concept of pixel. The GUI is thought at a higher level. All the GUI is independent of pixel resolution. All the rendering is anti aliased.
  • Separating the coordinate system eases the moving, zooming and rotation of morphs.
  • All coordinates are Float numbers. This is good for allowing completely arbitrary scales without significant rounding errors.
  • The Morph hierarchy is not a hierarchy of shapes. Morphs don't have a concept of a border or color. There is no general concept of submorph aligning. A particular morph may implement these in any way that makes sense for itself.
  • Morphic event handling is flexible and allows you to send events to arbitrary objects. That object need not subclass Morph.

Warning: Smalltalk's live dynamic environment is a red pill. Static, frozen languages will never be the same for you ;-)

In a nutshell: Morphic is a virtual world where you can directly explore live objects (just like the real world). Did you ever look at a UI and...

  • wonder "wow, that's really cool! How did they do that?"
  • kvetch "I wish they had done X instead!"

While these thoughts would lead to pain and frustration in any other environment, not so in Morphic.

If you want to blow your mind, become a god in a Morphic world:

  1. Launch a Pharo image, and click on the background (which is actually the "World") to bring up the world menu:

    alt text

  2. Bring up the "halos" on one of the menu options (shift-alt-click on my Mac): alt text

  3. Drag the "Pick Up" halo (top-middle) and drop it somewhere in the world: alt text

  4. Enjoy your menu item which is now available wherever you want it: alt text

Seriously, click it and watch the Browser open!!

Ever have an option you always use that a vendor has buried three-menu-levels deep? Could this be useful?! This is a glimpse of the power of a live direct GUI environment like Morphic.

If you're intrigued, read John Maloney & Randall Smith's paper Directness and Liveness in the Morphic User Interface Construction Environment