[squeak-dev] A Sad Day

Edgar J. De Cleene edgardec2005 at gmail.com
Thu Aug 13 10:19:49 UTC 2020


>>> 
> 
> 
> On 8/13/20, 4:34 AM, "Trygve Reenskaug" <trygver at ifi.uio.no> wrote:
> 
>>    
>>  Dear All, 
>>  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.
>>  
>>  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.
>>  
>>  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.
>>  
>>  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 single, global machine.
>> BabyIDE extends the Squeak image into this global machine, making all the
>> combined objects available for personal programming as illustrated below:
>>  
>>  
>> 
>>  
>>  
>>  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:
>>  
>>  
>>> ³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.²
>>>   https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/
>>> <https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/>
>>>  
>>>  I couldn¹t agree more. A few examples:
>>>  
>>>  
>>>> 1.   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. 
>>>>  
>>>>  2.   The state of every Morph object is held in its regular instance
>>>> variables PLUS any number of undeclared and undocumented variables in its
>>>> extension, a Dictionary that may include another dictionary inside it. The
>>>> Morph class comment: ³MorphExtension Allows extra properties to be stored
>>>> without adding a storage burden to all morphs.² I¹m more concerned about
>>>> the burden put upon the code reader.
>>>>  
>>>>  3.   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.
>>>>  
>>>>  4.   Class MorphicEventDispatcher has 4 methods in 3.10.2 and 16 methods
>>>> in 5.3.
>>>>  
>>>>  5.   Class MyMorph>> processEvent: anEvent using: anIgnoredDispatcher
>>>>  is a regular event handler in 3.10.2. In 5.3, it is a filter, and its
>>>> execution never stops.
>>>>  
>>>  
>>>  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.
>>>  
>>>  Have fun and Goodbye,
>>>  --Trygve
>>> 
>>> 
Trygve

Don't say Goodbye
As one of 3.10 makers , I'm proud still you use it.
And as one of the admirers of you work also I'm sad.
Squeak these days is a cat bag.
That don't means is unusable.
I try to port Baby to modern Squeak and fail.
Maybe if join forces ?
To all Squeakers my pray to help in this.
A BabyIDE return task force.


Edgar
@morplenauta









More information about the Squeak-dev mailing list