First a little introduction: I've been learning Cocoa for a project at
my job, and I decided to use GNUstep Renaissance for the UI, because I
find it much easier than drag-and-drop tools like Interface Builder. So
now I'm interested in playing with GNUstep itself; I think it would make
an excellent cross-platform GUI toolkit. But I've noticed one major
missing feature, which I wonder if anyone else has considered or started
to work on: accessibility for users with disabilities, particularly
users who are blind or visually impaired.
As I see it, there are three major steps to implementing accessibility:
1. Add a definition of the NSAccessibility protocol and its related
constants from Cocoa.
2. Implement NSAccessibility in the standard controls (or more
accurately, in their cells). Strive to mimic the NSAccessibility
implementations of the respective cells in Cocoa.
3. Implement bridges from NSAccessibility to the native accessibility
APIs on the supported platforms. On Windows, the relevant APIs are
Microsoft Active Accessibility and IAccessible2. For X-based platforms,
I believe the relevant API is AT-SPI, though my knowledge of
accessibility in the modern X-based desktops is a bit out of date. This
will probably be the most complicated part; MSAA in particular is
notoriously hard to get right.
Task 1 should be pretty straightforward, if tedious. Tasks 2 and 3 are
big and should probably happen in parallel.
I don't currently have much time to contribute to such an effort, but I
can at least provide pointers in the right direction, particularly for
the MSAA/IA2 bridge. In any case, I thought I should at least point out
the need for this, particularly since accessibility isn't mentioned in
the development roadmap.
Question: I've perused some of the Cocoa header files, including
NSAccessibility.h. Does that disqualify me from doing a clean-room
implementation for GNUstep?