[squeak-dev] SimpleMorphic

Hannes Hirzel hannes.hirzel at gmail.com
Wed Nov 10 18:37:53 UTC 2010


Juan

Your work is exciting. A work of 6 years! Thank you for making this
available and thanks to ESUG for partially sponsoring your work.

I think we should try it out in any case.

Any suggestions how to proceed? There are four change sets -- some of
the Pharo specific.


--Hannes

On 11/10/10, Juan Vuletich <juan at jvuletich.org> wrote:
> Hi Folks,
>
> A few days ago I released SimpleMorphic for Pharo. SimpleMorphic is the
> Morphic implementation in Cuis. It is much smaller and simpler than the
> one in Pharo (and in Squeak). Please see
> http://lists.gforge.inria.fr/pipermail/pharo-project/2010-November/035302.html
> . A link to the code (for Pharo 1.2) is included.
>
> While this release of the code is for Pharo, it shouldn't be a big deal
> to make it run on Squeak. My hope is that the Pharo community studies it
> in detail, adopts it, and eventually remove the old Morphic. For Squeak,
> maybe the same happens. Or perhaps there would be 2 Morphic UIs for
> Squeak: FullMorphic+Etoys and SimpleMorphic... So, what do you think?
>
> I also sent this comment to the Pharo mail list recently, trying to make
> clear why SimpleMorphic is useful:
>
> "Size of 4 core classes (Morph, MorphExtension, PasteUpMorph and
> WorldState)
> Pharo / Squeak / Cuis
> totalIvars:  39 / 46 / 26
> totalClassVars: 15 / 10 / 5
> totalInstMethods: 1170 / 1764 / 663
> totalClassMethods: 55 / 71 / 16
>
> Size of the whole Morph hierarchy
> Pharo / Squeak / Cuis
> totalClasses: 197 / 331 / 58
> totalIvars:  649 / 1063 / 257
> totalClassVars: 54 / 138 / 28
> totalInstMethods: 6651 / 9186 / 2115
> totalClassMethods: 303 / 858 / 127
>
> SimpleMorphic is much smaller. Core classes are simpler and easier to
> understand, fix and extend. The most important part is that this is not
> blind removal of unused code. A lot of the functionality has been
> redesigned to make it simpler, and the removal was done with great care
> to result in a consistent system. This work started in 2004, so we're
> talking of about 6 years of careful work. All this means that
> SimpleMorphic does not support all the features that Pharo or Squeak
> might support. Please use the browsers and other tools in Cuis to check
> what it indeed can do.
>
> Talking about complexity, let's take for example, morph layout. This is
> started with #doLayoutIn: in Pharo and #doLayoutIfNeeded in SimpleMorphic.
>
> In Pharo, this method calls #adjustLayoutBounds: (19), #layout:in:
> (149), #layoutProportionallyIn: (10),
> #computeCellArrangement:in:horizontal:target: (87),
> #computeGlobalCellArrangement:in:horizontal:wrap:spacing: (31),
> #computeCellSizes:in:horizontal: (30),
> #computeExtraSpacing:in:horizontal:target: (136), #layoutLeftToRight:in:
> (91), #layoutTopToBottom:in: (91), #placeCells:in:horizontal:target:
> (70). The numbers in parenthesis are the sum of the lines of code of the
> implementors. Total lines of code for layout (taking only these most
> important methods) is 714. I doubt there are many people who really
> understand all of this code.
>
> In SimpleMorphic (Cuis), this calls #layoutSubmorphsIn: (10),
> #applyLayoutFrameIn: (11), #layout:in: (24). Total lines of code is 45.
> I believe any smalltalker could understand these in just minutes."
>
> Cheers,
> Juan Vuletich
>
>



More information about the Squeak-dev mailing list