Hacker News new | ask | show | jobs
by antoineMoPa 1384 days ago
This is awesome, and also awesome is this:

> I originally developed a WASM port of wxWidgets

I had some fun looking at the commits here[1] and I can imagine a lot of classic wxWidgets apps are going to be ported to wasm now. Congrats, that a lot of dedication!

[1] https://github.com/wxWidgets/wxWidgets/compare/master...ahil...

1 comments

I feel like I should preemptively apologize and I'm really not trying to knock the project in any way, and the achievement is pretty epic, but those who have seen my username on this site before know what's coming, especially in regards to people seriously considering using WX Widgets on the web... This app is inaccessible. Audacity on its own is already a bit difficult to use with a screen reader, but sadly, this port, unsurprisingly, is even worse. I've managed to at least explore some of the UI using OCR, but it was very cumbersome and I could never get it to do what I wanted. Just uttering my careful warning that you should please, please, please think 3, 4, 5 times before deciding to actually use this UI library for serious projects. The benefits of using what the browser already gives you is that, if you're not going too crazy, accessibility comes for free and there's very little you need to do to make sure that we can still use your app. Again, I understand that this is a port of Audacity, and I believe that what we can do in browsers is pretty amazing and my aim is not to discourage anyone from trying out new things. I'm just saying that this app is 100% screen reader inaccessible so please make sure you have a valid reason for keeping out users with disabilities (hint, you almost never do) by using WX widgets drawn directly to a canvas. And if you do, please think hard about what you can do to still keep your app accessible. I'm sure there are ways to add accessibility to a web port of WX, but if you can, sticking with the things the browsers give you is usually the better idea.
I so frequently see this tone with accessibility discussions: "X is not accessible, so don't use it, stop what you're doing, this is bad." I don't think that kind of scolding - which is what it comes off as - is productive for solving the problem of "X is not accessible", because it presumes the problem is unfixable. I believe you wrote your comment in good faith, and I agree accessibility is important. But I think you should consider focusing on this:

> I'm sure there are ways to add accessibility to a web port of WX

and not

> Just uttering my careful warning that you should please, please, please think 3, 4, 5 times before deciding to actually use this UI library for serious projects.

because, as you acknowledge, this is a hobby project. The goal is to do something cool and fun and push boundaries of what's possible. So if pushing accessibility for all web apps is your goal, why not seize this moment to say "hey let's find ways to make WASM apps more accessible" rather than saying "nobody should use this for serious projects"? Why not try to fix it rather than shutting it down? Doesn't it benefit people more if we find a way to make accessibility easy, rather than discouraging people because it's hard?

There are lots of cool and interesting technical problems in there that somebody who takes the time to make something like this could have interest in: How do OCR or other accessibility tools understand canvasses? How can we communicate with them? What addons to WASM or wxWidgets would achieve this goal?

> I don't think that kind of scolding - which is what it comes off as - is productive for solving the problem of "X is not accessible", because it presumes the problem is unfixable.

Of course the problem is fixable. But in the meantime, until it's fixed, a disabled person could fail to get a particular job, or even lose a job they already have, due to an inaccessible application. It's important to remember that the stakes are really that high. If we want to prevent that from happening, I think it's worthwhile to try to persuade application developers to not use inaccessible GUI toolkits, particularly for new projects. We can do that at the same time that we work on making more GUIs accessible.

> I think it's worthwhile to try to persuade application developers to not use inaccessible GUI toolkits, particularly for new projects. We can do that at the same time that we work on making more GUIs accessible.

Can we? People don't typically work on tools they don't intend to use. Where are the people doing the fixing going to come from if the conventional wisdom is "even if you use this for a side project, you're harming disabled people?"

Another way of framing your suggestion here is that toolkits with the resources to make themselves accessible without community help will always dominate toolkits that don't have those resources. That stifles progress for anyone.

> But in the meantime, until it's fixed, a disabled person could fail to get a particular job, or even lose a job they already have, due to an inaccessible application.

This kind of stake-raising honestly feels toxic to me, sometimes. You can make the same argument about almost anything. Eventually, you're going to get tuned out, because the knee-jerk reaction expressed to any new project is "well, you didn't do thing X I wanted, so I refuse to care even if the project has merit."

What's wrong with saying "hey, this is cool, but be aware if you wanna use wxWidgets for production app, know it's inaccessible and so you'll have more work to do to make your app accessible, which I assume you want to do, because it's the right (and often profitable!) thing to do"?

Why do we have to escalate it to "If you make side projects with wxWidgets, you're encouraging people to use them for production apps and therefore causing disabled people to lose their jobs"? It's purposefully taking everything in the most negative way possible.

Put another way, how is your argument distinct from the following: "Working on Audacity, a project for audio, privileges hearing people over Deaf people, and therefore could deprive Deaf people of programming jobs would go to text-based projects if there were fewer commercial audio engineering products helping people to replace text resources (blogs, etc.) with audio (podcasts, etc.). Therefore, Audacity is harmful and one should not work on it."

> I so frequently see this tone with accessibility discussions: "X is not accessible, so don't use it, stop what you're doing, this is bad."

'Don't use X for reasons ABC' is a great advice! Why use unusable X if some other thing Y works?

Have you tried using Wavvy on a smartphone? Guess what: it's effectively unusable on smartphones: - touch events aren't leveraged. - hover and right click aren't available, and keyboard shortcuts don't have an appropriate substitute; therefore core audio editing tasks cannot be accomplished in any acceptable manner.

If you are accustomed as I am to use Audacity on a desktop PC - clicking, cutting, shortcutting your sound files effortlessly - but then use Wavvy for the first time, you gonna feel...

disabled.

And that's only a glimpse into what the experience must be for a blind person using Wavvy. Here is an experiment: Close your eyes, use Wavvy. Only OCR allowed...

Being an awesome POC, the accessibility issues aren't Wavvy's "fault", but wxwidget's (and Audacity's by depending on wxwidget).

Considering audio is especially valuable for visually impaired people, having a usable audio editor is very valuable.

Now imagine, as it's so often the case in IT, everybody jumps on the latest bandwagon ("Docker all the things!", "Electron all the things!"), and suddenly everybody "WASM-canvases all the things!".

Now imagine Audacity decides "WASM-canvas" is the way to go for Audacity distribution; no more separate builds for Windows, Linux, macOS, just one WASM-canvas build.

And so do other software projects. And so does your company with its IT department software contribution... more and more, you cannot do your tasks the way you used to...

Back to the comment: constructive critique is always helpful:

- It helps Wavvy to consider using an alternative audio editor. - It helps Audacity to improve their usability and accessibility and consider another widget provider. - It helps wxwidget to fix their accessibility shortcomings.

We discuss problematic tools, libraries, websites, and services all the time at HN - be it for privacy concerns, performance issues and whatnot. We all learn from that why e.g. having a slice of privacy is also a good thing for us personally. So is accessibility, even when it's just the slices involving good layouts, readable fonts, unconfusing button naming, logical tabbing order, consistent shortcuts across applications, big-enough advertising close buttons, unfrustating timepickers... , ..., ...

> I don't think that kind of scolding - which is what it comes off as - is productive for solving the problem of "X is not accessible"...

ClawsOnPaws is neither scolding, nor is it coming off as it for me. They apologize upfront, says "please, please, please", says "my aim is not to discourage anyone from trying out new things".

If there was one polite, constructive comment at HN it be it.

> ...because it presumes the problem is unfixable.

I don't understand how you came to the conclusion that this was even remotely implied.

> But I think you should consider focusing on this: "I'm sure there are ways to add accessibility to a web port of WX"

I think you should consider focusing on this: "I'm sure wxwidgets could follow basic accessibility best practices and leverage accessibility APIs which are provided by operating systems already for years."

> why not seize this moment to say "hey let's find ways to make WASM apps more accessible"

I'm not an WASM expert, but I'm versed in accessibility features specified by W3C and implemented in browsers. As WASM can interact with Javascript, and Javascript allows all kinds of web accessibility standards interactions, this part is solved. What's required then is a mapping from OS accessibility calls (wxwidgets' duty) to browserland (WASM's side). I don't know about WASM's status here, but wxwidgets will have to make its own first step. ...

ClawsOnPaws' comment is a tangent comment on an important aspect of any application: usability. It gives awesome insights about why Wavvy is unusable for visually-impaired users.

- I learned that Audacity has its own problems with accessibility; - I learned that Audacity uses wxWidgets, which especially is bad when it comes to accessibility. That already is great to know, as I'm now informed to avoid it in my projects - with bad accessibility always comes a generally bad usability. - Now port this to the web as in the currently presented Wavvy form and you get a hilarious clusterfuck of inaccessibility. I learned from the comment that usability by default and without explicit consideration just degrates with each layer added and each porting. - useful information that there exists some OCR software for what's currently shown on the screen.

In essence, ClawsOnPaws' comment has everything in it for why I come to Hacker News.

I don't have time now to reply to everything in here; there's a lot. But I did want to mention that I posted some thoughts about WASM accessibility here: https://news.ycombinator.com/context?id=32697514 which are hopefully valuable in terms of how the problem could be solved without rewriting a given target application.

With regards to the rest, suffice it to say that I don't find the slippery slope argument persuasive. Given, though, that we're mostly arguing about how to approach doing the thing we both agree should be done, figured I might try and think about things that actually achieve the goal instead.

Unless you have a legal requirement to provide accessibility, I encourage everyone to ignore this advice. It is basically letting perfect be the enemy of good. Especially if your project is opensource. Someone that cares, which may even be you at a later date when other things on the to-do list are done, can submit patches to address accessibility later.
Brace yourself: the "European accessibility act" will soon make accessibility a legal requirement to the private sector, including computers, operating systems, smartphones, and e-commerce.

https://ec.europa.eu/social/main.jsp?catId=1202

Have your popcorn ready to watch how this will freak out plenty of big corporations, rushing to fix their products, services, and websites from their accessibility "short-sightedness" of times past.

Depending on circumstances, failing to comply may cause heavy fines and having the product removed from market.

My guess is this show will peak in 2025.

I just read it and the requirement for computers applies to hardware and operating systems. Ecommerce sites are covered but website and mobile app requirements beyond that apply to communication, transportation and public sector systems. The vast majority of private sector systems will still not have a legal accessibility requirement.
> ... can submit patches to address accessibility later.

I'm not experienced with accessibility, but I pay attention to it whenever I can to increase my own awareness. A very common feedback when it fails (e.g. in software, online conferences, ...) is: "Accessibility must be part of the plan from early on. Trying to add it afterwards basically always fails."

> I feel like I should preemptively apologize

You should not. A mentor once told me that we disabled people tend to apologize too much. You are right to point out the problem of accessibility in this context, despite the negative responses you've received.

Of all the GUI toolkits with wasm ports, IMO wx is the most amenable to using native HTML controls rather than doing everything with canvas. I'm sure that kind of port would take more work though.

I've seen this discussion happen before and the same problem be pointed out re: WASM and canvas[1]. (I'm sure there are more examples than just that.) The trouble is that Canvas exists for a good reason: It is much more time-intensive to re-implement something like Audacity in the DOM than it is to render Audacity to a canvas.

So if we wanted to spend the time, could we be over-focusing on "just manipulate the DOM" as a solution? WASM conceives of the web browser as the "OS", or at least as hardware, and JavaScript as a means to manipulate that "hardware" (ask the browser to do things). Most operating systems expose APIs that let you do accessible things (read the screen, automate UI actions, etc.). Then frameworks like QT, for example, hook into those APIs from their own code to provide generic accessibility regardless of OS.[2]

So, maybe one half of the solution here is that to try to develop a neutral API WASM can use to emit accessibility information which can then be read by JavaScript running in the browser, and transformed into objects in the DOM? Then you could write an interface to that from your framework (something like QT would be a better starting point than wxWidgets, though, admittedly) and you'd get what you need.

Not that any of that is easy. But it would be fun, and naively, seems not too much harder than "rewrite app X in WASM to use the DOM" for much broader impact.

Maybe this discussion already happened and there are very good reasons not to do this - but I couldn't find anything about it in previous arguments.

[1] https://news.ycombinator.com/item?id=17349170 [2] https://doc.qt.io/qt-6/accessible.html

I'm surprised at the pushback against ClawsOnPaws here. Why would you not want to make your apps usable by as many people as possible?
I'd be interested to see the man-hours-needed : people-helped ratio when it comes to user accessibility. There's certainly a threshold where it simply doesn't make sense to put in a man year's worth of work to cater to a proportionally very small percentage of the population.
I'd like to politely challenge your assumption that accessibility concerns are relevant only to a "proportionally very small percentage of the population". It's a common myth in this space.

Disabled people represent between 10% and 20% of the world population, and that's not even including those who don't identify as disabled but would nevertheless benefit from more accessible technology. If you've ever adjusted the text size in your browser or enabled captions while watching media, this group includes you.

With this same argument, could we please also stop catering to the "special needs" of the LGBTQ+ community? That also affects only a tiny fraction of the population, yet everyone has to live with huge dropdown lists for 25 genders, web forms that ask for "pronouns", and (e.g. in Germany) the "gendering" of every single word?

/S

Actually, that's a good thing to keep in mind. I would not use this for anything serious right now, unless for some reason it perfectly fits all requirements one might have. I see this as useful more for fun side projects and as another commenter said, it's possible to improve accessibility later. Maybe text could be rendered as actual text over the canvas?
It's not just accessabilty, nothing but English works. Even the keyboard doesn't work as it's hardcoded to keycodes so click the top of the track and click "Name..." and try to enter é and nope let alone 音

I'm not trying to knock the app or the work put into wxWidgets. But, we need to not regress in supporting the entire world and not just the English speaking subset. I don't really want to go back to the 80s/90s. I like that in general, with HTML, international text input/editing just works.

Other wxWidgets apps don't have this problem.
other wxWidget apps running in the browser?
You meant wxWidgets-wasm?
Why don't you spend some time harangueing browser and other big tech engineers instead of blaming application developers at every turn? The tools we use are ultimately determined by the companies that make them. Complete GUI toolkits are some of the most expensive software to build. We are limited by whatever's out there. The fact that HTML is a poor framework for rich application development is no fault of your average software engineer. If you want to blame someone, blame upstream and the product managers who run the browser engineering projects.
I feel like it should be possible to build a universal accessibility tool using machine learning that relies on vision rather than native framework UI/toolkit support. The problem seems much more tractable than other AI projects like self-driving cars, and also more in the realm of existing successes that we've already seen with machine learning. The problem of inaccessible apps will only get worse as wasm becomes more mature, I feel like the only way to win is to sidestep the problem.
This may sound insensitive, but accessibility isn't usually the #1 concern when developing new projects. It is usually tacked on later in an update because it isn't a core feature and it affects only a small subset of users.

Rather than encourage everyone to never use WX widgets for any reason in a website, maybe you should be encouraging people (or working yourself) to add this accessibility feature.

". It is usually tacked on later in an update because it isn't a core feature and it affects only a small subset of users"

But thats not optimal, right? But most do not care, as long as they are not part if that subset.

I mean, I find it hard to care too much either, when my main concern are all the missing and buggy features, that needs fixing first..

Accessibility, like globalization, expands your market, and should be part of a long term strategy. But when building out new projects, its severely slows down feature development. Both should be seen as tech debt, but tech debt is not evil, just like debt is not even. You are borrowing from the future for present day benefits. Used wisely and you can create a successful project that can afford to spend time on accessibility. Waste too much time on accessibility to start and you may burn through all your resources before seeing any success.
I mainly agree, but does the numbers of blind people really justify it economic wise?

I allmost see accessibility as charity. I want to add it to my apps, mainly because it is not nice to ignore people needs(and who know, with bad luck I might end up in that group one day), but not because I expect great monetary returns.

Accessibility is great but its hardly humanity's goal. In most instances your burden is no one else's unless we are talking life or death.
"Allowing people to participate in society is great but hardly humanity's goal."

Not only does your comment show ignorance of a significant percentage of humans, it also shows you have zero idea of the fact that good accessibility provides service to everyone.

Have you ever struggled to use your smartphone while driving (temporary blindness, because your eyes are focused on the street),

or pressed the wrong button while sitting in a bumpy, shaking bus, because the button you actually wanted to press was way too small (temporary hand coordination disability)?

Accessibility's best practices also exist for everyone to enjoy a great usability.

Lol what? No you are right struggling to use your smart phone while driving and simultaneously being blinded by the sun are one of humanities great struggles. Let's get real accessibility has and will always take a back seat to innovation unless the innovator is in some way also disabled. You can always circle back around but no disabled person has any right to talk down to someone else because they weren't a first consideration.