[Cuis-dev] Morphic's design
Gerald Klix
cuis.01 at klix.ch
Thu Aug 17 08:16:17 PDT 2023
Hi Guys,
please see below.
On 8/17/23 3:05 PM, Juan Vuletich via Cuis-dev wrote:
> Hi Szabolcs,
>
> On 8/15/2023 4:18 PM, Szabolcs Komáromi via Cuis-dev wrote:
>> Hi Juan, Ken,
>>
>> Thanks for the explanation. I'm constantly confused, at least for the
>> time being, by the dichotomy of Smalltalk's "operating systemness"
>> and its implementation as an application.
>>
>> If Smalltalk would be an operating system it would be normal to have
>> multiple GUI-threads. But Smalltalk is an application thus it is
>> perfectly normal to have only one GUI-thread. If i understand correctly.
>>
>> I'm currently reading John Maloney's papers about Morphic to better
>> understand what Morphic is. If I'm correct Morphic at its core is an
>> abstract idea about a GUI framework that emphasizes concreteness,
>> liveness, and uniformity.
>>
>> When I asked my question what was in my mind is Apple's struggle with
>> QuickDraw and the classic Mac OS's basic design what prohibited
>> preemptive multitasking during the 1990s. I thought maybe there is
>> something similar about Morphic. A somewhat better question would
>> have been whether Cuis' Morphic implementation is inherently not
>> tread safe or every possible implementation of Morphic wouldn't be be
>> thread safe. But this is also a silly question if Morphic is an
>> abstract idea.
>>
>> Regards,
>> Szabolcs
>
> Smalltalk is a bit like an OS and a bit like an application. The
> problem with classic MacOS (and also with Windows and OS/2 at that
> time) was that an OS is assumed to have strict separation between the
> applications it runs, and this was not entirely true.
>
> Cuis can have many "application like" GUIs running at the same time,
> but they are not separate applications, as they share the object
> memory. They also share the GUI Process. This is where Cuis is _not_
> like an operating system, at least not a conventional one.
>
> It is possible, though, to run various WorldMorph at the same time.
> Then each runs in its own GUI Process, and they won't share state at
> all. But if you really want strong separation between Cuis
> applications, it is best to run each in its own Cuis image.
>
> Hope this helps.
>
> Cheers,
That being said:
All of these Smalltalk-80 derived implementations, including Cuis,
have a class called Process, which in current terminology is a misnomer.
As Juan pointed out, every object in the virtual machine
including instances of Process, shares the same (object) memory.
Today this form of "process" is called "thread".
HTH and Best Regards,
Gerald
>
>> On Mon, Aug 14, 2023, at 00:53, Juan Vuletich wrote:
>>> Hi Szabolcs,
>>>
>>> On 8/13/2023 12:54 PM, Szabolcs Komáromi via Cuis-dev wrote:
>>>> Hi,
>>>>
>>>> I'm reading back through the mailing list to gain some knowledge. I
>>>> found this comment from Phil:
>>>> https://lists.cuis.st/mailman/archives/cuis-dev/2021-August/003850.html
>>>>
>>>>> If that is the issue, I think there's a larger problem to be solved.
>>>>> Morphic is inherently not thread safe so you're dealing with an
>>>>> intractable
>>>>> problem (short of re-architecting Morphic.) Other than marking
>>>>> a morph
>>>>> for redraw, anything else touching Morphic from a background
>>>>> process needs
>>>>> to be wrapped in UISupervisor whenUIinSafeState: [].
>>>>>
>>>>
>>>> What makes Morphic inherently not thread safe? Why the community
>>>> didn't addressed this shortcoming when the Morphic framework was
>>>> reachitected anyway?
>>>>
>>>> Regards,
>>>> Szabolcs
>>>
>>> The usual wording would be "single threaded". Morphic is single
>>> threaded, like most (all?) GUI frameworks. You can google "UI
>>> thread" or "GUI thread" and see.
>>>
>>> Synchronization and data protection between threads (we call them
>>> Processes for historical reasons) as required is the responsibility
>>> of the application programmer, like in any environment, except maybe
>>> functional languages and some other special kinds.
>>>
>>> In the mail thread you mention, this was conflated with a similar
>>> issue if stepping messages modified Morphic data structures. There
>>> was only a single Process involved, so it was about a bug, and not
>>> about thread safety. I believe the bug was fixed.
>>>
>>> So, I don't think we need to redesign Morphic to make it "thread
>>> safe", although anybody is welcome to experiment if so inclined.
>>> What we do need to keep doing is fixing bugs, defects and
>>> limitations as we face them.
>>>
>>> Hope this helps.
>>> --
>>> Juan Vuletich
>>> cuis.st
>>> github.com/jvuletich
>>> researchgate.net/profile/Juan-Vuletich
>>> independent.academia.edu/JuanVuletich
>>> patents.justia.com/inventor/juan-manuel-vuletich
>>> linkedin.com/in/juan-vuletich-75611b3
>>> twitter.com/JuanVuletich
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230817/2a9e9c60/attachment.htm>
More information about the Cuis-dev
mailing list