Re: [Accessibility] a11y / D-Bus / lifecycle ...

Rob Taylor <[email protected]>
Newsgroups gmane.comp.gnome.accessibility.devel,gmane.comp.kde.devel.accessibility
Organization CodeThink Ltd.
Message-ID <[email protected]>
Michael Meeks wrote:
> Hi Rob,
> 
> 	First - it'd be great to have a quick call with you guys at some stage
> just to chew this over & get on the same page.

Yep, lets do this! When would be good for you? anytime's fine for us.

Thanks,
Rob

> On Tue, 2007-12-18 at 14:11 +0000, Rob Taylor wrote:
>>> 	Weell ... ;-) yes, if you can fuse the IPC layer and the lifecycle
>>> layer (as could not be done in CORBA) this is somewhat possible, though
>>> when you have 3 parties involved it's going to get difficult:
>>> transfering object ownership from a->b->c is quite exciting, albeit
>>> somewhat uncommon: unless you're going to have a separate event broker
>>> like at-spi-registryd - which is prolly what you want to do filtering,
>>> registration etc.
>> Well, 'fuse' is a pretty strong term, 'predicated on' would be more
>> correct. Its simply possible because there's a bus that tells you when
>> connections go away, and you always know what connection a message comes
>> from.
> 
> 	Sure, but if you have direct connections to applications, and also
> indirect ones (eg. via the bus) then you end up with interesting
> problems of transfering / cross-associating references: and this is with
> a simple toplogy - in the general case with Bonobo: of components
> passing references between themselves frequently it's just
> nightmarish :-). IHMO mandating a given topology is the first step in
> making the problem tractable. Then being able to do (eg.) per-connection
> lifecycle tracking is necessary - also enforcing a consistent reference
> counting & transferal policy etc. etc. you have to fuse lifecycle with
> the IPC to have any chance of getting this right [ at least that's what
> we learned in bonobo ]. ie. "signal comes in => we now own 1 more ref on
> Foo" [ necessary to avoid leaks when the weak/client representation of
> Foo goes away ]
> 
>> Why would you need to have an ownership scheme? surely just plain old
>> refcounting is sufficient? Though that raises an interesting point, you
>> couldn't have floating refs for object references in signal emissions,
> 
> 	Quite ;-) is someone listening to unref it ? does each recipient unref
> it ? does that mean we need to know (semi-accurately) how many listeners
> there will be (etc. etc. ;-) - as I mentioned explicit lifecycle is a
> horrific problem space ;->
> 
>>> 	Are you bearing in mind that all the reference counting pain is to
>>> satisfy a situation that doesn't need to exist & should never have been
>>> postulated ? :-) [ exposing an entire DOM ].
>> Indeed I am, but I haven't had a brainwave on a better solution. Got any
>> ideas?
> 
> 	Sure: it's mostly a matter of socialisation:
> 
> 	* first we ask the ATs what they actually use "the whole DOM"
> 	  for:
> 		+ eg. "count number of headings in a document"
> 		+ "skip to next heading quickly"
> 
> 	* Then we create a new 'Browse' interface that can be used for
> 	  these things:
> 		+ this interface would broadly behave like a set of 
> 		  keybindings: skip to next heading eg. which would
> 		  substantially alter the view / invalidate a load of 
> 		  previously 'live' peers - but get what you want.
> 		+ Other ideas might be a separate 'View' concept that
> 		  would be an 'off-screen' view of headings eg.
> 
> 	This is IMHO the only sane way to do this anyway; eg. exposing infinite
> spaces: eg. "all time", or "1 million x 16k spreadsheet cells" via the
> current interface is somewhat tortured anyway.
> 
>> Actually I'm not really convinced that exposing the DOM necessarily
>> implies reference counting, we still have the base lifecycle management
>> of the 'page' being 'visible' surely ?
> 
> 	Nah; that's the problem - exposing the DOM means exposing the whole
> document model, including tons of things that are off-screen. ie. it's
> easy to say "give me all headings" - ~none of which are visible, or to
> iterate over the entire document - a paragraph at a time, unreffing them
> - most of which are not visible. [ you see the issue I hope ].
> 
>>  Its simply a matter of how
>> efficient exposing the dom is, and a dbus-basing interface would imply
>> that we don't need real objects representing the members of the DOM,
>> gecko could just talk dbus directly. (Obviously this is more work than
>> just being able to plug into the current ATK stuff though)
> 
> 	Yep, that busts ATK and it's semantics quite badly. Currently eg. you
> get object lifecycle warnings (AFAIR) mostly only for live peers: ie. we
> don't go creating them to tell people we're freeing them ;-)
> 
> 	The way OO.o does this (FWIW) is to only maintain peers for visible (or
> nearly-visible) pieces of the document - if you play with a recent
> version it uses ATK natively: I'd like to move all apps to doing that -
> to remove these problems, though of course we need to expose whatever
> the ATs want & need to make this work nicely.
> 
> 	HTH,
> 
> 		Michael.
> 


-- 
Rob Taylor, Codethink Ltd. -  http://codethink.co.uk
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.