<div dir="ltr">Trygve, I couldn't avoid my eyes getting heavy by what I learned here. I already knew I share your desire and vision for everyday people to be empowered by personal computing, and have pursued this goal for 20 years with Squeak as well. Tablets came out since then, but they didn't solve it -- they're partitioned by function (app) rather than by object, with woefully insufficient inter-domain cohesion. I still believe the paradigm of "one universe of objects" (some <i>personal</i>, some <i>shared</i>, some <i>internal</i>, some <i>external</i>) and "send a message to an object" -- if properly encapsulated and designed with sufficient empathy for <i>users</i> -- <u>can</u> be understood and embraced into an acceptable paradigm.<div><br></div><div>Indeed, today's Squeak community has become a lonely place for Dynabook dreams, as it became concerned with different goals, but I haven't given up on it still being possible with a derivative of Squeak 5.3. I still have an email from you about Baby*, which I've starred, and intended to get back to you when I finally get to mount my second attack on MaUI[1]. Alas, time is a merciless teacher, I won't get to realize my fantasy to interact with you on this. However, I've now secured a copy of your whitepaper PDF, and the versions of Baby* on SqueakMap, which I look forward to exploring and learning.</div><div><br></div><div>I don't know him personally, but have interacted with Marcel enough to believe his words were simply daring you to elicit more detail, not question your honesty. He's darn good at wrangling Squeak, whatever issue you found, it's a good bet he would be able to fix it. I hope you'll give him the benefit of the doubt. Now is your time to be at peace with the universe. Farewell.</div><div><div><br></div><div>Regards,</div><div> Chris Muller</div></div><div><br></div><div>[1] -- <a href="http://wiki.squeak.org/squeak/3836" target="_blank">http://wiki.squeak.org/squeak/3836</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 13, 2020 at 2:34 AM Trygve Reenskaug <<a href="mailto:trygver@ifi.uio.no" target="_blank">trygver@ifi.uio.no</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>
<br>
<span></span>Dear All,
<br>
Imagine that you bought an iPhone 20 years ago. Over the
years, you have filled it with pictures, contacts, and other
personal data. You
now want to upgrade to iPhone SE and find that all your personal
data are lost
because there is no way to transfer your data. Very sad.<br>
<br>
The same has happened to me with Squeak. The Squeak programs
I have written over the past 20 years are effectively lost because I
can’t port
them to a current version of Squeak. Very sad.<br>
<br>
The essence of object orientation is that objects
collaborate to achieve a goal. I retired 20 years ago and made it my
task to
create DCI (Data-Context-Interaction), a programming paradigm that
merges the
concepts of class and collaboration. BabyIDE is a non-intrusive
Squeak program
that includes a model of DCI as well as tools for programming within
the
paradigm. BabyIDE is a kind of Dynabook, a personal computer for
experts in all
domains. Its target group could be department managers in business
and
industry; they are experts in running their department in
collaboration with
other managers. Another target group could be farmers; they are
experts in
taking care of their animals. A third target group could be
homeowners; they
build expertise in controlling their smart home.<br>
<br>
Squeak is more than a programming language; it is a live
universe of collaborating objects. The shared objects on the web is
also a
universe of collaborating objects that Kevin Kelly called a <i>single,
global
machine</i>. BabyIDE extends the Squeak image into this global
machine, making all the
combined objects available for personal programming as illustrated
below:<br>
<br>
<div align="center"><span><img src="cid:173f3dcd4f51d7dd3f31" width="497" height="284"></span><br>
</div>
<br>
BabyIDE is now running in Squeak 3.10.2, together with a new
Squeak Reverse Engineering tool. I want to port my programs to
Squeak 3.5
to benefit from its improved internet communication facilities. This
port has
been pestering me since April, but the overwhelming complexity of
3.5 has forced
me to accept defeat. I can’t avoid speculating about the nature of
Squeak’s current
target group. It used to be “children of all ages.” Today, it
neither includes
children nor old Smalltalk hands like me (I wrote my first Smalltalk
program in
1978). Stephen Pope, another veteran who also bemoans what is
happening to
Squeak, wrote in a blog: <br>
<br>
<blockquote><i>“</i><i><span style="font-size:12pt;line-height:107%">The most popular
systems (Squeak
and Pharo) both suffer from unbelievable image bloat, with
many thousands of
classes, hundreds of root classes, class hierarchies with many
instance
variables in the high-level (abstract) classes, and too many
packages with cute
but meaningless (to a new-comer) names.”</span></i><br>
<span style="font-size:12pt;line-height:107%">
</span><a href="https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/" target="_blank"><span style="font-size:12pt;line-height:107%">https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/</span></a><br>
</blockquote>
I couldn’t agree more. A few examples:<br>
<br>
<blockquote><span><span>1.<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-kerning:auto;font-feature-settings:normal">
</span></span></span>Class Object defines 485 methods. This
means
that every Squeak object understands at least 485 messages. Most
of them are irrelevant to
the problem at hand, but all of them can be part of unexpected
behavior. <br>
<br>
<span><span>2.<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-kerning:auto;font-feature-settings:normal">
</span></span></span>The state of every Morph object is held
in its
regular instance variables PLUS any number of undeclared and
undocumented
variables in its <i>extension</i>, a Dictionary that may include
another dictionary
inside it. The Morph class comment: <i><span style="font-size:12pt;line-height:107%">“MorphExtension Allows extra
properties to be stored
without adding a storage burden to all morphs.”</span></i> I’m
more concerned about
the burden put upon the code reader.<br>
<br>
<span><span>3.<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-kerning:auto;font-feature-settings:normal">
</span></span></span>For me, the final straw was the new
filtering
phase added to Squeak’s already complex event handling mechanism.
Squeak 3.5
has 208 new methods with ‘filter’ in their name, but there is no
indication as
to what they are for and when to use them. The abstract concepts
of event
filtering are documented, but there is no documentation on their
reification
into concrete code. The complexity of a basically simple mechanism
has reached
a new high far beyond the capabilities of my brain.<br>
<br>
<span><span>4.<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-kerning:auto;font-feature-settings:normal">
</span></span></span>Class MorphicEventDispatcher has 4
methods in
3.10.2 and 16 methods in 5.3.<br>
<br>
<span><span>5.<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-kerning:auto;font-feature-settings:normal">
</span></span></span>Class <i><span style="font-size:12pt;line-height:107%">MyMorph>>
processEvent:
anEvent using: anIgnoredDispatcher</span></i><br>
is a regular event handler in 3.10.2. In 5.3, it is a filter, and
its execution
never stops. <br>
</blockquote>
<br>
After 60 years in programming, 42 of them in Smalltalk, and the
last 20 in Squeak, I have reached the end of my patience and
reluctantly have
to quit Squeak programming. It is truly a sad day.<br>
<br>
Have fun and Goodbye, <br>
--Trygve <br>
<br>
<div>-- <br>
<div>
<p class="MsoNormal"><i><span lang="EN-US">The essence of object orientation is
that objects <span>collaborate<span> </span>to</span> achieve a
goal. </span></i><span lang="EN-US"><br>
<span>Trygve</span> <span>Reenskaug</span> </span><span><a href="mailto:%20trygver@ifi.uio.no" target="_blank"><span lang="EN-US">mailto: trygver@ifi.uio.no</span></a></span><span lang="EN-US"><br>
<span>Morgedalsvn</span>.
5A </span><span style="font-size:10pt"><a href="http://folk.uio.no/trygver/" target="_blank"><span lang="EN-US">http://folk.uio.no/trygver/</span></a></span><span lang="EN-US"><br>
N-0378
Oslo </span><span><a href="http://fullOO.info" target="_blank"><span lang="EN-US">http://fullOO.info</span></a></span><span lang="EN-US"><br>
Norway Tel:
(+47) 468 58 625 </span><span style="font-size:10pt" lang="EN-US"><u></u><u></u></span></p>
</div>
</div>
</div>
<br>
</blockquote></div>