Comments on proposed accessibility protocol
My commentary on @mwcampbell's proposed accessibility protocol:
Brief comments:
All good. Would like to see more exploration/discussion of how to make Orca work. How much of an at-spi bridge do we need? (Would like to avoid intermediary layers...)
Am a bit concerned about overlap with AccessKit.
Orca depends on libatspi for the AT-side representation of the accessibility tree (lazily loaded, etc.). What's your approach for deciding what to put in the new protocol? Go through the DBus APIs to see what properties they let you query, things like that - and flatten them out into a data structure?
Extended comments:
Quote: "Clients don’t send requests to query the tree; each client maintains a local copy of the tree based on pushes from the provider, and queries that copy. This is true even for features that have traditionally relied heavily on IPC, such as rich text support. The current plan is for clients to infer events from changes to the tree, by comparing the old and new versions of updated nodes."
How can this architecture deal with views/widgets that display only part of a much bigger content? E.g. rich text where only the visible region is displayed, or a list view with thousands of items but where only the ones that fit onscreen are generated. Does the accessibility tree have knowledge that there is "extra stuff past the bounds"? Does it fall back to chatty IPC? I'd love to see a prototype of this.
Can part of the accessibility tree be updated without needing to push the rest that does not change? Is this a valid concern, or am I thinking of premature optimization? (How do browsers generally deal with this?)
Can you elaborate on the choice of Cap'n Proto? Does it have facilities to distinguish between schemas/versions, or cases when you e.g. need to add a field to a struct?
The current atspi protocol has inconvenient cases where huge enumerations like Role are hardcoded numerically, and they are thus hard to revise/augment. Do you have plans for this, something like passing symbolic role names instead? Should I RTFS for AccessKit instead?
I know nothing of the Wayland protocol - does it allow shipping a large blob from providers to clients, per your terminology?
Would it be possible to have a minimal working prototype that illustrates the general mechanism for the new protocol, without implementing every single feature initially? Just to get a feel for things?