<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
On 12/21/2021 4:02 PM, Juan Vuletich via Cuis-dev wrote:
<blockquote cite="mid:61C224D2.8030606@zoho.com" type="cite">Hi
Folks,
<br>
<br>
It has become apparent that some class names I chose some time ago
are not meaningful enough. The most confusing is the meaning I
assumed for "Widget". Decades ago, Widget meant "UI element in
some library". Today it means "Anything the user can interact
with". So, I want to do the following renames:
<br>
<br>
MovableMorph -> MorphicWidget
<br>
WidgetMorph -> GUIControlMorph
<br>
KernelMorph -> SpecialMorph
<br>
WorldMorph -> MorphicWorld
<br>
PasteUpMorph -> PlaygroundMorph
<br>
<br>
I hope these convey meaning more effectively.
<br>
<br>
There will be impact on some packages. I have changesets ready to
be applied for all packages in repos in the Cuis-Smalltalk
organization.
<br>
<br>
Before applying all this:
<br>
Do you like the new names? Do you know better ones to suggest?
<br>
Any other thoughts?
<br>
<br>
Thanks,
<br>
</blockquote>
<br>
Hi Folks,<br>
<br>
Thanks for the feedback! This is very helpful and encouraging. It
will help shape Morphic to be more meaningful and easier to
understand and use!<br>
<br>
There are many thoughts and opinions in this thread. All of them are
valuable and insightful. I'll try to briefly review them now. I
didn't include the author of each opinion. In any case, opinions
stand for themselves:<br>
<br>
<blockquote type="cite">My poor Juan, I think we add a lot of
confusion we our opinions ;-)</blockquote>
<br>
Thanks for the sympathy! I think this is a great community exercise,
and I find it fun. Let's see how it goes!<br>
<br>
1) WRT MovableMorph / MorphicWidget<br>
<br>
<blockquote type="cite">It makes sense, because a widget is a
graphic element the user can interact with. Whatever its shape,
rectangular or not. <br>
Will naming the class only Widget makes sense
</blockquote>
<br>
<blockquote type="cite">I like the other names, but perhaps <br>
MovableMorph -> LocatedMorph</blockquote>
<br>
<blockquote type="cite">
<pre wrap="">So I would avoid using the term widget at all in Cuis as part of class or method names. It could be used in package or class category names as widget library seems to be the most frequently used term for libraries of UI components. The same reasoning applies to the term control, which is used in Windows UI frameworks instead of widget.</pre>
</blockquote>
<br>
Given various comments about the meaning of the word "widget" and
its evolution over time, maybe LocatedMorph is the best option.<br>
<br>
2) WRT KernelMorph / SpecialMorph:<br>
<br>
<blockquote type="cite">Kernel was not great, because you can wonder
why it is kernel, why Morph is not the kernel.
<br>
Can you explain what is special with SpecialMorph?
</blockquote>
<br>
<blockquote type="cite">I’ve been thinking about it and I would
rename KernelMorph to RectangularMorph, as in the original
Morphic, because I think having rectangular bounds is enough to
call it “rectangular”. It’s not a rectangle, tho (it wouldn’t make
sense to call it RectangleMorph).</blockquote>
<br>
<blockquote type="cite">
<p>Yes. The RectangularMorph or maybe just RectMorph will be more
meaningful than Kernel/SpecialMorph. Some user will read
Rectangle and be confused, because subclass of KernelMorph can
be non rectangle (Think about a disc or an ellipse) <br>
</p>
In that case I will call it a BoxyMorph or BoxMorph because a
rectangular, ellipse, or any other shape defined by its -x and -y
extents are kind of box.</blockquote>
<br>
<blockquote type="cite">And I don’t think we should make the hand
and the world “special” by giving them a special superclass. I
think trying to separate “system” morphs from “user” morphs is not
a good idea, <span style="color: rgb(0, 0, 0);">all morphs should
be regarded on the same conceptual level, all are morphs and
there’s nothing special about them except implementation
details.</span></blockquote>
<br>
My idea of separating these "special" hierarchy was not a good one.
I agree that this should be merged with current WidgetMorph
hierarchy, under better names. KernelMorph could simple be called
RectMorph.<br>
<br>
<br>
3) WRT WidgetMorph / GUIControlMorph<br>
<br>
<blockquote type="cite">So GUIControlMorph will be rectangular
widget, this is what is expect in graphical control element.
<br>
Make sense
</blockquote>
<br>
<blockquote type="cite">. WidgetMorph wasn't it just a rectangle ?
So why not RectangularMorph ? Or maybe BasicMorph
<br>
or SimpleMorph. "GUIControlMorph" sounds to me something with
sliders and buttons.
</blockquote>
<br>
<blockquote type="cite">And about WidgetMorph I’d keep that name and
make it subclass of RectangularMorph (it just adds borderWidth and
borderColor).</blockquote>
<br>
<blockquote type="cite">No. Because the intend of Juan is to make
Widget not limited to Rectangular like widget, but to extend it to
widget with any kind of shape. So it can't be a sublcass of
KernelMorph. In Juan, renaming scheme, this is GUIControlMorph
which could be a subclass of KernelMorph.</blockquote>
<br>
<blockquote type="cite">
<pre wrap="">As others have suggested I would rename MorphicWidget to RectangularMorph. The existing class comment fits it perfectly then.
</pre>
</blockquote>
<br>
Given that we are also removing the "Kernel" or "Special"
distiction, I think WidgetMorph could be renamed as
BorderedRectMorph, and made subclass of RectMorph (today called
KernelMorph).<br>
<br>
<br>
4) WRT WorldMorph / MorphicWorld and PasteUpMorph / PlaygroundMorph<br>
<br>
<blockquote type="cite">The proposed names are more meaningful for
me.
</blockquote>
<br>
<blockquote type="cite">. I have a strong dislike for
"playgroundXXX" . I don't like it in Pharo Workspace, i don't like
it in Apple products.
<br>
I think the word "play" should be reserved to children or
recreative activity.</blockquote>
<br>
<blockquote type="cite">Actually, I think PasteUpMorph is a better
name to keep. (+1)<br>
</blockquote>
<br>
<blockquote type="cite">
<pre wrap="">Speaking of PasteUpMorph: I don’t mind the name. PlaygroundMorph would fit the class comment. For me it is an area to freely lay out and move around other morphs, so what about LayoutBoardMorph or shorter BoardMorph?
</pre>
</blockquote>
<br>
<blockquote type="cite">
<pre wrap="">Regarding WorldMorph: I don’t mind the name. A slightly more understandable name to newcomers might be DesktopMorph.
</pre>
</blockquote>
<br>
I think that for now, it makes sense to keep these names as they are
today. Maybe rediscuss them after this round of changes.<br>
<br>
<br>
5) WRT the 'Morph' or 'Widget' prefix:<br>
<br>
<blockquote type="cite">I am wondering, do we need to drag these
Morph post/prefix?</blockquote>
<br>
<blockquote type="cite">I’m not sure about MorphicWidget and
MorphicWorld, it seems more consistent to name subclasses of Morph
with the ‘Morph’ suffix. Unless your intention is to start naming
subclasses of MorphicWidget with ‘Widget’ suffix, and in that case
Widget might be a nicer name than MorphicWidget. Just some
thoughts. (+1)<br>
</blockquote>
<br>
<blockquote type="cite">. I would keep for sure the "morph" part at
the end for all names (as already suggested)
</blockquote>
<br>
<blockquote type="cite">Also I think we should call all morphs
*Morph, at least in the base image.</blockquote>
<br>
<blockquote type="cite">
<pre wrap="">To sum up, in my opinion all Morph subclasses should either end with Morph or Window.</pre>
</blockquote>
<br>
Ok. Let's keep the status quo with these, forget about the 'widget'
word. At least for now.<br>
<br>
More general or "global" comments:<br>
<br>
<blockquote type="cite">
<p>Reading at your email, we want coherent names for these
fundamental classes. Here is a distilled proposal from your
suggestions:</p>
<p>MovableMorph -> MorphicWidget -> <b>WidgetMorph </b>(subclass
of Morph)<br>
WidgetMorph -> GUIControlMorph -> <b>RectWidgetMorph
</b>(subclass of WidgetMorph as for now) <br>
KernelMorph -> SpecialMorph -> <b>BoxyMorph </b>/<b>
BoxMorph </b>(subclass of WidgetMorph)<br>
WorldMorph + PasteUpMorph -> <b>WorldMorph</b></p>
<p>I think having both WidgetMorph and RectWidgetMorph names (or
anything with the same idea) will help the future users to
distinguish these two kinds of widget and not be confused as I
was.<br>
</p>
As Luciano mentioned it, we can wonder why in the current name
scheme WidgetMoprh is not a subclass of KernelMorph. But maybe we
can keep this for later and Juan may have some good reason.</blockquote>
<br>
Thanks. That is a good take, but see below, after considering other
ideas and opinions.<br>
<br>
<blockquote type="cite">What’s the difference between the current
KernelMorph and WidgetMorph? They have duplicated code, and the
only difference seems to be that WidgetMorph has border. So they
are kind of the old RectangularMorph and BorderedMorph, if I
remember correctly. If KernelMorph is only there to separate
“system” morphs from “user” morphs I think it shouldn’t exist.</blockquote>
<br>
Ok. Ok. My idea was to suggest people to put aside a bit those
"kernel" or "special" morphs, because they have a lot of complexity
to support Morphic itself; but new, additional morphs usually don't
need this kid of details. Anyway, lets remove that distiction.<br>
<br>
This is my current suggestion, that tries to follow consensus:<br>
<br>
Morph<br>
LocatedMorph (location) [today’s MovableMorph]<br>
RectMorph (extent, color) [to replace KernelMorph and part
of WidgetMorph]<br>
BorderedRectMorph (borderWidth, borderColor) [rest of
today’s WidgetMorph]<br>
PasteUpMorph [no change]<br>
WorlddMorph [no change]<br>
PluggableMorph [no change]<br>
<br>
Please keep the discussion going!<br>
<br>
Thanks,<br>
<pre class="moz-signature" cols="72">--
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a class="moz-txt-link-freetext" href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a>
@JuanVuletich</pre>
</body>
</html>