Very cool ... I did not know that this was even possible:
How can we improve and stabilize this exciting feature? MVC support seems to be missing at the moment, and also I noticed some other glitches, for example, menus in sub-projects don't pop up directly at the cursor. But this is a fabulous place to start towards perfecting live access to subprojects! Best,
Christoph
Carpe Squeak!
|
Wow, you can even nest them and drag and drop between them (even though with a few hick-ups): https://user-images.githubusercontent.com/38782922/98850138-96282c00-2454-11eb-892a-671201def342.gif Sent from the Squeak - Dev mailing list archive at Nabble.com.
Carpe Squeak!
|
On Wed, Nov 11, 2020 at 12:34:24PM -0600, Christoph Thiede wrote:
> Wow, you can even nest them and drag and drop between them (even though with > a few hick-ups): > https://user-images.githubusercontent.com/38782922/98850138-96282c00-2454-11eb-892a-671201def342.gif > <https://user-images.githubusercontent.com/38782922/98850138-96282c00-2454-11eb-892a-671201def342.gif> > Indeed it is very cool. Bob Arning is certainly a resident expert on this topic (and original author of much of it, judging by the method stamps). It is great that we have managed to keep it semi-functional for all these years, and it will be even greater if can can polish and extend it as you suggest :-) In addition to just being very cool, it is also an excellent way of validating the modularity of Morphic/MVC/SqueakShell/other projects. My hope is that as you and others continue to make progress on reducing dependence on global variables, it will become easier to make embedded worlds work smoothly and reliably. Dave |
Hi Dave,
eliminating further globals is definitively always a desirable goal, but are you referring to any certain domain? It looks as if the most problematic portions of global state resist in the Project/Process logic themselves. For example, should we have one user interrupt watcher per project, and how should be decided which of them is activated if there is an MVC embedded into a Morphic project? Questions over questions :-)
Best, Christoph Von: Squeak-dev <[hidden email]> im Auftrag von David T. Lewis <[hidden email]>
Gesendet: Mittwoch, 11. November 2020 21:19:32 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] Worlds in Worlds are NOT completely dead?! ???? On Wed, Nov 11, 2020 at 12:34:24PM -0600, Christoph Thiede wrote:
> Wow, you can even nest them and drag and drop between them (even though with > a few hick-ups): > https://user-images.githubusercontent.com/38782922/98850138-96282c00-2454-11eb-892a-671201def342.gif > <https://user-images.githubusercontent.com/38782922/98850138-96282c00-2454-11eb-892a-671201def342.gif> > Indeed it is very cool. Bob Arning is certainly a resident expert on this topic (and original author of much of it, judging by the method stamps). It is great that we have managed to keep it semi-functional for all these years, and it will be even greater if can can polish and extend it as you suggest :-) In addition to just being very cool, it is also an excellent way of validating the modularity of Morphic/MVC/SqueakShell/other projects. My hope is that as you and others continue to make progress on reducing dependence on global variables, it will become easier to make embedded worlds work smoothly and reliably. Dave
Carpe Squeak!
|
Hi Christoph,
On Mon, Nov 16, 2020 at 03:31:47PM +0000, Thiede, Christoph wrote: > Hi Dave, > > eliminating further globals is definitively always a desirable goal, but > are you referring to any certain domain? It looks as if the most problematic > portions of global state resist in the Project/Process logic themselves. The four globals of interest are: - World. This has already been cleaned up, and the global World remains only for support of external packages or projects that have references to it. For a trunk image, the global can be removed without issue. - ActiveWorld. This is meaningful only to a Morphic project and presumably can be refactored to eliminate the global. - ActiveHand. This is meaningful only to a Morphic project and presumably can be refactored to eliminate the global. - ActiveEvent. This is probably global to the system, and it may be appropriate to leave it as a global variable. My opinion - ActiveWorld looks like the next thing to eliminate if possible. It is clearly related to World, and figuring out why ActiveWorld needs to exist would be the next problem to solve. After that, ActiveHand would be then next thing to look at. It is specific to Morphic, and it is not clear what it should mean in the context of World in World, or in mixed Morphic and MVC projects. Finally, ActiveEvent might need attention. I would rate this as low priority, and there may not be anything wrong with the current use of global state for ActiveEvent. > For example, should we have one user interrupt watcher per project, and > how should be decided which of them is activated if there is an MVC embedded > into a Morphic project? Questions over questions :-) > The user interrupt watcher exists at a lower level. I think (but am not certain) that it needs to be this way. The event that triggers the user interrupt watcher is processed through the VM, and by the time the VM finds out about the user interrupt request, it does not have any easy way to know about the Process the user request was intended to interrupt. So no, I don't think that this should be handled on a per-Project basis. The key thing is to know (or deduce) what Process needs to be interrupted, and it probably does not much matter what Project context the interrupt is handled in. Dave |
On 17/11/2020 01:11, David T. Lewis wrote: > - ActiveHand. This is meaningful only to a Morphic project and > presumably can be refactored to eliminate the global. How does this interact with multiple hands? |
On Tue, Nov 17, 2020 at 01:41:37PM +0000, Douglas Brebner wrote:
> > On 17/11/2020 01:11, David T. Lewis wrote: > >- ActiveHand. This is meaningful only to a Morphic project and > >presumably can be refactored to eliminate the global. > > How does this interact with multiple hands? > That question, and others like it, are exactly what needs to be understood (and hopefully documented) before attempting any surgery on the system :-) There are a few pages on the swiki that provide some context. This one is a good starting point: http://wiki.squeak.org/squeak/118 Dave |
Don't forget your own email from September: ---------- Forwarded message --------- Von: David T. Lewis <[hidden email]> Date: So., 20. Sep. 2020, 17:50 Subject: [squeak-dev] ActiveGlobals explained by Andreas Raab To: <[hidden email]> In the course of trying to better understand the role of the ActiveHand global, I found an excellent explanation by Andreas Raab in his original change set. I put this on the swiki and linked it to several related pages:   http://wiki.squeak.org/squeak/6647 It is amusing to note how I found this. I was trying to figure out what object should properly own the active hand, and I had conviced myself that it should probably be the WolrdState for a Morphic world. So as an experiment, it tried adding the instance variable to WorldState, and I discovered to my surprise that it was already there. It was completely unreferenced, but one of my Morphic worlds still had it set to point to a HandMorph, which seemed odd. Looking back at old images, I found that the activeHand instance var in WorldState was last used in Squeak 3.0, and that the global variable that replaced it was in use as of Squeak 3.10.2. A bit of digging though the files.squeak.org archives led me to the original change set in which the change was made. Andreas provided a preamble with explanation of the rationale for the change, this this is what I copied to the swiki. Despite the fact that a WorldState instance still point to an activeHand, that reference has apparently been hanging around for the last 20 years without actually being used for anything. Dave David T. Lewis <[hidden email]> schrieb am Di., 17. Nov. 2020, 17:26: On Tue, Nov 17, 2020 at 01:41:37PM +0000, Douglas Brebner wrote: |
Oh my, how did I overlook that ;-)
Indeed, the summary by Andreas is clear and very helpful: http://wiki.squeak.org/squeak/6647 Dave On Tue, Nov 17, 2020 at 07:53:24PM +0100, Jakob Reschke wrote: > Don't forget your own email from September: > > > ---------- Forwarded message --------- > Von: *David T. Lewis* <[hidden email]> > Date: So., 20. Sep. 2020, 17:50 > Subject: [squeak-dev] ActiveGlobals explained by Andreas Raab > To: <[hidden email]> > > > In the course of trying to better understand the role of the ActiveHand > global, I found an excellent explanation by Andreas Raab in his original > change set. I put this on the swiki and linked it to several related pages: > > http://wiki.squeak.org/squeak/6647 > > It is amusing to note how I found this. I was trying to figure out what > object should properly own the active hand, and I had conviced myself > that it should probably be the WolrdState for a Morphic world. > > So as an experiment, it tried adding the instance variable to WorldState, > and I discovered to my surprise that it was already there. It was completely > unreferenced, but one of my Morphic worlds still had it set to point to > a HandMorph, which seemed odd. > > Looking back at old images, I found that the activeHand instance var in > WorldState was last used in Squeak 3.0, and that the global variable that > replaced it was in use as of Squeak 3.10.2. > > A bit of digging though the files.squeak.org archives led me to the > original change set in which the change was made. Andreas provided a > preamble with explanation of the rationale for the change, this this > is what I copied to the swiki. > > Despite the fact that a WorldState instance still point to an activeHand, > that reference has apparently been hanging around for the last 20 years > without actually being used for anything. > > Dave > > > David T. Lewis <[hidden email]> schrieb am Di., 17. Nov. 2020, 17:26: > > > On Tue, Nov 17, 2020 at 01:41:37PM +0000, Douglas Brebner wrote: > > > > > > On 17/11/2020 01:11, David T. Lewis wrote: > > > >- ActiveHand. This is meaningful only to a Morphic project and > > > >presumably can be refactored to eliminate the global. > > > > > > How does this interact with multiple hands? > > > > > > > That question, and others like it, are exactly what needs to be understood > > (and hopefully documented) before attempting any surgery on the system :-) > > > > There are a few pages on the swiki that provide some context. This one > > is a good starting point: > > > > http://wiki.squeak.org/squeak/118 > > > > Dave > > > > > > > |
In reply to this post by David T. Lewis
Hi Dave,
I don't see your point. I already have eliminated ActiveWorld, ActiveHand, and ActiveEvent *are* in the Trunk, are you talking about the #currentWorld, #currentHand, and #currentEvent senders? :-)
Best, Christoph Von: Squeak-dev <[hidden email]> im Auftrag von David T. Lewis <[hidden email]>
Gesendet: Dienstag, 17. November 2020 02:11:22 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] Worlds in Worlds are NOT completely dead?! ???? Hi Christoph,
On Mon, Nov 16, 2020 at 03:31:47PM +0000, Thiede, Christoph wrote: > Hi Dave, > > eliminating further globals is definitively always a desirable goal, but > are you referring to any certain domain? It looks as if the most problematic > portions of global state resist in the Project/Process logic themselves. The four globals of interest are: - World. This has already been cleaned up, and the global World remains only for support of external packages or projects that have references to it. For a trunk image, the global can be removed without issue. - ActiveWorld. This is meaningful only to a Morphic project and presumably can be refactored to eliminate the global. - ActiveHand. This is meaningful only to a Morphic project and presumably can be refactored to eliminate the global. - ActiveEvent. This is probably global to the system, and it may be appropriate to leave it as a global variable. My opinion - ActiveWorld looks like the next thing to eliminate if possible. It is clearly related to World, and figuring out why ActiveWorld needs to exist would be the next problem to solve. After that, ActiveHand would be then next thing to look at. It is specific to Morphic, and it is not clear what it should mean in the context of World in World, or in mixed Morphic and MVC projects. Finally, ActiveEvent might need attention. I would rate this as low priority, and there may not be anything wrong with the current use of global state for ActiveEvent. > For example, should we have one user interrupt watcher per project, and > how should be decided which of them is activated if there is an MVC embedded > into a Morphic project? Questions over questions :-) > The user interrupt watcher exists at a lower level. I think (but am not certain) that it needs to be this way. The event that triggers the user interrupt watcher is processed through the VM, and by the time the VM finds out about the user interrupt request, it does not have any easy way to know about the Process the user request was intended to interrupt. So no, I don't think that this should be handled on a per-Project basis. The key thing is to know (or deduce) what Process needs to be interrupted, and it probably does not much matter what Project context the interrupt is handled in. Dave
Carpe Squeak!
|
Free forum by Nabble | Edit this page |