Multi-process windows manager

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Multi-process windows manager

Jarek@GMX
Hi,

Just wanted to find out what are people running their systems on when in
comes to WindowManagers - one per window, one per application or
mixture? Event faithful debugging on or off?
We have recently ported our application to VW7.3 and multiprocess nature
of windows proves to be right pain in the back side...
We are using GemStone so we have a single "bottleneck" via the active
session. Maybe that's the critical factor.


Regards, Jaroslaw.

Reply | Threaded
Open this post in threaded view
|

RE: Multi-process windows manager

Terry Raymond
Jaroslaw

I expect that most applications should run under a single
window manager. This is because the various windows usually
share common image data and because few situations arise
where a user would initiate a long action in one window and
benefit from being able to use another window.

There are some situations where an application would benefit
from multiple managers, but I don't think there are many.
The problem with the old single threaded UI model is that if
you really wanted multiple managers it became quite difficult.

With respect to Event faithful debugging I recommend that
you turn it on as a default. This is because it will prevent
Notifier hell, i.e. where you have an bug that is hit via
displayOn: and you get a continous stream of exceptions.
When you are debugging something that will not cause successive
exceptions and you want the window active then you just
turn off event faithful debugging.

Terry
 
===========================================================
Terry Raymond       Smalltalk Professional Debug Package
Crafted Smalltalk
80 Lazywood Ln.
Tiverton, RI  02878
(401) 624-4517      [hidden email]
<http://www.craftedsmalltalk.com>
===========================================================

> -----Original Message-----
> From: Jaroslaw Podgajny [mailto:[hidden email]]
> Sent: Monday, March 20, 2006 5:40 PM
> To: VW NC
> Subject: Multi-process windows manager
>
> Hi,
>
> Just wanted to find out what are people running their systems on when in
> comes to WindowManagers - one per window, one per application or
> mixture? Event faithful debugging on or off?
> We have recently ported our application to VW7.3 and multiprocess nature
> of windows proves to be right pain in the back side...
> We are using GemStone so we have a single "bottleneck" via the active
> session. Maybe that's the critical factor.
>
>
> Regards, Jaroslaw.

Reply | Threaded
Open this post in threaded view
|

Re: Multi-process windows manager

Reinout Heeck-2
In reply to this post by Jarek@GMX
> Just wanted to find out what are people running their systems on when in
> comes to WindowManagers - one per window, one per application or
> mixture? Event faithful debugging on or off?
> We have recently ported our application to VW7.3 and multiprocess nature
> of windows proves to be right pain in the back side...
> We are using GemStone so we have a single "bottleneck" via the active
> session. Maybe that's the critical factor.

Here at Soops we stick to a single WM for an application. We wanted the
programming model to stay as simple as possible so our network
clients/apps are put together in such a way that ApplicationModels and
the domain objects run in a single thread (that of the WM). The
applications need not be single threaded per se, particularly network IO
buffering could be done in a separate process as long as it keeps its
object model isolated from the objects manipulated from the UI.

We did find a need to add several hacks to the WM, one handles
disallowing user input (but allowing damage repaints) while network IO
is pending (blocking call to the server). Another is to allow the
network thread to inject events into the WM thread (when the server
wants to update data on the client).

I find the WM implementation to be immature (unstable), unfortunately
Cincom's position seems to be that Pollock will fix it all, and we'll
have to work with what we have till then.


Reinout
-------


--
Reinout Heeck
-------------
Idle curiosity is the enemy of a quiet life.

Reply | Threaded
Open this post in threaded view
|

Re: Multi-process windows manager

Jarek@GMX
Reinout Heeck wrote:

>> Just wanted to find out what are people running their systems on when
>> in comes to WindowManagers - one per window, one per application or
>> mixture? Event faithful debugging on or off?
>> We have recently ported our application to VW7.3 and multiprocess
>> nature of windows proves to be right pain in the back side...
>> We are using GemStone so we have a single "bottleneck" via the active
>> session. Maybe that's the critical factor.
>
>
> Here at Soops we stick to a single WM for an application. We wanted the
> programming model to stay as simple as possible so our network
> clients/apps are put together in such a way that ApplicationModels and
> the domain objects run in a single thread (that of the WM). The
> applications need not be single threaded per se, particularly network IO
> buffering could be done in a separate process as long as it keeps its
> object model isolated from the objects manipulated from the UI.
>
> We did find a need to add several hacks to the WM, one handles
> disallowing user input (but allowing damage repaints) while network IO
> is pending (blocking call to the server). Another is to allow the
> network thread to inject events into the WM thread (when the server
> wants to update data on the client).
>
> I find the WM implementation to be immature (unstable), unfortunately
> Cincom's position seems to be that Pollock will fix it all, and we'll
> have to work with what we have till then.

I did not have a change to build my opinion up regarding the
configuration with a single WM yet. So far I have been struggling with
the multi-process configuration and I do share your opinion here. What I
find hard to accept is your explanation of Cincom's position. For big
applications Pollock is not a cost free "just switch it on" option. I am
not desperate for Pollock at all - it is very likely that I will not see
any it in our system before good number of months have gone by. In such
case it tastes a bit bitter to simply sit there and wait for Pollock...

I have not heard much of pro-multi WM arguments here. Is anybody
actually really benefiting from it?


Regards, Jaroslaw.

>
>
> Reinout
> -------
>
>

Reply | Threaded
Open this post in threaded view
|

RE: Multi-process windows manager

Terry Raymond
Jaroslaw

The multiproc wm would be more useful if the VM allowed
a dialog to only prevent events to windows associated with
its wm.

Consider the situation where you have an image that really
contains multiple apps. You don't want a dialog in one
app to block windows in another app. Unfortunately, the
VM needs fixing for this to work properly.

Terry
 
===========================================================
Terry Raymond       Smalltalk Professional Debug Package
Crafted Smalltalk
80 Lazywood Ln.
Tiverton, RI  02878
(401) 624-4517      [hidden email]
<http://www.craftedsmalltalk.com>
===========================================================

> -----Original Message-----
> From: Jaroslaw Podgajny [mailto:[hidden email]]
> Sent: Thursday, March 23, 2006 4:26 PM
> To: Reinout Heeck
> Cc: VW NC
> Subject: Re: Multi-process windows manager
>
> Reinout Heeck wrote:
>
> >> Just wanted to find out what are people running their systems on when
> >> in comes to WindowManagers - one per window, one per application or
> >> mixture? Event faithful debugging on or off?
> >> We have recently ported our application to VW7.3 and multiprocess
> >> nature of windows proves to be right pain in the back side...
> >> We are using GemStone so we have a single "bottleneck" via the active
> >> session. Maybe that's the critical factor.
> >
> >
> > Here at Soops we stick to a single WM for an application. We wanted the
> > programming model to stay as simple as possible so our network
> > clients/apps are put together in such a way that ApplicationModels and
> > the domain objects run in a single thread (that of the WM). The
> > applications need not be single threaded per se, particularly network IO
> > buffering could be done in a separate process as long as it keeps its
> > object model isolated from the objects manipulated from the UI.
> >
> > We did find a need to add several hacks to the WM, one handles
> > disallowing user input (but allowing damage repaints) while network IO
> > is pending (blocking call to the server). Another is to allow the
> > network thread to inject events into the WM thread (when the server
> > wants to update data on the client).
> >
> > I find the WM implementation to be immature (unstable), unfortunately
> > Cincom's position seems to be that Pollock will fix it all, and we'll
> > have to work with what we have till then.
>
> I did not have a change to build my opinion up regarding the
> configuration with a single WM yet. So far I have been struggling with
> the multi-process configuration and I do share your opinion here. What I
> find hard to accept is your explanation of Cincom's position. For big
> applications Pollock is not a cost free "just switch it on" option. I am
> not desperate for Pollock at all - it is very likely that I will not see
> any it in our system before good number of months have gone by. In such
> case it tastes a bit bitter to simply sit there and wait for Pollock...
>
> I have not heard much of pro-multi WM arguments here. Is anybody
> actually really benefiting from it?
>
>
> Regards, Jaroslaw.
>
> >
> >
> > Reinout
> > -------
> >
> >

Reply | Threaded
Open this post in threaded view
|

Re: Multi-process windows manager

Reinout Heeck-2
In reply to this post by Jarek@GMX

>> I find the WM implementation to be immature (unstable), unfortunately
>> Cincom's position seems to be that Pollock will fix it all, and we'll
>> have to work with what we have till then.
[...]
> What I
> find hard to accept is your explanation of Cincom's position. For big
> applications Pollock is not a cost free "just switch it on" option. I am
> not desperate for Pollock at all - it is very likely that I will not see
> any it in our system before good number of months have gone by. In such
> case it tastes a bit bitter to simply sit there and wait for Pollock...
>

I see I phrased that misleadingly, it is not so much that Pollock itself
will fix it but that Cincom's priorities are to focus resources on
developing Pollock rather than fixing Wrapper. So I am guessing that the
WM will regain Cincom's attention after Pollock is production ready. But
I am obviously not authoritative on that. Note that developing the WM is
one of those 'no fun' chores, you really need to think before hitting
accept or your image will freeze, the same goes for interaction with
other subsytems like flyby help.

Sam can we entice you to describe Cincom's planning regarding finishing
the WM?


> I have not heard much of pro-multi WM arguments here. Is anybody
> actually really benefiting from it?

Yes, developers benefit big time. I find it great that my browsers and
workspaces keep working while I'm debugging a UI thread (as opposed to
/the/ UI thread as it was in pre-WM days), a real productivity boon.



--
Reinout Heeck
-------------
Idle curiosity is the enemy of a quiet life.

Reply | Threaded
Open this post in threaded view
|

RE: Multi-process windows manager

Stew MacLean
<rant mode>

Having jumped through all sorts of hoops and grovelling around in the
bowels of the system to get my UI looking smooth and sweet (most of the
time), I second this. ("fixing Wrapper").

Out of the box, the UI appears very unprofessional with lots of flashing
and a general ugly feel to it.

Take for example the TreeView. This simply does not behave correctly. To
observe go to the System Settings and expand System, and then expand
Source. Now collapse System and re-expand. Standard behaviour is to
restore the previously expanded children, it doesn't.

See the comment in TreeModel<<expand: anIndex
        "Expand the element at anIndex if it is not expanded yet.
        Also expand children that were expanded when this node was
contracted."

When I started out, I considered using Pollock. However on investigation
I soon realised that it had a long way to go. Given the recent comments,
I'm very glad I didn't go down that route. (Especially when I hear of
poor performance and downgraded functionality, such as non programmatic
moving of splitters).

So wrapper it is. I for one have a big investment in it, (as I'm sure a
lot of other people do). Therefore Cincom should definitely not wait for
Pollock, and at the very least tune/maintain/fix what's already there.

</rant mode>


>-----Original Message-----
>From: Reinout Heeck [mailto:[hidden email]]
>Sent: 24 March 2006 7:58
>To: VW NC
>Subject: Re: Multi-process windows manager
>
>
>>> I find the WM implementation to be immature (unstable),
unfortunately
>>> Cincom's position seems to be that Pollock will fix it all, and
we'll
>>> have to work with what we have till then.
>[...]
>> What I
>> find hard to accept is your explanation of Cincom's position. For big
>> applications Pollock is not a cost free "just switch it on" option. I
am
>> not desperate for Pollock at all - it is very likely that I will not
see
>> any it in our system before good number of months have gone by. In
such
>> case it tastes a bit bitter to simply sit there and wait for
Pollock...
>>
>
>I see I phrased that misleadingly, it is not so much that Pollock
itself
>will fix it but that Cincom's priorities are to focus resources on
>developing Pollock rather than fixing Wrapper. So I am guessing that
the
>WM will regain Cincom's attention after Pollock is production ready.
But
>I am obviously not authoritative on that. Note that developing the WM
is

>one of those 'no fun' chores, you really need to think before hitting
>accept or your image will freeze, the same goes for interaction with
>other subsytems like flyby help.
>
>Sam can we entice you to describe Cincom's planning regarding finishing
>the WM?
>
>
>> I have not heard much of pro-multi WM arguments here. Is anybody
>> actually really benefiting from it?
>
>Yes, developers benefit big time. I find it great that my browsers and
>workspaces keep working while I'm debugging a UI thread (as opposed to
>/the/ UI thread as it was in pre-WM days), a real productivity boon.
>
>
>
>--
>Reinout Heeck
>-------------
>Idle curiosity is the enemy of a quiet life.



Reply | Threaded
Open this post in threaded view
|

Re: Multi-process windows manager

Ladislav Lenart
Stewart MacLean wrote:
<rant mode>

Having jumped through all sorts of hoops and grovelling around in the
bowels of the system to get my UI looking smooth and sweet (most of the
time), I second this. ("fixing Wrapper").

Out of the box, the UI appears very unprofessional with lots of flashing
and a general ugly feel to it.
  
I absolutely agree with you.
Take for example the TreeView. This simply does not behave correctly. To
observe go to the System Settings and expand System, and then expand
Source. Now collapse System and re-expand. Standard behaviour is to
restore the previously expanded children, it doesn't.

See the comment in TreeModel<<expand: anIndex 
	"Expand the element at anIndex if it is not expanded yet. 
	Also expand children that were expanded when this node was
contracted."
  
Unfortunately it is not just a TreeView.

Recently I added #moveTo: method to ResizingSplitterView to be able to move the splitter programmatically. In order to do this, I had to teach it its position - kind of basic for such a widget one would say. And BTW have you notice how does the splitter behave when you start moving it? Its left border (in case of vertical splitter) is aligned with mouse cursor position - the thicker the splitter the bigger the move...

Or next great chapter I am working on right now is drag & drop - why I have to write 7 or so methods all over again for each widget in each application I want to drag in (I am in the process of removing this duplication but I think it should not be there in the first place)??? Or the silly behavior of drag & drop in the browser itself - you can start dragging only when you are selecting an object... or insufficient indication of where the drop would occur...

Or next one - UI Look and Feel. It is there to support the variation but its implementation effectively inhibits it because it is full of duplication...
We were trying to create flat (unbordered) look - but we did not succeed much...

Or next issue that awaits for me is DoubleBufferingDisplayPolicy - it seems that it does not work properly - it seems that some invalidate messages pass through it but others don't...

And there's much more!
(Sounds like s p a m, doesn't it ;-)
When I started out, I considered using Pollock. However on investigation
I soon realised that it had a long way to go. Given the recent comments,
I'm very glad I didn't go down that route. (Especially when I hear of
poor performance and downgraded functionality, such as non programmatic
moving of splitters).
  
We were considering Pollock too but have chosen not to use it due to its slowness and some bugs we have found. And we made a good choice - now after half a year, Pollock is still beta...
So wrapper it is. I for one have a big investment in it, (as I'm sure a
lot of other people do). Therefore Cincom should definitely not wait for
Pollock, and at the very least tune/maintain/fix what's already there.
  
Well, I don't know if it would be worth it - I am almost sure I would still need to 'tune' it...

Ladislav Lenart
</rant mode>


  
-----Original Message-----
From: Reinout Heeck [[hidden email]]
Sent: 24 March 2006 7:58
To: VW NC
Subject: Re: Multi-process windows manager


    
I find the WM implementation to be immature (unstable),
        
unfortunately
  
Cincom's position seems to be that Pollock will fix it all, and
        
we'll
  
have to work with what we have till then.
        
[...]
    
What I
find hard to accept is your explanation of Cincom's position. For big
applications Pollock is not a cost free "just switch it on" option. I
      
am
  
not desperate for Pollock at all - it is very likely that I will not
      
see
  
any it in our system before good number of months have gone by. In
      
such
  
case it tastes a bit bitter to simply sit there and wait for
      
Pollock...
  
I see I phrased that misleadingly, it is not so much that Pollock
    
itself
  
will fix it but that Cincom's priorities are to focus resources on
developing Pollock rather than fixing Wrapper. So I am guessing that
    
the
  
WM will regain Cincom's attention after Pollock is production ready.
    
But
  
I am obviously not authoritative on that. Note that developing the WM
    
is
  
one of those 'no fun' chores, you really need to think before hitting
accept or your image will freeze, the same goes for interaction with
other subsytems like flyby help.

Sam can we entice you to describe Cincom's planning regarding finishing
the WM?


    
I have not heard much of pro-multi WM arguments here. Is anybody
actually really benefiting from it?
      
Yes, developers benefit big time. I find it great that my browsers and
workspaces keep working while I'm debugging a UI thread (as opposed to
/the/ UI thread as it was in pre-WM days), a real productivity boon.



--
Reinout Heeck
-------------
Idle curiosity is the enemy of a quiet life.
    





  

Reply | Threaded
Open this post in threaded view
|

RE: Multi-process windows manager

Stew MacLean

 

-----Original Message-----
From: Ladislav Lenart [mailto:[hidden email]]
Sent
:
27 March 2006 9:19
To:
Stewart MacLean
Cc: '
Reinout Heeck'; 'VW NC'
Subject: Re: Multi-process windows manager

 

Stewart MacLean wrote:

<rant mode>
 
Having jumped through all sorts of hoops and grovelling around in the
bowels of the system to get my UI looking smooth and sweet (most of the
time), I second this. ("fixing Wrapper").
 
Out of the box, the UI appears very unprofessional with lots of flashing
and a general ugly feel to it.
  

I absolutely agree with you.

 
Take for example the TreeView. This simply does not behave correctly. To
observe go to the System Settings and expand System, and then expand
Source. Now collapse System and re-expand. Standard behaviour is to
restore the previously expanded children, it doesn't.
 
See the comment in TreeModel<<expand: anIndex 
       "Expand the element at anIndex if it is not expanded yet. 
       Also expand children that were expanded when this node was
contracted."
  

Unfortunately it is not just a TreeView.

 

I’ve mostly ditched the base TreeView in favour of the Aragon goodie. The implementation is a lot cleaner, and it works as expected. (even if it doesn’t support the event framework quite so well).

Recently I added #moveTo: method to ResizingSplitterView to be able to move the splitter programmatically. In order to do this, I had to teach it its position - kind of basic for such a widget one would say. And BTW have you notice how does the splitter behave when you start moving it? Its left border (in case of vertical splitter) is aligned with mouse cursor position - the thicker the splitter the bigger the move...

 

Yep, done something similar…only took a “few” days.


Or next great chapter I am working on right now is drag & drop - why I have to write 7 or so methods all over again for each widget in each application I want to drag in (I am in the process of removing this duplication but I think it should not be there in the first place)??? Or the silly behavior of drag & drop in the browser itself - you can start dragging only when you are selecting an object... or insufficient indication of where the drop would occur...

 

I’ve deliberately steered clear of this. In fact I’d like to be able to turn it off. (I sometimes inadvertently screw up my objects when inspecting in Trippy).


Or next one - UI Look and Feel. It is there to support the variation but its implementation effectively inhibits it because it is full of duplication...
We were trying to create flat (unbordered) look - but we did not succeed much...

 

Haven’t even considered doing that.


Or next issue that awaits for me is DoubleBufferingDisplayPolicy - it seems that it does not work properly - it seems that some invalidate messages pass through it but others don't...

 

I’ve had good success with this, after I applied a fix available at:

http://www.smalltalk.ru/articles/flicker-free-eng.html

Many thanks to Alex Baran & Andrei N.Sobchuck for this.

 

However to smooth things out completely I’ve had to work on suppression of triggered changes and even have my own “domain event” queue, as the ordering of ui events seems to get screwed up when one hits the return button quickly.


And there's much more!
(Sounds like s p a m, doesn't it ;-)

 
When I started out, I considered using Pollock. However on investigation
I soon realised that it had a long way to go. Given the recent comments,
I'm very glad I didn't go down that route. (Especially when I hear of
poor performance and downgraded functionality, such as non programmatic
moving of splitters).
  

We were considering Pollock too but have chosen not to use it due to its slowness and some bugs we have found. And we made a good choice - now after half a year, Pollock is still beta...

Yes, I understand the motives for wanting to re-engineer the UI framework. However, in the meantime we still need to develop now. Unfortunately once time goes by, one has such a large investment in time (and knowledge gained) spent smoothing things in the base system that the thought of redoing it again is frightening. From what I gather, at the moment Pollock is a risky choice.

 

So wrapper it is. I for one have a big investment in it, (as I'm sure a
lot of other people do). Therefore Cincom should definitely not wait for
Pollock, and at the very least tune/maintain/fix what's already there.
  

Well, I don't know if it would be worth it - I am almost sure I would still need to 'tune' it...

 

I’d say it’s essential. You can’t just ignore (what I am assuming) is a large segment of Cincoms customer base. Without doing a complete rewrite, (and not even a major refactoring), I feel that the initial developer experience of Wrapper could be seriously improved by attending to a few “little things” as discussed.

 

This would give VisualWorks a slicker “look and feel”, and free up developer time to concentrate on their project at hand, rather than addressing these irritating base image blemishes.

 

My two cents…

 

Cheers,

 

Stewart

Ladislav Lenart

 
</rant mode>
 
 
  
-----Original Message-----
From: Reinout Heeck [[hidden email]]
Sent: 24 March 2006 7:58
To: VW NC
Subject: Re: Multi-process windows manager
 
 
    
I find the WM implementation to be immature (unstable),
        
unfortunately
  
Cincom's position seems to be that Pollock will fix it all, and
        
we'll
  
have to work with what we have till then.
        
[...]
    
What I
find hard to accept is your explanation of Cincom's position. For big
applications Pollock is not a cost free "just switch it on" option. I
      
am
  
not desperate for Pollock at all - it is very likely that I will not
      
see
  
any it in our system before good number of months have gone by. In
      
such
  
case it tastes a bit bitter to simply sit there and wait for
      
Pollock...
  
I see I phrased that misleadingly, it is not so much that Pollock
    
itself
  
will fix it but that Cincom's priorities are to focus resources on
developing Pollock rather than fixing Wrapper. So I am guessing that
    
the
  
WM will regain Cincom's attention after Pollock is production ready.
    
But
  
I am obviously not authoritative on that. Note that developing the WM
    
is
  
one of those 'no fun' chores, you really need to think before hitting
accept or your image will freeze, the same goes for interaction with
other subsytems like flyby help.
 
Sam can we entice you to describe Cincom's planning regarding finishing
the WM?
 
 
    
I have not heard much of pro-multi WM arguments here. Is anybody
actually really benefiting from it?
      
Yes, developers benefit big time. I find it great that my browsers and
workspaces keep working while I'm debugging a UI thread (as opposed to
/the/ UI thread as it was in pre-WM days), a real productivity boon.
 
 
 
--
Reinout Heeck
-------------
Idle curiosity is the enemy of a quiet life.