App developers won't do it if the toolkit doesn't support it and make it extremely easy to use. It's also not that different, because platforms often offer richer/better APIs than POSIX and application frameworks use those with POSIX as a fallback for lower tier targets.
All of the modern operating systems have good accessibility APIs. You ask why developers should take advantage of them? Because it’s the right thing to do and it’s usually not particularly onerous and accessibility accommodations usually make the software better for everyone.
Would you also question why builders have to make bathrooms wheelchair accessible in public buildings? It costs more and can be uglier and restricts the potential designs. Why shouldn’t the wheelchair builders have to make fancier wheelchairs that can navigate the spaces you want to build, right?
Why should devs have to implement a separate API for 4+ different OSes? There should be one single API. The closest we have is AccessKit[0]. It's an awesome project, but this work should be funded by Google/Microsoft/Apple.
I'm not arguing GUI toolkit devs shouldn't implement accessibility support. It's a laudable thing to do. I'm pushing back against the meme that the responsibility lies primarily with them.
> Because it’s the right thing to do and it’s usually not particularly onerous
Have you implemented cross-platform accessibility support for a GUI toolkit?
> Accessibility accommodations usually make the software better for everyone.
Accessibility support bloats software. The most trivial example is websites. If you add full accessibility support to a website, it will be bigger, and therefore objectively worse for any user not taking advantage of the accessibility features. The extra bytes also add up over trillions of requests to have an environmental impact.
I think we should be exploring alternative approaches like hand-tuned accessibility-focused apps.
> Would you also question why builders have to make bathrooms wheelchair accessible in public buildings? It costs more and can be uglier and restricts the potential designs.
Strawman. Bathrooms exist in a physical space. Only one implementation can occupy that space, and disabled people have little choice but to interact with the implementations near them. Software distributed over the internet has no such constraints, and different products can compete on accessibility features.
Also, ramps are beneficial to almost everyone at various times. Most people will never use a screen reader.
> Why shouldn’t the wheelchair builders have to make fancier wheelchairs that can navigate the spaces you want to build, right?
Physical accessibility laws were created before modern electric wheelchairs. It might indeed make more sense to regulate (or subsidize) this at the wheelchair level. Do you think most wheelchair users would prefer ramps everywhere, or a wheelchair capable of going up stairs[1]?
As mentioned[2] by your sibling, accessibility advocates and ADA regulations push for "Full & Equal Enjoyment". That doesn't sound like being forced to use ramps to me.
> Why should devs have to implement a separate API for 4+ different OSes?
Because they don’t want to release software that targets a lowest common denominator. If you don’t care about this stuff, just use Electron or some other library that lets you move fast and make mediocre software that feels foreign on every OS.
Each operating system is different in lots of different ways and if you want to make the best app on each platform, you embrace that. For example, many apps have some number of settings. On Windows you will probably put those in a Preferences or Settings dialog in the app. On iOS, some of those belong in the settings panel. Great apps aren’t going to pave over these differences.
Same goes for accessibility APIs. There’s all kinds of assistive devices (both hardware and software) already in widespread use. They have different expectations on every platform. Follow the conventions laid out by each platform maker and your software should just work. It’s the same as handling keyboard and mouse support. Each OS has different APIs.
Does that mean people who write cross-platform libraries have to do more work? Well yes it does, but then creating an abstraction over each platform is what they set out to do in the first place. It’s an important part of the job.
You're making my point for me, maybe better than I did. The type of OS integration you're talking about isn't implemented by libraries like Brisk anyway. They use their own custom visual style. These libraries fill a specific niche.
You're not talking about "good" APIs but "the same API." And if you're going to argue that operating system vendors should provide the same APIs for things that are deeply integrated into the value they provide and make money by selling, then you're going to have an uphill battle.
POSIX is a good example of a lowest common denominator that is "good enough" for many kinds of programs, but not consumer software applications with GUIs. That common denominator is the kind of cross-platform GUI toolkit/framework that we're talking about. a11y is a feature of that, not of something like POSIX. And no OS vendor is going to try and create such a standard, or if one is created they won't try and follow it - because anything that makes applications better on other platforms makes their platform worth less.
AccessKit is a really laudable effort to decouple the a11y API from the UI. It would be great if many GUI toolkits adopted it, but it does affect their design in non trivial ways.
Summed up: what you're asking is "why don't Apple and Microsoft make it easier for developers to make software developed on Apple platforms better on Microsoft or vice versa" and the answer should be self evident. These APIs exist to create value for the platform, not for other platforms. Standards don't exist for portability, they exist to create lock-in and entrench existing players.
> what you're asking is "why don't Apple and Microsoft make it easier for developers to make software developed on Apple platforms better on Microsoft or vice versa"
No, what I'm asking is why the responsibility is always put on GUI toolkit developers. If a good cross platform a11y API is possible, the moral obligation is on the OS vendors to create it and support it. If it's not possible, then why do we treat GUI toolkit devs not only as if it is, but it's somehow their job to re-implement it for every GUI library?
The point I'm making is that its OS vendors job to develop one platform, not software that works on multiple. It seems like you misunderstand that. They don't have a moral obligation to develop APIs that work for other platforms - that's absurd. That's not even what POSIX is, and like I said, POSIX doesn't even cut it for these applications.
The obligation is in the developers making cross platform layers, like GUI toolkits. There's no obligation for MS and Apple to agree on an API, but there is an obligation for the software claiming to target both to support both APIs. That's the very nature of making something cross platform!