Re-doing Morphic ( Was: Re: Traits prototype image )

Daniel Joyce daniel.a.joyce at
Fri Feb 7 00:40:17 UTC 2003

On Thursday 06 February 2003 09:43 am, tblanchard at wrote:

> How many morphic projects are there?  To be honest, I get lost every
> time I dig into the thing. Its not quite clear to me how to build
> interesting compositions of morphs - and once I do how do I use my
> interesting composition as a template for making more instances?

BINGO! There is a lack of a good consistent widget set in Morphic. One 
that works for all cases. Look at all the damnable versions of 
buttons/lists/etc that float around. Nevermind the lack of a proper 
tree widget, and my inability to figure out scroll panes. People have 
hacked together about a dozen different broken widgets, all slightly 
incompatible, just to get their stuff working. 

Look at HandMorph for oodles of cruft. Nevermind the presence of IF-ELSE 
logic in morphs that makes decisions based on classes...

If Instance of Class A do this....
Else IF instance of Class B do this....

This is something Smalltalkers make fun of C++ or JAVA programmers doing 
because it's not the OBJECT way, and Morphic is FULL of it! 

Also the clipping/damage code is bad, as is the rendering of widgets 
when they are shrunk too small for their contents ( Hello, every other 
widget set on the planet gets clipping right, why not MORPHIC )

Also, translations/rotations/transforms that are applied to morphs are 
whacked too. They never work or make sense in most cases.

GTK recently adopted SVG for their new themes system. Vector graphic 
based icons, infinite 'resolution'.

Morphic is also a half-n-half mixed system between sprite/raster based 
and vector based imaging model. It's a mess under a hood.

I say, Morphic needs to be attacked on three fronts ( And traits would 
help immensely )....

1) A consistent widget set that allows arbitrary embedding of morphs. 
One could embed a blob morph in a buttonmorph in a list widget morph, 
and have it work. It may never be used, but it should work! ( GTK 
allows embedding of almost all widgets in almost all other widgets ). 
Also widgets should have a sane default layout and clipping policy. 
JAVA's widget defaults are better than Morphic.

2) Rework the imaging model, to a combined raster-vector system under 
the hood, it should support SVG style functionality. Having rock solid 
vector support would provide the necessary tools for making working 
with fonts easier. Arbitrary relative and global transforms w/o the 
need for a 'transform' morph. Transforms would be a internal morph 
property. Thus all morphs could be transformed and moved easily. 
"Transform" morphs used to break message propagation to contained 
morphs. Delete the morph, and the transform morph still hangs around, I 
don't know if this was ever fixed...

3) Refactored halo/menu/tabs/hand system. Look in those for an example 
of currently what is wrong in morphic

4) Standardixed input/events system. 

5) Fix the "actors" system. It's weird, and in most cases broke.

If anything, I think we should start another list to discuss cleaning up 
and redoing Morphic. It needs help. Morphic is the face that Squeak 
presents the world. Having widgets that don't clip properly when 
windows had them since 2.0 is an EMBARASSMENT!


More information about the Squeak-dev mailing list