2021-08-31 14:26:45

hello there, whoever is the unfortunate soul to have stumbled upon this topic!
Today, this topic is gonna talk about linux, yea! If you hate it or don't want to hear about it, be involved with it in any way because of various reasons, please press the back button in your browsers, minds, phones, potatos, whatever you use to open this page. With that said, let's go on...
For a long time now, I envisioned linux and the freedom it provides as the next step in the privacy and device telemetry battle, as a kinda insurance that my data will never leave my computer without my permission, without me being able to see inside the machinery of the package manager for example and with full knowing of my actions, disable the microsoft repos from the apt repository list. However, things are far better than that, basically linux is full freedom.
With windows, in order to personalise your pc a bit, you have to activate it. With linux, it's damn easy to do, just go to the settings app for your desktop of choice, then change some params, or even better, just do good things to the configuration files.
Want to completely change your desktop, a.k.a shell? On windows, meh, you're kinda locked in whatever ms thinks is the best, the only way to change it being to go in the registry and do nasty hacks. Granted, an automated tool does it, but everything in the thing is hacks around windows limitations and restrictions. On linux however, most of the time is install a couple tools, tweek some settings, then install a package from the distribution's repo. On boot, you will be presented with a choice of desktops, being able to pick any of the installed desktops at any time. Plus, it's accessible, so that's that.
Let's say you want to change how your login prompt is, again, on windows you're stuck, while on linux everything is replaceable if you know what you're doing. As such, don't like lightdm, OK, pick another display/login manager, like gdm.
To continue my previous point, remember cortana, that bloated cpu hungry thing that gets installed everywhere, even though it's supported only by afew regions? Yeah, that thing. Well, you probably are astonished to find out, but it can't be uninstalled, plus fucking starts at logon as far as I have been able to observe. It can be disabled, but again, hacks around limitations, so yeah.
On ubuntu, let's take one of the included applications, snap. If you want to remove it, canonical isn't stopping you, neither could it. You just remove it from your system in any way you see fit.
Now, to bring this to a close, linux is free of charge, of restrictions and of pattents, being open source and all that, plus it can be made to run on anything, even on your grandmother's potato with 1.50001 gb ram and a one core cpu or something, it's totally possible, Not the fully fledged thing, but doable. What do you think our routers run nowadays?
Now, unfortunately, I have to point out what linux is not.
Linux is not driven by corporates with interests bigger than any supercomputer in existance, it's not full of bugs such as a simple software update could make your computer lose sound or become unbootable, it's not driving developers away or making special languages/ecosystems to keep them on that platform for as much as possible, it's not closed source, however what's more important, it's not accessible.
Now, the linux users on stage, anyone? very good! They can and totally will point out that: "linux is accessible, I have used it extensively, I made an accessible ripoff of a linux distro, it's totally doable!"
While I agree with the sentiment, as I'm an ubuntu user my self for quite some time now, linux is not accessible, not to the level windows is, we just have to admit it. Sure, we learned to deal with the quorks and issues because we incountered them and just sort of figured it out, but as many of you could agree, it is quite an involved process sometimes, with minimum some programming knowledge required to deal with some horible nasty situations, though those are kinda hard to incounter, so yeah. Point is, linux is not as accessible as we might want it to be, or as we think it is.
With full knowledge that the linux ecosystem, the kernel, the drivers, the packages and even the desktops themselfs are for the most part community maintained and free, I can't in good faith demand or argue for accessibility, as I can, for example, with companies like ms or console companies, like nintendo, soni, etc. I know the linux communities aren't getting paid a peny for their hard work, updating the software to comply with new hardware, the design of the gui to comply with new end user expectation. I know all of that is hard, as well as I know that, being a small minority of the user base, accessibility is very low, if at all, on their priority lists.
However, in stead of complaining, I am trying to solve it partway, then probably they will be more willing to collaborate with us when they see we take the initiative.
I think most of you agree with me here when I say, orca is a terrible screen reader! OK, probably not, it's what we're using most of the time, well, let me elaborate then.
First, it lacks some of the features the screen readers of 2021 should have. Well, when we navigate weird apps, even the damn windows settings app, we need object nav, a way to explore the screen in parts of the accessibility tree a keyboard can't reach, for example blocks of text with important information which, as we know, aren't focusable by default. Well, guess what, orca has no such thing, not like nvda or voiceover. Before you start, don't even get me started on flat review, one lost all the context in that flattened form, it's only text then, no clear boundaries. And I've seen bits of the accessibility API, so I know what I'm saying when I say it's possible with what we have already.
Next, no ability to move the mouse with the keyboard. Remember things like steam, where a controll can only be activated by clicking with the mouse? Well, one could just drag the mouse cursor to the current navigator object and do a double click, you guys know this from nvda, so yeah. Again, I've seen enough of the accessibility framework to see it's possible, but again, not implemented in orca.
No ocr support. In the age of 2020+, we should be able to have everything accessible already, world advancements and all that. Well, unfortunately it isn't, and we sometimes can't rely on any of what I said above, as accessibility is simply not present. In that case, yup, we use ocr to the best of our ability. There are examples where ocr works quite well, such as in the game hades. In that way, we can still play the game.
Then, no add-on support, the orca simple pluggin thing is not included, as one must install it as an external thing.
As an extra thing, the upper layers of orca are full of specific user hacks to try and patch the various accessibility gaps that opened in the hul of linux for some time now. Without competent enough developers, those hacks might or might not work, depending on the moon, the current value of bitcoin, if a photon zapped by your ear that moment or something else. Therefore, it's also unstable and prone to freeze your computer at random, as some of you native ubuntu users can confirm. Also, because of this, orca kinda became spageti code, so much so that I can't try learn atspi reading its code, I'm afraid it's too bad design to understand it which proves to be the case most of the time.
Finally, it's written in python. This shouldn't be very horible on its own, and it isn't, after all machine learning stuff is running on the python interpreter. However, python apps are generally more bulky, more memory consuming and cpu hungry than their native counterparts so to speak, so in a place where speed and small memory footprints are important like in the screen reader realm, apps should be written in a way as close as possible to the hardware, for example in C, C++, etc. Unfortunately, both nvda and orca are suffering this problem to some extent, I think I don't need to elaborate very much on this.
I'm sure there are other problems I don't remember off the top of my head, however those should be enough to paint the picture.
So, my solution is to create a brand new screen reader for the linux family of operating systems.
first, it will have all the features of orca, even if I have to translate some code structures from there, as I DK where could I learn how atspi works, even though that can also be difficult because of the spageti code orca is.
Then, it'll have object nav, more mouse options, like the navigator object to be followed by the mouse cursor, zoom and highlight effect around the navigator object and mouse cursor, etc, as well as ocr and probably other things nvda has. Of course, it'll have add-ons as well, but that's damn far in the future.
Thing is, I don't want to start a project knowing I could probably be the only one using it, especially if its a screen reader, one of those kinds of projects one works on in a lifetime. So, if I were to make such a thing, would anyone use it, would blind windows users consider switching to linux if the screen reader proves to be as competent as windows, opening the way to greatter linux accessibility by the virtue of example?
Now, about the more technically inclined, because of what I said above about performance and all that, I've seen it happen on windows, with the zdsr screenreader. So, I downloaded the community wellfare edition, don't exactly remember where I got it from, however it gave a big performance boost. For example, tabbing through a dialog or window happened instantly, even if I tabbed I think twice or so per second, no delay at all, same for arrowing through lists of long items. It also used a tiny amount of memory and processing power, about a third of nvda, if not half. DK if nvda is not optimised enough, though it might be the case, however the one or so ms delay ctypes offeres adds up, especially in situations when the computer is overloaded with a program, leaving little memory for nvda to work in, it can crash the entire computer, saw it happen.
So, with that said, I'm gonna make it in rust. Since this is a new beginning, I want to break from that monotone of only python is the best for screen readers, and because these people used it, I will too. We must realise that, without lots of hacks and stuff, python performance is not great, not for this. I'd say vanilla python is not very well suited for things like screen readers, the same way java is not suited to programming microcontrollers.
One more thing: Whoever gets their hope level too high about this should not, not so fast anyways. You must know that making a screen reader is a very involved process, the most pityfull prototypes taking up to a month or more to be released to the public, a beta release could take up to a year or more, the whole screen reader could still be in development for a damn long time, look at nvda to get a simple picture. Unlike some of the few people on this plannet, I am not an accessibility god, neither do I yearn for such a title anyway, however I will do everything in my power to bring this dream to pass somehow.
Maybe I won't be able to do it because of insufficient rust knowledge, the undocumented nature of atspi, or any number of other factors. For the first time in my programming career, I will start on the pesimistic side of the road, as I never did something like this and it might fail for a miriad of reasons, this is frankly the most complicated programming project I ever did. Maybe it'll fail indeed, however what I won't do is fall over dead before I could fight with all I've got, I must at least try, if nothing else. Plus, even if it fails, the experience I gain would be worth it. As I said multiple times, stop complaining, start doing what you can to improve it. Well, in other threads, I gave examples of people in this community who are actively trying to change what they can about the world we live in, to make it better, either with 3d audio, accessibility of firmware settings in the preboot environment, designing game accessibility guidelines and frameworks to be used in a game to exemplify that specification, now it's my turn to at least try to change what I can about linux being everything but not accessible enough.
So, what do you guys say? Would you use it? would it be possible to make? any other comments, throw them in this vortex of a topic. I already see it spreading.

2021-08-31 15:21:53

i would absilutly use this, as orca is really the only thing stopping me from using linux perminintly, well as well as my other drive not auto mounting and some other stuff like gta v scripthookv.net mods, but those can be figured out, the biggest one is orca though so this idea, this is my thing, though i resently was wondering something similar to this, as why the people who make the accessible blindy distros havent tryed actually, ya know, making their own software for them, like a basic desktop envirnment, so even in a future version, it will be their, but i guess they just, havent thought of that? still, cool idea

i am a system, i have headmates, and that is my life, and my discord is rings2006wilson#8609

2021-08-31 15:40:08

I sertenly can be using this, and if you want alfa or beta testers, consider me in! I hope you the best of luck with this!

2021-08-31 15:44:30

NVDA's speed can get improved by a lot if it gets compiled to cython and it becomes 64bit instead of 32, But if the source it self uses very slow code, It's possible that those 2 will do nothing, But still.
Anyways though, This is going to be a very interesting thing if it becomes real, Linux is very nice, And it should start becoming more accessible and starts to get atention more.

2021-08-31 15:56:17

I just want to say that some of the freezing issues you have were caused by ubuntu, especially 21.04, so you might want to try another distro and see if it is as common on there. With that said though, good luck, more options is obviously a good thing.

2021-08-31 16:06:32

Yeah as I've said before I don't think Python alone is the issue, but you probably have to start from scratch for tech debt based off the things I've heard, so why not.

You need to crosspost this and/or not have the primary discussion on audiogames.net.  The audience here is very tiny and 99% consists of kids who are still learning things and who will play with something just because.

I probably won't switch, no, but we do need some sort of worthy alternative because mac has entirely dropped the ball for programmers and Microsoft could fuck something important up any day.

My Blog
Twitter: @ajhicks1992

2021-08-31 16:12:43

Funny thing actually. A friend of mine had the exact same idea. Maybe you guys could work together on this project? I can talk to him about this later whenever I get a chance and see what he thinks if you like.

Discord: dangero#0750
Steam: dangero2000
TWITCH
YOUTUBE and YOUTUBE DISCORD SERVER

2021-08-31 17:28:24

@camlorn, yup, sure I'll spread it more, however when I get something to show off for the trubble of clicking that share button or something, as I don't want people to raise their hopes too high, only for my thing to fail spectacularely and leave everyone in the dust. Again, it's both my dream, a learning project and, depending how it goes, an important piece of history for linux becoming accessible. The screen reader alone isn't gonna make a lot of shit happen all at once, other tools and specs and docs need to be developed, however maybe this is gonna be the incentiv it needs for something to change.
@mazen: Probably it's so, however I tryed it on fedora as well and the freezes still happened, arch does the same sometimes though not so regularely. Thing is, orca is one of those things that work when they want to, don't when don't, everything else in between in most cases, basically it breaks if you as much as breeth on it. It's so full of those so called user hacks that it begins to impact general performance of the software.
@mohamed: Yup, it could be so, but in the end, is it worth it? I mean, 64 bit code runs only on 64 bit machines and so on, this shouldn't impact performance enough for the occasional delay we see. About cythonising and all that, probably it could help, however by then we won't write normal python code, only a kind of thingi that is neither python nor C, as well as using new keywords like cdef or pydef or cpdef or however those are called, I haven't used cython in a very long time so I might be wrong with that. At that point, due to how much would code need to be refactored to actually benefit from the performance boost, it might as well have been written in rust from day 0, just my opinion.
@7: interesting, can you give me more details? As in, what knowledge does that friend of yours have, to want to do such a thing? Do they know rust, python, something else? Do they know how atspi works, how orca uses it, how gtk implements atspi, etc? Did they do something like that before, any previous knowledge that could help the project?
I mean, for now, I'll make the prototypes and probably the screen reader core alone, or that's the plan anyways. However, the repo will be up on github as soon as I have something to show, some parts of the core, an abstraction interface or something, so then people could contribute based on some guidelines I'll set when I make it public. I'm interested to see how did your friend plan to do this, with what language, what frameworks, any wrappers they intended to use? Any knowledge about this wildly undocumented technology, as it seemns to mostly be the case with linux desktop stuff?
@everyone: Thanks for the support, appreciated. Maybe we'll see the day when this will really happen, however it could take years to truely be usable, as I'm basically figuring stuff by trial and error since this is kinda undocumented for the most part.
For example, I finished making a quick and dirty python prototype that enumerates windows on screen, queries their accessible objects and kinda that's all. Oops, it identifies objects that have focus as well as it tryes to give info about the controll ID in a user friendly way...I just can guess what a huge state machine I'd have to build to convert each of the roles enum values in a user-friendly representation.
For now, the prototype uses print to display info, however speech can be faked by piping the output to the spd-say program, so speech dispatcher will kinda speak it, in a very crude way, but good enough for a prototype, especially that I have to learn everything by trial and error, and especially since the rust bindings differ greatly from the python ones, so that's that, the knowledge won't transfer.

2021-08-31 17:37:19

If @7 refers to the same person I'm thinking of, Then yeah, He knows rust, And he even said he wants to make a at-spi wrapper for rust, As far as I remember, And I sent him this topic link because I think he'll be interested, So lets see.

2021-08-31 17:38:44

For what it's worth, 64-bit code is not meaningfully faster than 32-bit code in any fashion that is likely to matter to this project.  i would be more concerned about portability, for example if it turns out some API somewhere screwed up their integer sizes.  in practice, you probably want to target 64-bit just to avoid the potential of people doing very fun things with shoving pointers into the wrong size integers and things, and there is no earthly reason why modern code shouldn't just say it's 64-bit only. But speed has almost nothing to do with anything unless you're doing almost pure math code.

My Blog
Twitter: @ajhicks1992

2021-08-31 17:57:21

Mohammed and I are both friends with him. He’s been involved in the world of development for about 10 years now. He’s also really into Rust as well. If I got discord and if he doesn’t mind, I could add you as a friend on there and see if I can’t get you 2 to meet if you like. I believe he's really good at what he does.

Discord: dangero#0750
Steam: dangero2000
TWITCH
YOUTUBE and YOUTUBE DISCORD SERVER

2021-08-31 18:18:37

well, an at-spi wrapper for rust already exists, kinda anyways. I think I posted about it somewhere along these days, but here it is
https://github.com/luukvanderduim/atspi
however, it kinda differs from the python bindings, as the way to use it and names are not the same, but I think this could be delt with
anyways, I found another very good thing, some examples of libatspi in use, as well as some other bindings, including pyatspi and some javascript things.
https://github.com/infapi00/at-spi2-examples
OK, in that case, I see the person knows quite a lot about such things, maybe it could be done faster if he joins. Anyway, keep me posted if he agrees or something.
if you need my discord, let me know, it'd be unfortunate for bots to take it first, lol.

2021-08-31 18:33:47

Yes, he said he absolutely agrees. Actually, I think you two might know each other. He says he knows you from the Audiogame Dev Discord server.

Discord: dangero#0750
Steam: dangero2000
TWITCH
YOUTUBE and YOUTUBE DISCORD SERVER

2021-08-31 18:48:09

I used Linux as my main OS for 8 years. I would be interested in something like this. My only concern is, do you have the knowledge to take something like this on? The Orca team is only one person as far as I know, and Linux accessibility has a lot of separate  parts that have to work together. I wish you luck, and I look forward to seeing what you come up with.

2021-08-31 18:54:33

Orca is only one thing that stops me from using Linux full-time, so yes, I would use it definitely.

2021-08-31 19:16:09

@13, maybe I probably know him. The only person I know that knows rust and is in the audiogames dev discord is nolan. Am I correct in my asumption?
@14: well, I DK much about linux accessibility in deep details, however I'm learning as much as I can, with the few docs that I can peese together from various sources, plus made that demo prototype python script in approximately half an hour or something, and my logic seemned to work, since it did what I wanted it to do.
Don't get me wrong, I know I'm not the best person to take this head on, however no one seemns to want to do this, so I'm trying to do it my self, as best as my knowledge would allow. After all, if something prevents me from doing this, I would try to overcome it to the best of my ability. If it won't work, again, not a big problem, at least I tryed and can then say from experience it's not possible. I want to at least try, if no one is willing to do so, better than complaining. If knowledge I don't have is preventing me from doing this, I would learn what I need to, as fast as I can.
and to whoever is wandering, this would be only 64 bit in the x86/64 or whatever kind of architectures. Then, if linux is supported as a desktop OS on those platforms, I might consider arm, spark, nvidia(the processors inside the ps4), etc, only time will know. However, no official support for i386. Sure the community can try, however it won't be endorsed by code written by me, at least not specifically.

2021-08-31 19:18:31

Na, he goes by The Fake VIP.

Discord: dangero#0750
Steam: dangero2000
TWITCH
YOUTUBE and YOUTUBE DISCORD SERVER

2021-08-31 19:33:57

good luck bgt lover. I wish that this project succeeds and we'll be able to use linux systems freely and compitantly the same as windows screenreader users do

I am a hunter named Grunt. I didn't realize that until now.

2021-08-31 20:00:08

@bgt lover
For what it's worth I'd be prepared to write your own bindings.  I have no idea if what you found is quality or not but in general 90% of the entire thing is talking to accessibility APIs and I suspect that you're just going to drop down to rust-bindgen and unsafe Rust to talk directly to C.

My Blog
Twitter: @ajhicks1992

2021-08-31 20:57:11

@camlorn, well, I would, however atspi is written with something called glib. Therefore, it makes use of things like gint, gchar, gobject, and so on, types from that library. DK what those exactly do, as I'm reading upon it, but I guess it's something like object orientation for C.
Regardless, because I don't want those structs and that weird oop mechanism copyed in my rust code, I have to get bindings that are generated with something aware of glib and its weirdness to be able to pass things well in rust and back without weird side-effects or it not working if imported with rust-bindgen. So, the bindings I'm studying are generated with gir, something that clames to know how to handle such things and generate proper bindings.

2021-08-31 22:39:35

@bgt lover

I was just curious, and I don't have the technical skills to help, but I would love for a screen reader that works better than orca. I wish you the best.

2021-09-01 09:45:49

Well, I agree with post 15.
I have a lot of programs in windows that I use.
While things like vlc, audacity, and well firefox and thunderbird are switchable, I use a lot of stuff from games to whatever which are windows only.
Everyone here uses windows.
Windows is everywhere.
It would be nice to use linux but I could never use it as my main driver because of all the windows programs I own.
Plus, well there is a lot of extra stuff to handle with linux.
There isn't  a way to make things just run necessarilly with buggerising about with apt get, pacman, or whatever.
There are software centres but windows is mostly gui.
Winaero tweaker and ribbon disabler have all the hacks I need for most stuff and even on say android data is shared about.
To be honest I don't mind with all the services I get from google as long as I get what I get for well not cash at any rate I will be happy.
I think I'd start complaining if I didn't get my money's worth.
Lets see, google sells my data and I get droid, aps, email, search, a load of news and other things, a brouser, chromium which also goes to edge.
Ssl, website analisis which for me means I know what my users are reading which can influence my content, etc.
Adds, well I draw the line at that, but for my data, I get a shitload without paying for it, I also get some translation.
And I can get email from anywhere over pop, imap, and the web.
Oh and cloud storage which I do actually pay a little for I admit to that.
I also get blogger which I don't use  because of wordpress but you get the idea.

I do agree with windows though.
Microsoft used to give music, movies, and a load of other things.
Most of that bar movies is gone and there isn't much to write home about about their universal apps system or anything.
And they want you to use their apps and yeah updates can screw things and their support can screw things to.
Still unsure if I'd run everything in linux, as such though.
On the subject of nvda, I do wander what would be needed to put that into linux port.
Nvaccess are not interested in doing that but if someone could code a port for linux then we wouldn't need a screen reader for that at least.
Nvda can already do console windows etc.

2021-09-01 12:16:38

OK, let's take these in order
First, linux can't do this and that, windows has this and that application that linux doesn't have directly.
Well, this is most unfortunately true, however don't ever forget that alternatives exist, don't think that if you don't have an exact app replica of what you have on windows, there's not any alternative app that does about the same in functionality, you just have to be resourcefull and to know when and how to google, that's an important skil in the world of linux, or even mac OS.
This happened to me when I switched from iOS to android, many of the apps I expected on iOS simply weren't present on droid and I bet it's the same the other way around. However, soon enough I found alternatives that work. Maybe it's not one single app anymore and I have to work with multiple apps to achieve the same goal, but android is worth all that.
plus, if you want such a perfect replica of your app on windows, don't ever forget there's something called wine, it makes enough of a windows environment for most of the normal user apps to work. Sure there's gonna be some exceptions like nvda or such apps that integrate deeply with the system, however your average app should work well enough and with mostly no problems.
The only drawback to wine is that gui apps that are emulated under wine aren't accessible on linux, since the controlls are drawn, not translated to the linux equivalents. However, windows has something called uia(user interface automation) that, perhaps through a bridge with a windows agent sitting on the app's interface, can be made to communicate with atspi on the linux side, maybe the knowledge can be then shared and the windows side of things through wine could become as accessible as if it were ran in windows, however I don't think I can ever make that, probably some much time in the future.
About games, specifically audiogames, most of them run incredibly well under linux, just unpack them wherever you want them and try wine filename.exe. Again, make sure you have the speech sdk installed, it's done via a winetricks tool(winetricks -q speechsdk). I was able to play almost any audiogame released that I know of, including manamon and such, as well as super liam, adventure at c:, etc. If you want something more simple and automated, someone on this forum made a tool for such things, think of it like the package manager for audiogames rofl.
About in windows everything is gui and in linux it isn't, most of us use the command line because it's more convenient, however GUI based tools exist for mostly everything, even though some of them are kinda inaccessible. For example, ubuntu has something called ubuntu software center, which is a grafical tool around apt, snap and probably some other weird trinkets. It can be compared to the microsoft store or apple app store.
Again, I can't stress this enough, I'm not forcing anyone to move to linux, nor am I forcing them to remain on windows. However, I want linux to be a choice for blind people, I want accessibility to not be a factor in saying I can't use this operating system, let's switch to the corporates or something. I want people to be able to choose freedom without having to pay tradeoffs like diminished accessibility, I don't want disability to be a wall in being able to choose linux if the person wants to do so. I hope my efforts will pay off one day, in the field becoming more even for both ms and the linux community, if nothing else, at least regarding accessibility.
@17: Unfortunately, either through a discord bug or me not being careful enough, I can't find him on the audiogame dev server. With that said, I'll make the tag more unreadable to bots, with the known method
first, we have the name part of the tag, which is bgt lover
Then, the numbers required, which are 3 0 3 6.
I hope you can pees those together and form the tag, that's the maximum scrambling I can do without rendering it unreadable even by normal humans.

2021-09-01 14:43:40 (edited by Dan Gero 2023-07-19 06:39:14)

I sent the friend request. My real name is redacted, so that's what'll show up on Discord.

Discord: dangero#0750
Steam: dangero2000
TWITCH
YOUTUBE and YOUTUBE DISCORD SERVER

2021-09-01 14:49:56

@22, clearly you did 0 research, because vlc and firefox are available on linux.