Agenda for 2007/10/02
- Introductions if needed
- LF: Open A11y news - Janina
- CSUN 2008 - IA2 related activities
- IAccessible2 Development: An Accessibility API that Works for Assistive Technologies and Applications
The IAccessible2 accessibility API complements and extends MSAA in several important areas (Brunet and Weiss, 2007). For instance, it provides support for accessibility of input text fields, including caret and text selection tracking, as well as support for complex document layouts like tables. It incorporates the ability of conveying semantically rich relationships between user interface elements beyond the parent-child relationships determined by the accessible object hierarchy.
The similarities of IAccessible2 with the Linux accessibility API makes it an attractive approach for accessibility support in applications that run in both the Windows and Linux platforms. The cross-platform aware design of IAccessible2 and the richness of its features are particularly relevant for accessibility of structured, interactive documents (Gonzalez and Guarino Reid, 2005).
Since its publication as an open standard in December of 2006 under the Linux Foundation auspice, the IAccessible2 specifications and accompanying documentation has been reviewed and contributed to by representatives of leading companies in the software industry as well as assistive technology vendors. In this panel, the authors will bring together some of the lead developers involved in this effort to share their experiences in supporting IAccessible2. The discussion topics will include best implementation practices, as well as identifying possible pitfalls and existing limitations. Participants will have the opportunity to learn about the latest development tools to help IAccessible2 implementers, such as AccProbe. Participants will also demonstrate some of the accessibility features in popular applications, only possible through IAccessible2 support. Ideas about future enhancements to IAccessible2 will be debated.
- Moderators: Pete Brunet, Andres Gonzalez, Rich Schwerdtfeger
- AccProbe: Mike Squillace
- Firefox 3: Aaron Leventhal
- GWMicro: Doug Geoffray (or a representative)
- Dolphin: Mike Hill, Director of R&D
- Sun: Malte Timmerman
- NVDA: Mick Curran (via telephone if that's possible at CSUN)
- pending responses from others
- New Standards and Initiatives From Open A11y
Open A11y has completed two accessibility standards for Linux/Unix and another for Windows. Additionally, a testing application provides validation and certification. Meanwhile, new initiatives are forming.
- Janina Sajka, Chair, Open Accessibility
- Gregory Rosmaita, Vice-Chair, Open Accessibility
- Pete Brunet, IBM, Chair, Open Accessibility IAccessible2 SIG
- Earl Johnson, Sun Micro Systems
- Willie Walker, Sun Micro Systems
First chartered in 2004 as the Free Standards Group Accessibility Workgroup (FSGA), the Open Accessibility (A11y) Group functions today within the Linux Foundation to establish free and open standards that enable comprehensive universal access to various computing platforms, applications, and services. Open A11y exists to make it easier for developers, ISVs, and distributions to support assistive technologies (AT). Assistive technologies enable individuals to make full use of computer-based technology despite variability in physical or sensory abilities due to illness, aging or disability.
New standards from Open A11y completed and adopted during the past year include AT-SPI for Linux/Unix and Keyboard And Mouse Alternative Input for Linux/Unix
IAccessible 2 is a continuing initiative and Expert Handlers is a new initiative.
- Accessibility and the IBM Lotus Productivity Editors
IBM Lotus Symphony is a set of applications for creating, editing, and sharing word processing documents, spreadsheets, and presentations. It supports both the Open Document Format (ODF) and Microsoft Office format. IAccessible2 was created out of necessity to produce a usable and accessible ODF based office suite. It helps provide an Assistive Technology (AT) access to many significantly advanced functions in rich document applications. IAccessible2 was first implemented in IBM Lotus Symphony and is already being used by the leading AT vendors in their screen readers.
- Objects contained in documents and tables - from Mick Curran
- On the IA2 list this week Mick Curran asked for the following
- A way to know when an object is in a document or a table
- A way to know the parent object with role document or table
- This would make it easier for an AT when to apply document centric logic and it would make it easier to know when navigation as moved outside of the current document or table.
- Mick suggested solving this problem with new inDocument and inTable relations.
- Peter Korn suggested that the relations might be expensive to for the app to compute and suggested that at least item 1 could be solved by giving an object more than one role, e.g. a secondary role indicating inDocument or inTable.
- Pete Brunet pointed out that prior consensus was to use only one role but that the same thing could be done using IA2::attributes.
- Andres Gonzalez suggested that the document could be found via a new IA2::document method.
- Furher discussion?
- Access to document revisions - from the ODF AccSC
- The ODF AccSC asked for an investigation into how to give access to ODF's document change tracking info. ATs will need
- Access to whether the text at a certain offset is: unchanged, added, deleted, or changed plus the ability to access all the related descriptive information such as author and date.
- The ability to get a list of all revisions in a document.
- For item 1, suggestions included:
- Implement IARevsions on each revised paragraph. IARevisions would return one or more dynamically created paragraph objects implementing IARevision (singular) with methods giving full access to the change information plus start/end index in the revised paragraph.
- Use IAText::attributes with new attributes indicating the kind of revision and the associated descriptive information. (This makes it difficult to decode if there revisions and attributes overlap.)
- For item 2:
- Implement IACollections to return the revisions, e.g. find all of the revisions; or only the revisions made by a certain individual; or only the revisions that were insertions (vs. deletions). This gets around the problem on Linux/Unix where only visible accessibles exist.
- Provide access to the internal list that OOo maintains either through the existing OOo GUI or through a new method, such as IA2::revisions, which would return a list of revisions or fail in some appropriate fashion if there were no revisions.
- Furher discussion?
- Version 2 of text attributes
- Please review version 2 of the attribute spec. There may be some attributes that can be eliminated thus cutting down on the workload for implementers.
- The suggestions to date are:
- Remove line-height-at-least.
- Remove num-format, num-prefix, and num-suffix and replace with a new attribute named "prefix" where the value is the actual number (with any leading or trailing punctuation such as a trailing period and/or leading and/or trailing parens), or a bullet character, or the word "graphic".
- Addition of IAText::defaultAttributes - raised by Aaron
- The question is: For the next release of IA2 should IAText::attributes be deprecated in favor of IAText::defaultAttributes and IAText::changedAttributes?
- Aaron said he will talk to the ATVs. The use case for FF is a string of text with a link. In FF this will be a parent object with an embed character representing the link text and a child object holding the link text. The concept of default attributes could be helpful in this case, i.e. if the POR (Point of Regard) is in the link, a default attributes method could return the attributes of the parent affecting the child. However this could also be done by querying the parent object for the text attributes in effect at the point of the embed character. If this solution was acceptable the existing IA2 design would not have to be changed.
- Initial discussion with ATs: Repeat the text attributes repeated on every node, because that's what Notes 8 does. However, it turns out that there are bigger issues than that, in terms of how FF is different from Notes 8:
- Where focus is in an editable document
- FF uses embedded object chars and a containment hierarchy, so that to get text for a line you need recursion.
- Aaron will provide further status during the meeting.
- Inspect tool - Mike Squillace
- Firefox - Aaron Leventhal
No progress on the following
- IDL submission to BZR.
- There have been no changes since the March 26 version.
- Prior to publishing it on the main page the 3/26 version is available via bug 111.
- Eclipse - Barry Feigenbaum
- Python wrappers
- Waiting for IBM legal approval to release as BSD.
- Documentation of memory management issues for [out] parameters - the following need to be understood and documented.
- Here is a rough first draft:
- BSTRs need to be SysFreeString'd at end of life; ditto for when they are in structs or arrays.
- COM interfaces need to be AddRef'd when used and Release'd at end of life.
- Single longs, HWNDs, booleans, and structs are allocated by the caller and passed by reference. The marshaller does all the memory management. (I don't believe there are any structs with BSTRs or interface pointers.)
- Arrays of longs - the server allocates the top level array and anything it points to; nothing needs to be free'd by the client. The marshalling code handles freeing anything on the client side.
- TBD: How are VARIANTs handled? Like interfaces? These methods return VARIANTs: IAHyperlink::anchor/anchorTarget, IAValue::current/maximum/minimumValue
- TBD: Are arrays of IUnknowns, e.g. IARelation::targets, correctly specified as **IUnknown?
- This Don Box article can be used for understanding: http://www.microsoft.com/msj/1196/activex1196.aspx
- Please contribute and/or review.
- Developer Guide
- No new status on when it will be back in the SDK.
- BZR patch submission process
- Enter defects into Bugzilla
- What else needs to be discussed?
- What IA2 information do you need?
- What IA2 issues need resolution soon? Target date?
- What would you like to see done?