<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        <div><span style="font-size: 13.3333px">Hi Benoît --</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">> [...] I never seriously considered replacing Morphic altogether but we must at least recognize that Morphic could get a bit cleaner. [...]</span></div><div><span style="font-size: 13.3333px">> [...] Why can't we even *suggest* such a thing in Squeak without being attacked on the mailing list? [...]</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">What you might have experienced is a simple defense mechanism. ;-) You cannot expect the active community to be happy about you suggesting that nothing has happened in the past 10 years or so.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">Some of us have the time and energy to keep on cleaning up and improving Squeak on a daily basis. We know about the dark and dusty corners. There is no "magic wand" but only hard work to be done.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">Many onward decisions are not easy to be made and *require* people to stick around and stand behind them. One cannot just come along, yell around, delete some classes, and then disappear again.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">Squeak's community and its ecosystem depend on honest contributions. At best, contributors have their own pet projects that motivate them to keep going and really figure out what's needed and what is not. And they are also able to realize when some area is just not their level of expertise to make substantial suggestions or improvements. Still, they should be encouraged to raise their concerns from time to time.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">This is Morphic and *so* cool: http://www.zogotounga.net/comp/squeak/rogue.htm</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">> [...] The 6.0 Squeak image I'm looking at right now has *** 512 ** Morph subclasses ! Do we need all that stuff? [...]</span></div><div><span style="font-size: 13.3333px">> Have you tried unloading EToys just for the fun of it?  It should be a one click or a one-liner thing but it needs its own page of instructions on the wiki [...]</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">Of course, we are also working on untangling the dependencies between EToys and the base system. Along the way, interesting ideas get even ported to become part of the base system.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">I may be wrong, but to me, it looks like that you are either looking for or claim to have a "magic wand" that can make huge changes in a short amount of time without leaving people and content (!) behind.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">https://raw.githubusercontent.com/squeak-smalltalk/squeak-app/squeak-trunk/release-notes/5.1</span></div><div><span style="font-size: 13.3333px">https://raw.githubusercontent.com/squeak-smalltalk/squeak-app/squeak-trunk/release-notes/5.2</span></div><div><span style="font-size: 13.3333px">https://raw.githubusercontent.com/squeak-smalltalk/squeak-app/squeak-trunk/release-notes/5.3</span></div><div><span style="font-size: 13.3333px">https://raw.githubusercontent.com/squeak-smalltalk/squeak-app/squeak-trunk/release-notes/6.0</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">> I get the idea of "basic Squeak" versus "Squeak with EVERYTHING it has to offer" but from a user perspective, [...]</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">Well, you are obviously having a kind of narrow perspective here. A Squeak bundle has far from "everything" loaded in the beginning. You might have a personal bias towards not liking EToys or some other content in the system. Then you come up with an argument like "512 Morph subclasses is too many". However, that's besides the point and not helping to clean-up the system. It's not that users are confronted with that number all the time -- tools will usually only show a fraction of that. Fixating an argument on arbitrary metrics overshadows the actual challenge: what *is* there actually and do we need it? Furthermore: do *I* need it or can I simply unload it for my personal project.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">Yes, we know about all these things. And we have been working on that for many years. You are not mentioning new facts here... even though your words are more evocative compared to what is usually discussed on the list.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">> [...] One could hear the complaints against Morphic from Cuis & Pharo and honestly recognize that there is/was a problem. [...]</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">My personal guess would be that those communities have a fundamentally different perspective on what a Smalltalk system should be. There are voices that want to "dumb it down" (yes, not simplification but ignorance) by treating such systems as mere IDEs or by focusing on "programming language + standard library". However, I think that Smalltalk systems can shine when treated as being more like operating systems, rich multimedia environments, ...hmm... something malleable that might actually be able to "augmenting human intellect" (-> Doug Engelbart). It's more about a healthy environment with liveness and for exploration.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">No, I don't think that we should grow a bigger community at all cost, following some fancy (short-living!) trends from other communities... Instead, we should look out for honest and long-lasting contributors that have real interest in understanding what is there and how to evolve it.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">This here might be an interesting read and worth your time:</span></div><div><span style="font-size: 13.3333px">https://dl.acm.org/doi/10.1145/3563835.3568733</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">For example, a community that disables the Morphic Halo feature by default does not understand or appreciate the benefits of direct manipulation at all. Here is a simple exercise: instead of picking out things that you do not like, try to make a list of things you do like (about Squeak). And then reflect again and discern "better" (or "worse") from "just different" to counter your personal learning bias.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">> I think we can say goodbye to portability. Backwards compatibility (from one Squeak version to another) is a totally different thing though.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">There are several projects that are still portable because they mostly rely on fundamental Smalltalk concepts and standard interfaces such as Collections, Streams, Exceptions, and Tests:</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">- https://github.com/theseion/Fuel (Max is awesome!!)</span></div><div><span style="font-size: 13.3333px">- https://github.com/Metacello/metacello</span></div><div><span style="font-size: 13.3333px">- https://github.com/dalehenrich/filetree</span></div><div><span style="font-size: 13.3333px">- https://github.com/hpi-swa/smalltalkCI</span></div><div><span style="font-size: 13.3333px">- https://github.com/pharo-vcs/tonel</span></div><div><span style="font-size: 13.3333px">  (kind of via: https://github.com/squeak-smalltalk/squeak-tonel)</span></div><div><span style="font-size: 13.3333px">- https://github.com/svenvc/ston</span></div><div><span style="font-size: 13.3333px">  (kind of via: https://github.com/squeak-smalltalk/squeak-ston)</span></div><div><span style="font-size: 13.3333px">- ...</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">Therefore, I think that portability should have its place in a serious discussion about moving forward. :-) We must consider "Smalltalk as a whole" when looking for its place in the modern computing world.</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">Best,</span></div><div><span style="font-size: 13.3333px">Marcel</span></div><div class="mb_sig"></div><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 24.02.2023 17:35:18 schrieb Benoit St-Jean <bstjean@yahoo.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 2023-02-24 04:02, Marcel Taeumel via
      Squeak-dev wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:Mailbird-c1de9efd-eabc-4b6c-9715-f1bfa8107b27@hpi.de">
      
      <div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr"><span style="font-family: Arial, Helvetica,
          sans-serif">Well, common sense does. ;-) Unless we make this a
          serious discussion considering Pros and Cons, such hasty
          thoughts will get us nowhere. From what I have read so far, I
          assume, that you have no substantial experience in writing
          Morphic applications? I don't know. Sorry, if my conclusion
          offended you. Your kind of shallow call just triggered
          something... :-/</span></div>
    </blockquote>
    <p>Perhaps I wasn't/precise clear enough : I never seriously
      considered replacing Morphic altogether but we must at least
      recognize that Morphic could get a bit cleaner.  And the Squeak
      image too! The 6.0 Squeak image I'm looking at right now has ***
      512 ** Morph subclasses ! Do we need all that stuff? I guess not.
      If at least we could unload packages in a *clean* manner, it would
      make things easier for everyone and facilitate building smaller
      runtime images. <br>
    </p>
    <p>I get the idea of "basic Squeak" versus "Squeak with EVERYTHING
      it has to offer" but from a user perspective, having 512
      subclasses of Morph can be overwhelming.  On the other hand, if
      it's not in the image, how can a user easily find that a
      particular morph is available and exists in a certain
      repository/package? If Squeak comes loaded with EVERYTHING in the
      image, we should at least provide an *easy* way to unload what we
      don't need/want/use : that's not the case right now.</p>
    <p>Have you tried unloading EToys just for the fun of it?  It should
      be a one click or a one-liner thing but it needs its own page of
      instructions on the wiki (<a class="moz-txt-link-freetext" href="https://wiki.squeak.org/squeak/2848">https://wiki.squeak.org/squeak/2848</a>).
      One could hear the complaints against Morphic from Cuis &
      Pharo and honestly recognize that there is/was a problem.  Why
      can't we even *suggest* such a thing in Squeak without being
      attacked on the mailing list?<br>
    </p>
    <p>And no, I'm not offended and your conclusion/assumption was
      right: my Morphic experience is limited<br>
    </p>
    <p><br>
    </p>
    <blockquote type="cite" cite="mid:Mailbird-c1de9efd-eabc-4b6c-9715-f1bfa8107b27@hpi.de">
      <div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr"><span style="font-family: Arial, Helvetica,
          sans-serif">Maybe because us frequent users of Squeak/Morphic
          have already realized that both Cuis and Pollock are just
          different and not inherently better? Well, I don't know about
          Pollock. Cuis has different goals, backwards compatibility may
          not be among its most important ones.</span></div>
    </blockquote>
    <p><br>
    </p>
    <p>I think we can say goodbye to portability. Backwards
      compatibility (from one Squeak version to another) is a totally
      different thing though.<br>
    </p>
    <blockquote type="cite" cite="mid:Mailbird-c1de9efd-eabc-4b6c-9715-f1bfa8107b27@hpi.de">
      <div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
        <div><span style="font-family: Arial, Helvetica, sans-serif"><br>
          </span></div>
        <div><span style="font-family: Arial, Helvetica, sans-serif">It's
            not that difficult to come up with something different. The
            first weeks might be even fun. After that, you figure out
            all the corner cases and start arguing about compatibility
            and finding balance within the existing community. It is
            hard work. It is easy to ignore this fact in the beginning.</span></div>
        <div><span style="font-family: Arial, Helvetica, sans-serif"><br>
          </span></div>
        <div><span style="font-family: Arial, Helvetica, sans-serif">Best,</span></div>
        <div><span style="font-family: Arial, Helvetica, sans-serif">Marcel</span></div>
        <div>
          <blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px;
            margin-top:20px; margin-left:0px;padding-left:10px;">
            <p style="color: #AAAAAA; margin-top: 10px;">Am 24.02.2023
              05:47:30 schrieb Benoit St-Jean via Squeak-dev
              <a class="moz-txt-link-rfc2396E" href="mailto:squeak-dev@lists.squeakfoundation.org"><squeak-dev@lists.squeakfoundation.org></a>:</p>
            <div style="font-family:Arial,Helvetica,sans-serif">
              <p>Nothing prevents us from replacing Morphic or
                redesigning it!</p>
              <p>If Juan was able to do it for Cuis and Sam Shuster was
                able to design Pollock for VW, what's stopping us from
                even considering that option?</p>
              <p><br>
              </p>
              <div class="moz-cite-prefix">On 2023-02-23 20:14, Stephen
                Travis Pope wrote:<br>
              </div>
              <blockquote type="cite" cite="mid:6B46202C-5ECB-419F-B9C6-AF13646E0355@heaveneverywhere.com">
                <div><br>
                </div>
                Sounds like yet another reason to drop morphic, if you
                ask me, and go back to good-old MVC…
                <div><br>
                </div>
                <div>stp<br>
                  <div> <br class="Apple-interchange-newline" style="font-family: "Times New
                      Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;font-size: 16px;caret-color: rgb(0, 0, 0);color: rgb(0, 0,
                      0)">
                    <span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-family: HelveticaNeue;font-size: 12px;float: none;display: inline !important">--------</span><br style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-family: HelveticaNeue;font-size: 12px">
                    <br style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-family: HelveticaNeue;font-size: 12px">
                    <span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-family: HelveticaNeue;font-size: 12px;float: none;display: inline !important">Stephen Travis Pope    Ojai,</span><span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-family: HelveticaNeue;font-size: 12px;float: none;display: inline !important"> </span><span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-family: HelveticaNeue;font-size: 12px;float: none;display: inline !important">California, USA</span><br style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-family: HelveticaNeue;font-size: 12px">
                    <span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px;caret-color: rgb(0,
                      0, 0);color: rgb(0, 0, 0)">    </span><span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px;caret-color: rgb(0,
                      0, 0);color: rgb(0, 0, 0)"></span><span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-family: HelveticaNeue;font-size: 12px"></span><span style="font-family: "Times New
                      Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;font-size: 16px;caret-color: rgb(0, 0, 0);color: rgb(0, 0,
                      0)"></span><span style="font-family: "Times
                      New Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;caret-color: rgb(0, 0,
                      0);color: rgb(0, 0, 0);font-size: 16px"></span><span style="caret-color: rgb(0, 0, 0);color: rgb(0, 0,
                      0);font-family: "Times New
                      Roman";font-size: 18px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none"></span><span><img alt="pastedGraphic.tiff" src="cid:55B397C7-3D20-4E60-A051-4564245235A7@sd.cox.net" moz-do-not-send="true"></img></span> <span style="font-family: HelveticaNeue"><span style="font-style: normal;font-size: 12px"><br>
                             <a class="moz-txt-link-freetext" href="http://HeavenEverywhere.com" moz-do-not-send="true">http://HeavenEverywhere.com</a></span></span>
                    <div style="font-family: "Times New
                      Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;font-size: 16px;caret-color: rgb(0, 0, 0);color: rgb(0, 0,
                      0)"><span style="font-family: HelveticaNeue"><span style="font-style: normal;font-size: 12px">   
                           <a class="moz-txt-link-freetext" href="http://FASTLabInc.com" moz-do-not-send="true">http://FASTLabInc.com</a></span></span></div>
                    <div style="font-family: "Times New
                      Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;font-size: 16px;caret-color: rgb(0, 0, 0);color: rgb(0, 0,
                      0)"><span style="font-family: HelveticaNeue"><span style="font-style: normal;font-size: 12px">   
                           <a class="moz-txt-link-freetext" href="https://vimeo.com/user19434036/videos" moz-do-not-send="true">https://vimeo.com/user19434036/videos</a></span></span></div>
                    <div style="font-family: "Times New
                      Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;font-size: 16px;caret-color: rgb(0, 0, 0);color: rgb(0, 0,
                      0)"><span style="font-family: HelveticaNeue"><span style="font-style: normal;font-size: 12px">   
                           </span></span><span style="font-size: 12px;font-family: HelveticaNeue"><a class="moz-txt-link-freetext" href="http://heaveneverywhere.com/Reflections" moz-do-not-send="true">http://heaveneverywhere.com/Reflections</a></span></div>
                    <div style="font-family: "Times New
                      Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;text-decoration: none;font-size: 16px;caret-color: rgb(0, 0, 0);color: rgb(0, 0,
                      0)"><span style="font-family: HelveticaNeue"><span style="font-style: normal;font-size: 12px"><br>
                        </span></span><br style="caret-color: rgb(0, 0,
                        0);color: rgb(0, 0, 0);font-family: "Times
                        New Roman";font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none">
                    </div>
                  </div>
                  <div><br>
                    <blockquote type="cite">
                      <div>On Feb 23, 2023, at 1:54 PM, Vanessa
                        Freudenberg <a class="moz-txt-link-rfc2396E" href="mailto:vanessa@codefrau.net" moz-do-not-send="true"><vanessa@codefrau.net></a>
                        wrote:</div>
                      <br class="Apple-interchange-newline">
                      <div>
                        <div dir="ltr">
                          <div>Because Morphic is not
                            multi-thread-clean, you have to be really
                            careful how to write the do_something to be
                            reliably executed from a different process.
                            You have to coordinate with the UI process.
                            In which case it actually becomes simpler to
                            just stay in the UI process and use the
                            mechanisms available.</div>
                          <div><br>
                          </div>
                          <div>Vanessa</div>
                          <div><br>
                          </div>
                          <div class="gmail_quote">
                            <div dir="ltr" class="gmail_attr">On Thu,
                              Feb 23, 2023 at 11:38 AM Stephen Travis
                              Pope <<a href="mailto:stephen@heaveneverywhere.com" moz-do-not-send="true" class="moz-txt-link-freetext">stephen@heaveneverywhere.com</a>>
                              wrote:<br>
                            </div>
                            <blockquote class="gmail_quote" style="margin:0px 0px 0px
                              0.8ex;border-left:1px solid
                              rgb(204,204,204);padding-left:1ex">
                              <div>
                                <div><br>
                                </div>
                                I’ve been watching this thread and
                                wondering why nobody suggests the
                                simplest answer:
                                <div><br>
                                </div>
                                <div><span style="white-space:pre-wrap">  </span>[(Delay
                                  forSeconds: 5) wait.</div>
                                <div><span style="white-space:pre-wrap">  </span>do_something]
                                  fork.</div>
                                <div><br>
                                </div>
                                <div>stp<br>
                                  <div> <br style="font-family: "Times New
                                      Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-size: 16px">
                                    <span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px;float: none;display: inline">--------</span><br style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px">
                                    <br style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px">
                                    <span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px;float: none;display: inline">Stephen
                                      Travis Pope    Ojai,</span><span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px;float: none;display: inline"> </span><span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px;float: none;display: inline">California,
                                      USA</span><br style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px">
                                    <span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px"> 
                                        </span><span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px"></span><span style="font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-family: HelveticaNeue;font-size: 12px"></span><span style="font-family: "Times
                                      New Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-size: 16px"></span><span style="font-family: "Times
                                      New Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-size: 16px"></span><span style="font-family: "Times
                                      New Roman";font-size: 18px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none"></span><span><span id="cid:186804025b35349b00c1"><pastedGraphic.tiff></span></span><span style="font-family: HelveticaNeue"><span style="font-style: normal;font-size: 12px"><br>
                                             <a href="http://heaveneverywhere.com/" target="_blank" moz-do-not-send="true">http://HeavenEverywhere.com</a></span></span>
                                    <div style="font-family: "Times
                                      New Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-size: 16px"><span style="font-family:
                                        HelveticaNeue"><span style="font-style: normal;font-size: 12px">     <a href="http://fastlabinc.com/" target="_blank" moz-do-not-send="true">http://FASTLabInc.com</a></span></span></div>
                                    <div style="font-family: "Times
                                      New Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-size: 16px"><span style="font-family:
                                        HelveticaNeue"><span style="font-style: normal;font-size: 12px">     <a href="https://vimeo.com/user19434036/videos" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">https://vimeo.com/user19434036/videos</a></span></span></div>
                                    <div style="font-family: "Times
                                      New Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-size: 16px"><span style="font-family:
                                        HelveticaNeue"><span style="font-style: normal;font-size: 12px">     </span></span><span style="font-size: 12px;font-family: HelveticaNeue"><a href="http://heaveneverywhere.com/Reflections" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">http://heaveneverywhere.com/Reflections</a></span></div>
                                    <div style="font-family: "Times
                                      New Roman";font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none;font-size: 16px"><span style="font-family:
                                        HelveticaNeue"><span style="font-style: normal;font-size: 12px"><br>
                                        </span></span><br style="font-family: "Times
                                        New Roman";font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;text-decoration: none">
                                    </div>
                                  </div>
                                  <div><br>
                                    <blockquote type="cite">
                                      <div>On Feb 22, 2023, at 11:16 AM,
                                        karl ramberg <<a href="mailto:karlramberg@gmail.com" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">karlramberg@gmail.com</a>>
                                        wrote:</div>
                                      <br>
                                      <div>
                                        <div dir="ltr">
                                          <div dir="ltr"><br>
                                          </div>
                                          <br>
                                          <div class="gmail_quote">
                                            <div dir="ltr" class="gmail_attr">On Wed,
                                              Feb 22, 2023 at 8:47 AM
                                              Taeumel, Marcel via
                                              Squeak-dev <<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">squeak-dev@lists.squeakfoundation.org</a>>
                                              wrote:<br>
                                            </div>
                                            <blockquote class="gmail_quote" style="margin:0px 0px 0px
                                              0.8ex;border-left:1px
                                              solid
                                              rgb(204,204,204);padding-left:1ex">
                                              <div>
                                                <div dir="auto">(bm2
                                                  future: 1000)
                                                  doButtonAction.</div>
                                              </div>
                                            </blockquote>
                                            <blockquote class="gmail_quote" style="margin:0px 0px 0px
                                              0.8ex;border-left:1px
                                              solid
                                              rgb(204,204,204);padding-left:1ex">
                                              <div>
                                                <div dir="auto"><br>
                                                </div>
                                                <div dir="auto">Also
                                                  works for objects that
                                                  are not or cannot be
                                                  in the world.</div>
                                                <div dir="auto"><br>
                                                </div>
                                                <div dir="auto">Uses
                                                  Morphic alarms when
                                                  when in UI process.</div>
                                              </div>
                                            </blockquote>
                                            <div> </div>
                                            <div>
                                              <div>Ah, that's cool. I
                                                never used #future:  :-)</div>
                                              <div><br>
                                              </div>
                                              <div>Best,</div>
                                              <div>Karl</div>
                                                <br>
                                            </div>
                                            <blockquote class="gmail_quote" style="margin:0px 0px 0px
                                              0.8ex;border-left:1px
                                              solid
                                              rgb(204,204,204);padding-left:1ex">
                                              <div>
                                                <div dir="auto"><br>
                                                </div>
                                                <div dir="auto">Best,</div>
                                                <div dir="auto">Marcel</div>
                                                <hr style="display:inline-block;width:98%">
                                                <div id="m_-1050382433257594564m_7109622996527457199divRplyFwdMsg" dir="ltr"><span style="font-family:
                                                    Calibri, sans-serif"><b>From:</b>
                                                    Squeak-dev <<a href="mailto:squeak-dev-bounces@lists.squeakfoundation.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">squeak-dev-bounces@lists.squeakfoundation.org</a>>
                                                    on behalf of Eduardo
                                                    Ochs <<a href="mailto:eduardoochs@gmail.com" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">eduardoochs@gmail.com</a>><br>
                                                    <b>Sent:</b>
                                                    Wednesday, February
                                                    22, 2023 7:17:01 AM<br>
                                                    <b>To:</b> The
                                                    general-purpose
                                                    Squeak developers
                                                    list <<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">squeak-dev@lists.squeakfoundation.org</a>><br>
                                                    <b>Subject:</b> Re:
                                                    [squeak-dev] How do
                                                    I "sleep 5"?</span>
                                                  <div> </div>
                                                </div>
                                                <div>
                                                  <div dir="ltr">
                                                    <div dir="ltr">Hi
                                                      Karl!<br>
                                                      Fantastic, thanks!
                                                      =)<br>
                                                      I added this to
                                                      the class in which
                                                      I'm putting most
                                                      of my stuff,<br>
                                                      <br>
                                                      !See class
                                                      methodsFor: 'as
                                                      yet unclassified'
                                                      stamp: 'Edrx
                                                      2/22/2023 02:54'!<br>
                                                      run: aBlock after:
                                                      ms<br>
                                                      | aButton |<br>
                                                      aButton :=
                                                      SimpleButtonMorph
                                                      new.<br>
                                                      aButton
                                                      openInWorld;<br>
                                                              hide;<br>
                                                              target:
                                                      aBlock;<br>
                                                             
                                                      actionSelector:
                                                      #value;<br>
                                                              addAlarm:
                                                      #doButtonAction
                                                      after: ms.<br>
                                                      ! !<br>
                                                      <br>
                                                      and now I can
                                                      simply run this<br>
                                                      <br>
                                                        See run: [ kf :=
                                                      self currentHand
                                                      keyboardFocus ]
                                                      after: 5000.<br>
                                                      <br>
                                                      to save into the
                                                      variable kf the
                                                      morph on which the
                                                      keyboard focus is<br>
                                                      after 5 seconds.
                                                      Neat! =)<br>
                                                      <br>
                                                        Cheers,<br>
                                                          Eduardo Ochs<br>
                                                          <a href="http://anggtwu.net/eev-squeak.html" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">http://anggtwu.net/eev-squeak.html</a><br>
                                                    </div>
                                                    <div><br>
                                                    </div>
                                                    <br>
                                                    <div>
                                                      <div dir="ltr">On
                                                        Wed, 22 Feb 2023
                                                        at 01:56, karl
                                                        ramberg <<a href="mailto:karlramberg@gmail.com" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">karlramberg@gmail.com</a>>
                                                        wrote:<br>
                                                      </div>
                                                      <blockquote style="margin:0px
                                                        0px 0px
                                                        0.8ex;border-left:1px
                                                        solid
                                                        rgb(204,204,204);padding-left:1ex">
                                                        <div dir="ltr">
                                                          <div>Hi,</div>
                                                          <div>A morph
                                                          has to be in
                                                          the world to
                                                          be able to
                                                          interact with
                                                          it; eg.
                                                          #openInWorld.<br>
                                                          </div>
                                                          <div><br>
                                                          </div>
                                                          <div>If you
                                                          don't want to
                                                          see the morph
                                                          you can send
                                                          it message
                                                          #hide. It
                                                          makes the
                                                          morph
                                                          invisible but
                                                          it's still in
                                                          the world and
                                                          can interact
                                                          with it.<br>
                                                          </div>
                                                          <div>To see
                                                          the morph
                                                          again send
                                                          #show.</div>
                                                          <div>To delete
                                                          the morph send
                                                          #delete. The
                                                          morph will be
                                                          garbage
                                                          collected.<br>
                                                          </div>
                                                          <div><br>
                                                          </div>
                                                          <div>Best,</div>
                                                          <div>Karl<br>
                                                          </div>
                                                          <div><br>
                                                          </div>
                                                        </div>
                                                        <br>
                                                        <div>
                                                          <div dir="ltr">On
                                                          Tue, Feb 21,
                                                          2023 at 11:57
                                                          PM Eduardo
                                                          Ochs <<a href="mailto:eduardoochs@gmail.com" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">eduardoochs@gmail.com</a>>
                                                          wrote:<br>
                                                          </div>
                                                          <blockquote style="margin:0px
                                                          0px 0px
                                                          0.8ex;border-left:1px
                                                          solid
                                                          rgb(204,204,204);padding-left:1ex">
                                                          <div dir="ltr">
                                                          <div dir="ltr">Hi
                                                          Vanessa!<br>
                                                          Thanks! =)
                                                          This works in
                                                          a workspace,<br>
                                                          <br>
                                                            "Create a
                                                          SimpleSwitchMorph
                                                          with label
                                                          'Toggle'<br>
                                                                and a
                                                          SimpleButtonMorph
                                                          with label
                                                          'Flash'.<br>
                                                                The
                                                          button will be
                                                          placed below
                                                          the switch."<br>
                                                            <br>
                                                            sm :=
                                                          SimpleSwitchMorph
                                                          new.<br>
                                                            sm
                                                          openInWorld.<br>
                                                            bm :=
                                                          SimpleButtonMorph
                                                          new.<br>
                                                            bm
                                                          openInWorld.<br>
                                                            bm position:
                                                          bm position +
                                                          (0@32).<br>
                                                            <br>
                                                            "Three ways
                                                          of toggling
                                                          the color of
                                                          the switch:"<br>
                                                            <br>
                                                            sm
                                                          toggleState.<br>
                                                            <br>
                                                            bl := [ sm
                                                          toggleState ].<br>
                                                            bl value.<br>
                                                            <br>
                                                            bm target:
                                                          bl.<br>
                                                            bm
                                                          actionSelector:
                                                          #value.<br>
                                                            bm
                                                          doButtonAction.<br>
                                                            <br>
                                                            "Two ways of
                                                          toggling the
                                                          switch after
                                                          1000ms:"<br>
                                                            <br>
                                                            sm addAlarm:
                                                          #toggleState
                                                          after: 1000.<br>
                                                            bm addAlarm:
#doButtonAction after: 1000.<br>
                                                          <br>
                                                          but this
                                                          doesn't:<br>
                                                          <br>
                                                            bm2 :=
                                                          SimpleButtonMorph
                                                          new.<br>
                                                            bm2 target:
                                                          bl.<br>
                                                            bm2
                                                          actionSelector:
                                                          #value.<br>
                                                            bm2
                                                          addAlarm:
                                                          #doButtonAction
                                                          after: 1000.<br>
                                                          <br>
                                                          What is the
                                                          right way to
                                                          add an alarm
                                                          to a morph
                                                          that is not
                                                          shown on<br>
                                                          the screen?
                                                          Also, can I
                                                          create a new
                                                          invisible
                                                          morph every
                                                          time that I<br>
                                                          want to run an
                                                          alarm? Are
                                                          they going to
                                                          be garbage
                                                          collected?<br>
                                                          <br>
                                                            Thanks in
                                                          advance!<br>
                                                              Eduardo
                                                          Ochs<br>
                                                              <a href="http://anggtwu.net/eev-squeak.html" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">http://anggtwu.net/eev-squeak.html</a><br>
                                                          </div>
                                                          <div dir="ltr"><br>
                                                          </div>
                                                          <br>
                                                          <div>
                                                          <div dir="ltr">On
                                                          Tue, 21 Feb
                                                          2023 at 02:16,
                                                          Vanessa
                                                          Freudenberg
                                                          <<a href="mailto:vanessa@codefrau.net" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">vanessa@codefrau.net</a>>
                                                          wrote:<br>
                                                          </div>
                                                          <blockquote style="margin:0px
                                                          0px 0px
                                                          0.8ex;border-left:1px
                                                          solid
                                                          rgb(204,204,204);padding-left:1ex">
                                                          <div dir="ltr">
                                                          <div>The best
                                                          way to do this
                                                          in Morphic is
                                                          with "alarms":</div>
                                                          <div><br>
                                                          </div>
                                                          <div>    self
                                                          addAlarm:
                                                          #changeKeyboardFocus
                                                          after: 5000.<br>
                                                          </div>
                                                          <div><br>
                                                          </div>
                                                          <div>which
                                                          would
                                                          execute the
                                                          morph's
                                                          changeKeyboardFocus
                                                          method 5
                                                          seconds later.</div>
                                                          <div><br>
                                                          </div>
                                                          <div>The way
                                                          of sleeping
                                                          you suggest is
                                                          possible too
                                                          but more
                                                          tricky,
                                                          since you
                                                          would have to
                                                          move your wait
                                                          code to an
                                                          extra process
                                                          to not block
                                                          the UI
                                                          process, but
                                                          then make sure
                                                          that the
                                                          actual work is
                                                          done in the UI
                                                          process again
                                                          (Morphic is
                                                          not
                                                          multithreaded,
                                                          although
                                                          Squeak is).</div>
                                                          <div><br>
                                                          </div>
                                                          <div>Vanessa</div>
                                                          <br>
                                                          <div>
                                                          <div dir="ltr">On
                                                          Mon, Feb 20,
                                                          2023 at 8:49
                                                          PM Eduardo
                                                          Ochs <<a href="mailto:eduardoochs@gmail.com" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">eduardoochs@gmail.com</a>>
                                                          wrote:<br>
                                                          </div>
                                                          <blockquote style="margin:0px
                                                          0px 0px
                                                          0.8ex;border-left:1px
                                                          solid
                                                          rgb(204,204,204);padding-left:1ex">
                                                          <div dir="ltr">Hi
                                                          list,<br>
                                                          <br>
                                                          a few days ago
                                                          I asked for
                                                          help on how to
                                                          send a
                                                          "synthetic"
                                                          keyboard<br>
                                                          event to a
                                                          morph, and
                                                          Karl Ramberg
                                                          gave me
                                                          exactly the
                                                          right hints in<br>
                                                          this thread:<br>
                                                          <br>
                                                          <a href="http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223473.html" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223473.html</a><br>
                                                          <br>
                                                          My code is
                                                          ready except
                                                          for
                                                          documentation
                                                          and comments -
                                                          I'll work on<br>
                                                          that in the
                                                          next few days
                                                          and then post
                                                          the result
                                                          here and on
                                                          the<br>
                                                          wiki...<br>
                                                          <br>
                                                          ...but there's
                                                          a feature that
                                                          I want to add
                                                          to it that -
                                                          again =( -<br>
                                                          needs
                                                          something that
                                                          I'm not being
                                                          able to
                                                          discover by
                                                          myself. How do<br>
                                                          I write a line
                                                          of code that
                                                          waits for 5
                                                          seconds, sort
                                                          of like
                                                          running<br>
                                                          "sleep 5" in a
                                                          shell, and
                                                          that doesn't
                                                          block the rest
                                                          of the system?<br>
                                                          If I have that
                                                          I'll be able
                                                          to run these
                                                          two lines in a
                                                          workspace,<br>
                                                          <br>
                                                            self
                                                          mySleep: 5000.<br>
                                                            kf := self
                                                          currentHand
                                                          keyboardFocus.<br>
                                                          <br>
                                                          switch the
                                                          keyboard focus
                                                          to something
                                                          else by
                                                          clicking on
                                                          it, and<br>
                                                          then the
                                                          variable kf
                                                          will be set to
                                                          this
                                                          "something
                                                          else"...<br>
                                                          <br>
                                                          Thanks in
                                                          advance!<br>
                                                            Eduardo Ochs<br>
                                                            <a href="http://anggtwu.net/eev-squeak.html" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">http://anggtwu.net/eev-squeak.html</a><br>
                                                          <div><br>
                                                          </div>
                                                          </div>
                                                          <br>
                                                          </blockquote>
                                                          </div>
                                                          </div>
                                                          <br>
                                                          </blockquote>
                                                          </div>
                                                          </div>
                                                          <br>
                                                          </blockquote>
                                                        </div>
                                                        <br>
                                                      </blockquote>
                                                    </div>
                                                  </div>
                                                </div>
                                              </div>
                                              <br>
                                            </blockquote>
                                          </div>
                                        </div>
                                        <br>
                                      </div>
                                    </blockquote>
                                  </div>
                                  <br>
                                </div>
                              </div>
                              <br>
                            </blockquote>
                          </div>
                        </div>
                        <br>
                      </div>
                    </blockquote>
                  </div>
                  <br>
                </div>
                <br>
                <fieldset class="moz-mime-attachment-header"></fieldset>
              </blockquote>
            </div>
          </blockquote>
        </div>
      </div>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap=""></pre>
    </blockquote>
  </div></blockquote>
                                        </div>