Is this project currently accepting contributors? #4
-
Hello, I apologize for opening an issue for this but I was having trouble finding a way to contact you. I'm an experienced Rust developer and I'd love to help out with this project. Are you currently accepting contributors? |
Beta Was this translation helpful? Give feedback.
Replies: 9 comments 4 replies
-
hello there, one of the yggdrasil founders here! |
Beta Was this translation helpful? Give feedback.
-
Did you see https://wiki.freedesktop.org/www/Accessibility/ ?
Reports / pull requests on that would be more than welcome too. |
Beta Was this translation helpful? Give feedback.
-
@sthibaul about the first link, yes, I saw that, or a very similar page anyway, my browser shows it as visited. Yes, we know there's documentation on how to make client apps accessible, however we need more on...well...how does this fit in with screen readers, atspi servers...hmm |
Beta Was this translation helpful? Give feedback.
-
@albertotirla, the alt tab thing is actually quite common among screen readers. Haven't played with Linux a ton, but at least on Windows, invoking alt+tab sets the foreground window to Task Switcher, and shows all the windows visually as you alt tab through them. This sends a totally different accessibility event that doesn't have anything to do with focus. |
Beta Was this translation helpful? Give feedback.
-
since this question has been answered with enough clarity I believe, I'm closing this issue. @pwoolcoc, if you can contribute to any of the above mentioned things, it's much appreciated. |
Beta Was this translation helpful? Give feedback.
-
Most screen-reader-side information would be available in the libatspi (https://www.manpagez.com/html/libatspi/) and pyatspi2 documentations (
Most probably no, it's probably just because gnome moves things around on its websites.
Usually hacks are not a good thing. People used to introduce them in orca, but nowadays Joanmarie says that it really is the application that should be fixed.
I'm not sure to understand what you meant.
Well, yes, because of lack of manpower. So either people spend time on writing tutorials etc. which always quickly get outdated, or they make the whole thing at least work. Atspi does have some documentation. I wouldn't say it's perfect, but it's a matter of people helping with improving it.
That's the eternal criticism that people often have. And then they write code which doesn't have much comments either...
Cool! I would however say not to wait. It's when you are solving the problem that you should write the documentation that explains how you understood how to solve it. Once you have understood the thing and let some time pass, you'll have forgotten the list of things that you needed to understand, and that you now can't unlearn.
Most often they are not supposed to be there, so better fix them :) We want less workarounds, not replicate them in various screen readers.
That's indeed a corner case that poses problem on windows too indeed.
Is your task switcher accessible, actually? IIRC we had seen some task switchers that were actually not accessible at all.
Yes.
"modernisation" is a too vague term, often only related to hypeness, which is quite often not actually technically sound.
What "modern" would mean here? Really, most often when I see this adjective the background is actually quite vague. Yes, writing a screen reader in C is unreasonable. Writing it in Python is, however, we can see how NVDA is faring.
That's not a "modern" thing :)
It can be extended. That being said, there are indeed ground reasons in atspi2 defects. But they are not out of lack of some kind of "modernity", but just because at the time we didn't know how e.g. thunderbird's thousands-mail-long interface would behave, and thus the corresponding notification flurry issues.
Yes, that's why I'm calling for joining efforts.
No, the speech dispatcher documentation is not generated, the .texi file is the source. I have updated some of it in ae12effa5713c7c875361c18b5436976bbd6d4e0, but that would probably need some review to check that my quick look didn't miss something. |
Beta Was this translation helpful? Give feedback.
-
For clarity, I will reiterate that at this time, our (mine and @albertotirla's focus is on binding at-spi in Rust, one way or another, which we're currently doing by directly communicating over DBus, not using libatspi. We tried libatspi first, but we found that gir really isn't up to the task of fully generating these bindings, namely because of As already mentioned, I don't think I can stress enough how important I think writing documentation is right now. We don't want to repeat the mistakes of years past which I feel caused many people to give up on contributing to the Linux accessibility stack. To this end, I've started work on some introductery material to DBus, to at-spi, and I plan to make many examples, including in Rust, since that will help potential Yggdrasil contributors get started. This isn't public, but will eventually be going up on the Yggdrasil site.
Good resources, thanks for sharing! I've also had success before getting some documentation out of the GObject Introspection files.
I absolutely agree, and that's one of the things we'd like to uncover and fix while building Yggdrasil. If we find a bug in the toolkit, or the registryd, it needs to be fixed upstream, not hacked around. This will benefit Orca users too, so this can only be good.
Agreeed, and we certainly plan to help with this in any way we can.
I fully agree, and I'm determined to not let this happen again. It's a much too complicated problem to solve for it to ever be 100% perfect, but we'd certainly like to give it our best shot. A mixture of in-code comments, which are more likely to be kept up-to-date, and out-of-code materials that provide higher-level overviews, as well as point people to the relevent source files, seems to me as if it would go a long way to make the inner workings of the a11y stack ... more accessible.
Also agreed, we need to get more info out of the heads of developers and onto paper, or at least e-paper :-)
Exactly, and I hope that starting a new Linux a11y project can help re-invigourate this topic, and benefit everybody. I've read comments on the Linux a11y mailing list to the effect of "Why are you not just contributing to Orca", and besides the barrier to entry, one of the reasons is that I kinda feel like examining the entire stack from the perspective of making a new screen reader may actually be more beneficial to the stack, because it will uncover issues that have been taken for granted for years now. That's my hope at least.
I think in our case, the innovation we're trying to push for is in the addon system. Not just bringing screen reader addons to Linux, but also by making Yggdrasil as modular as possible. We plan to dog-food our own addon API by writing features that would normally be part of the screen reader's core with it, such as OCR, sound icons, etc. In effect, the core becomes just a handler for keyboard input and the accessible objects and at-spi events (the input), and the controller of speech, braille, etc (the output). In a sense, we're taking inspiration from modular kernels like Linux (keep the core smaller and simpler, delligate additional functionality to modules). Of course, this introduces some challenges of its own, like developing a well thaught out addon API, and making sure addons can't bring down the screen reader if possible, but hopefully Rust will help us manage this due to its memory safety and fearless concurrency.
By this do you mean it is or isn't unreasonable? NVDA is almost certainly the most successful open-source screen reader project, but they've definitely had issues with the Python 2 -> 3 transition, and breaking compatibility. I don't think Python is the issue with Orca, but if we're starting again anyway, I think it makes sense to use a more high performance language so long as it doesn't introduce huge design deficiencies of its own, which I don't think Rust will do.
Are there any ideas floating around of how to fix these issues? I'm well aware of their existence, but haven't seen too much discussion about solutions (probably just haven't been looking hard enough). How does UI Automation solve this on Windows, or whatever Apple's accessibility API is called? Could some of these big lists of accessible objects be paginated? Could backpressure could be used to take the strain off the event handlers? |
Beta Was this translation helpful? Give feedback.
-
That should be fine, qt does this, and gtk4 will do this as well.
Great! When it becomes available, please add a link on the https://wiki.freedesktop.org/www/Accessibility/ wiki page, so this gets advertised.
Possibly not for granted, but at least papered over by the implementation, and thus forgotten since then. So undigging the issues and working on them could be a good thing indeed.
The punctuation was ambiguous indeed :) I meant: “Writing it in Python is, however : we can see how NVDA is faring”.
Agreed! Concerning Rust, my main concern would be whether people can learn it easily enough to be able to make contributions quickly.
I haven't followed this.
That's how libreoffice does it for the document for instance, yes: it only exposes the really visible objects.
I'm not sure to understand what you mean by "backpressure"? |
Beta Was this translation helpful? Give feedback.
-
because of this issue in particular, but also anticipating others of its kind, I enabled github discussions. So, for anything that's not actually an issue, I recommend we use that, especially since this issue is closed for now.
about that documentation from manpages we know, otherwise we won't have arrived as far as the prototype, I think it's in the resources section of the design doc, as well as some examples repository. Those were invaluable resources in our journey, we would have given up a long time ago without them.
OK, good to know then. Is that document available somewhere else? does it contain things we can't get from the man pages, some explanations perhaps?
I totally agree with that stanse, we'll try to make it work, then make it work better as the saying goes. What this means in practice is probably we will adopt these hacks only if we can't think of anything else or if nothing else exists currently. Even so, we will try to keep them around for as short a time as possible, indeed we won't have issues going further upstream if the cause of the hack originates there.
well, in the prototype, we're throwing everything together to see if it works and how things interact with the system, if rust makes a difference, that's why we don't have comments in that, but we will in the real thing, after the design overhall. Fyi, actually, rust really makes a difference, for now that is.
fare point. I still DK what to do on that front, code needs to be written that's true, while the docs can't really be written in the meantime. On the other side, you're right, we'll probably forget how we solved the issue in the first place. Ironically, I think this is where code comments might come in handy.
well, probably yes, as orca reads when I do that. Plus, I'm using ubuntu, so it should be farely accessible...at least that part is. About that, I think I'm partway to a sollution. So, through monitoring of the atspi bus, I discovered that when a window switches, or even when I am in the switcher, a parent property changed sygnal is fired, plus when you land on that window, the toolkit sends events about each child of that window being added. Perhaps that could be a heuristic to detect we're in the task switcher? do you know how orca handles this? I can't make sense of where in the code that is handled, might it be that this is another hack?
Performance and functionality wise, think of the comparison between csr(commentary screenreader) and tb(talkback). However we tb users don't want to admit it, csr is so much faster, exactly because most of the performance-critical tasks are written in c++, it's reality.
while I agree with you in the writing a screen reader in C part, I can't totally agree on python. Indeed nvda is written in python, however it uses C libs for most things, which speed it up a bit. Plus, because of the gil and all that, you can't have proper multithreading, so it doesn't use the full potential of a multicore machine. Plus, remember that python itself has an interpreter, so that means a larger runtime, a larger part of memory unusable by nvda or other programs, something that shows in nvda, especially when the computer has a huge task to do and nvda is ram restricted, it lags very badly, same for orca. Python shouldn't be the defacto standard to writing applications tightly integrated with the system, such as screen readers. We need maximal performance out of them, not the potential for a very easily readable code that, as we saw, could also quickly turn into a mess for one reason or another. If rust didn't exist, I would probably jump to c++ and begin to write it that way. |
Beta Was this translation helpful? Give feedback.
hello there, one of the yggdrasil founders here!
At this point in time, yggdrasil doesn't accept contributors in the accessibility related parts of the code, however there are other things to do. This is because the accessibility technology in linux is very much undocumented, almost all the documents I could find are outdated and their links give me 404 errors, so we do things only by reading, more often than not, the C code of atspi and such to figure out how the events and all that work. Additionally, we also read the source code of orca, the existing screen reader for linux, a very messy codebase to work with honestly. So, since we won't want to put you through any of that unless you f…