A few years ago, I started to write software which primary
audience is going to be blind musicians. I did a small presentation
of the UI at DebConf15.
Most of the functionality
is in a compiler-alike backend. But eventually, I wanted to create
a user interface to improve the interactive experience.
So, the problem again: which toolkit to choose which would be accessible
on most platforms? Last time I needed to solve a similar
problem, I used Java/Swing. This has its problems, but
it actually works on Windows, Linux and (supposedly) Mac.
This time around, my implementation language is C++, so Swing
didn't look that interesting. It appears there is not
much that fullfils these requirements. Qt looked like it could.
But since I had my bad experiences already with Qt claiming
accessibility they really never implemented, I was at least
a bit cautious. Around 10 years ago, when Qt 4 was released,
I found that the documentation claimed that Qt4 was accessible
on Linux, but it really never was until a very late 4.x release.
This information was a blatant lie, trying to lure uninformed programmers
into using Qt, much to the disservice of their disabled users.
If you ask a random blind Windows user who knows a bit about toolkits,
they will readily tell you that they hate every app written in Qt.
With this knowledge, and the spirit of "We can change the world"
I wrote a private mail to the person responsible for maintaining Qt
accessibility. I explained to them that I am about to choose Qt as the UI
platform for my program, and that my primary audience is users that
rely on Accessibility. I also explained that cross-platform support
(esp. good support on Windows) is a necessary requirement for
my project. I basically got a nice marketing speak answer
back, but when I read it back then, I didn't fully realize that just yet.
The tone basicallly: "No problem. Qt works on Linux, Mac and Windows,
and if you find any problems, just report them to us and we are going
to fix them." Well, I was aware that I am not a paying
customer of Qt Company, so the promise above is probbably
a bit vague (I thought), but still, it sounded quite encouraging.
So off I went, and started to learn enough Qt to implement
the simple user interface I wanted. First tests on
Linux seemed to work, that is nice. After a while, I started
to test on Windows. And BANG, of course, there is a "hidden" problem.
The most wide-spread (commercial) screen reader used by most blind people
somehow does not see the content of text entry widgets.
This was and still is a major problem for my project. I have a number
of text entry fields in my UI. Actually, the main part of
the UI is a simple editor, so you might see the problem already.
So some more testing was done, just to realize that yes, text entry
fields indeed do not work with the most widely used screen
reader on Windows. While other screen readers seemed to work (NVDA)
it is simply not feasable to ask my future users to switch to a different
screen reader just for a single program. So I either needed to get JAWS
fixed, or drop Qt.
Well, after a lot of testing, I ended up submitting a bug to the Qt tracker.
That was a little over a year ago.
The turnaround time of private mail was definitely faster.
And now I get a reply to my bug explaining that JAWS was
never a priority, still is not, and that my problem will
probably go away after a rewrite which has no deadline yet.
Why did I expect this already?
At least now I know why no blind users wants to have any Qt on their machines.
If you want to write cross-platform accessible software:
You definitely should not use Qt. And no other Free Software
toolkit for that matter, because they basically all dont give a shit
about accessibility on non-Linux platforms. Yes, GTK has
a Windows port, but that isn't accessible at all.
Yes, wxWindows has a Windows port, but that has problems with, guess what, text entry fields (at least last time I checked).
Free Software is NOT about Accessibility or equality.
I see evidence for that claim since more then 15 years now.
It is about coolness, self-staging, scratch-your-own-itchness and things like that.
When Debian released Jessie, I was told that something like
Accessibility is not important enough to delay the release. If GNOME
just broke all the help system by switching to not-yet-accessible
webkit, that is just bad luck, I was told. But it is outside
of the abilities of package maintainers to ensure that what we ship is
accessible.
I hereby officially give up. And I admit my own
stupidity. Sorry for claiming Free Software would be a good thing for the world.
It is definitely not for my kin. If Free Software
ever takes over, the blind will be unable to use their computers.
Don't get me wrong. I love my command-line.
But as the well-known saying goes: "Free Software
will be ready for the desktop user, perhaps, next year?"
The scratch-your-own-itch philosophy simply doesn't work
together with a broad list of user requirements.
If you want to support users with disabilities, you probably
should not rely on hippie coders right now.
I repeat: If you want to write compliant software, that would
be also useable to people with disabilities, you can not use
Qt. For now, you will need to write a native UI for every
platform you want to support. Oh, and do not believe
Qt Company marketing texts, your users will suffer if you do.