VI. the big picture
——————-
Morphic.js is completely based on Canvas and JavaScript, it is just
Morphic, nothing else. Morphic.js is very basic and covers only the
bare essentials:
a stepping mechanism (a time-sharing multiplexer for lively user interaction ontop of a single OS/browser thread) progressive display updates (only dirty rectangles are redrawn in each display cycle)
a tree structure a single World per Canvas element (although you can have multiple worlds in multiple Canvas elements on the same web page)
a single Hand per World (but you can support multi-touch events) a single text entry focus per World
In its current state morphic.js doesn't support Transforms (you
cannot rotate Morphs), but with PenMorph there already is a simple
LOGO-like turtle that you can use to draw onto any Morph it is
attached to. I'm planning to add special Morphs that support these
operations later on, but not for every Morph in the system.
Therefore these additions ("sprites" etc.) are likely to be part of
other libraries ("microworld.js") in separate files.
the purpose of morphic.js is to provide a malleable framework that
will let me experiment with lively GUIs for my hobby horse, which
is drag-and-drop, blocks based programming languages. Those things
(BYOB4 - http://byob.berkeley.edu) will be written using morphic.js
as a library.