Re: Developing cross-platform, accessible apps

  • From: Jamal Mazrui <empower@xxxxxxxxx>
  • To: cdh@xxxxxxx
  • Date: Sat, 12 Jun 2010 14:41:46 -0400

I agree that IA2 is a good, practical API, if only it were more widely supported.


With the development approaches I was suggesting, one would not need to consciously implement support for the various APIs. Instead, the best API on each platform would naturally be supported due to the use of widgets that are native to that platform, which the platform developer has tried to integrate with the main accessibility API of that platform -- which is usually also designed by the same platform developer.

Jamal

On 6/12/2010 11:41 AM, Chris Hofstader wrote:
This is a pretty good start at strategies  for cross platform
accessibility development. The four accessibility API are, however,
different enough to make wrapping code for the different OS very
difficult as there are some obvious and other nuanced techniques that
simply do not exist in all of them.

If I was launching a new project on GNU/Linux or Windows, I would use
the iAccessible2 API.

The iAccessible2 API, developed by Aaron Leventhal and some others at
IBM, intends to harmonize at least two OS and, if I remember correctly,
it is how AT communicates with programs like OpenOffice and Thunderbird.


IBM has given iAccessible2, trademark and all, to the Linux Foundation
so it has a good chance of being maintained moving forward.

This, of course, leaves us with the Macintosh. In relatively standard
behavior for Apple, they refused to work with IBM on iAccessible2 and
insists on going it alone with their proprietary accessibility framework.

There aren't 1:1 relationships between iAccessible2 and Apple
accessibility API at either the event or function level so supporting it
along with the other platforms can be a nightmare and a rats nest of
code trying to square peg on access API into another.

I do not know of any software written that is accessible on all three.
Apple is the one that is the most broken.

cdh

On 06/12/2010 10:57 AM, Jamal Mazrui wrote:
This is to share some points I have learned about developing
cross-platform, GUI-accessible, desktop apps. Currently, the key is
using programming libraries that wrap native widgets of the platform.
These native widgets generally implement the main accessibility API of
the platform, much more so than custom widgets.

On Windows, native widgets are most likely to implement Microsoft
Active Accessibility, or increasingly, User Interface Automation as it
replaces MSAA. On Linux, the GTK+ widgets that are native to the Gnome
desktop implement the Assistive Technology Service Provider Interface.
On the Mac, Cocoa-based widgets implement the Mac Accessibility Protocol.

Thus, a cross-platform library is most likely to create accessible
GUIs if it wraps native widgets of each platform, rather than defining
its own widgets. A disadvantage of this approach is that the developer
needs to be conscious of small differences in the behavior of widgets
across platforms, even though wrapping code of the library tries to
minimize such differences. Besides accessibility, an advantage of this
approach is that widgets have the look and feel that sighted users are
accustomed to experiencing on each platform.

Sometimes, a GUI library is closely associated with a programming
language that has especially strong support for that library in
wrapper functions and design tools. A few language and library
combinations that seem to work particularly well for cross-platform,
accessible development are as follows:

* Java and the Standard Widget Toolkit
http://www.eclipse.org/swt/

* Python and wxWidgets
http://wxPython.org

* C# and the System.Windows.Forms classes of the Mono Framework
http://mono-project.org

Note that, in this case, the Microsoft .NET Framework should be used
as the runtime environment on Windows in order to have native widget
support.
http://msdn.microsoft.com/en-us/netframework/default.aspx

If others have further info or ideas on this topic, please share.

Jamal

__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind


__________
View the list's information and change your settings at //www.freelists.org/list/programmingblind

Other related posts: