Files
Lee Hanken 7c8efd2228 Initial commit: HPR Knowledge Base MCP Server
- MCP server with stdio transport for local use
- Search episodes, transcripts, hosts, and series
- 4,511 episodes with metadata and transcripts
- Data loader with in-memory JSON storage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 10:54:13 +00:00

555 lines
48 KiB
Plaintext

Episode: 959
Title: HPR0959: The Orca Screen Reader
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0959/hpr0959.mp3
Transcribed: 2025-10-08 05:39:45
---
The program you're about to hear is a talk on Orca, given at the Northeast
canoe Linux Fest 2012. It normally would go into our Thursday queue as a
syndicated show and wait for its turn in there. But it's come to our attention
that Orca is very desperate for programmers right now and for help of
basically every kind. So we decided that that in itself was reason enough to
give it a time critical status and we bumped it ahead of the rest of our
Thursday shows. Please give this a listen and see if there's any way you can
help them out.
John Marie Diggs.
I'm not used to standing in front of a microphone. I'm really ADHD but I'm going to
try it. So the presentation title is the Orca screen reader, but that's a
little misleading because I'm here with an agenda.
Excellent. So we're going to talk very briefly about Orca, Orca 101. Then I want
to talk about how Orca does what it does because I want to turn everyone into
testers, hackers, assistive technology, developers, whatever. We have got the
worst bus factor problem in free desktop accessibility. It's pretty much if I
could hit by a bus and two other people could hit by a bus like all free desktop
accessibility is out the door. So I'm here to recruit. And that's why I'm going
to talk about getting involved. Okay, so Orca 101. Okay, so Orca is a screen
reader and just to make sure we're all starting in the same place. I mean, you
know, very briefly, Ruben said, you know, okay, here's Orca. We heard some stuff
talking. It's like, well, you know, does screen reader just mean thing that talks?
No, and that's like a big problem. So when we're talking about screen reader,
we're talking about a target population. These are zero blind or visually
impaired. Could I make Orca speak my incoming messages in pigeon? Yeah, that's
not what it's for. Can I make Orca work as a tool for people with learning
disabilities? Yeah, that's not what it's for. And the problem, in fact, in the past,
one of the biggest problems in Orca was we were because of this bus factor,
trying to be too many things for too many people. We used to drive, um,
GNOME mag. So people with magnification could track the focus in the car,
right? Which is just nonsense. And we're not doing that anymore.
Doesn't mean it doesn't need doing. It just means that's not what a screen reader
does. We need people to develop tools for users with learning disabilities.
They don't need the overhead of a screen reader. So we're focusing on users
who are blind or visually impaired. And, you know, you, you heard the, uh,
computerized voice talking and it's called a screen reader. We're not just
talking about synthesized speech. We're also talking about refreshable braille
and refreshable is literally what you think it means. If you've ever seen a braille
book, that's embossed braille. That's not refreshable braille.
Refreshable braille is hardware and pins go up and down. And so we can display
in real time, you know, what is on the screen? And some users are braille
lonely because they just like it that way. Some users are braille only because
they're deaf blind. Um, some users don't read braille and they're just using
the speech. Um, some users really want braille, but braille devices cost a huge
amount of money. And so they might not be able to afford it. So speech and or
refreshable braille. And the main thing we're doing, not the only thing we're
doing, is tracking the focus, tracking the carrot. You can, you know, press
alt F, get an application file menu, start arrowing down. And so a screen
reader, including Orca, needs to present where the focus is, where the
selection is. If you're typing or moving around in a document, we need to
present that new location, okay, in speech and or refreshable braille. So a lot
of what we're doing is interacting or excuse me, is presenting in speech and
or braille normal interaction with an application. Okay. And if the users not
in that particular widget or that particular document, it's probably not
relevant. You know, a lot of stuff is happening on your computer. Um, and I
should have done this, but we've got a full screen. You know, your clock, you can
have your, uh, operating system, not operating system. You just have
environment clock, just flight seconds. And by the way, we get an accessible
event every time you do that. Um, that is not of interest to the user. The user
normally cares about what he or she is in. But not always.
You know, if I, in fact, I do it all the time, I, I kick my
likes a bunch and get I'm very ADHD. And I'm always disconnecting my power
cord. I'm in a document, but that little thing that says,
hi, your battery's about to go dead. That's really relevant to me. It doesn't
have focus. And they get a get focus. But it's on the screen.
Um, incoming chat messages. If I'm having a conversation with you in
pigeon or whatever client I choose to use, I'm down in that little
editable text box below. But the stuff that really matters is not where I have
focus. So we make exceptions. There are things that go above and beyond
tabbing and arrowing and stuff like that. And we'll present that too.
Next slide. In addition, um, I mean, I don't know if you ever
thought about what it's what it's like to use a computer if you can't see what's
on the screen. But it's a lot slower. We take it so much
information visually. And a lot of it, we just filter right out.
It's not relevant. My scarves it. We can visually scan an entire screen really
quick. And you can see what those by bullets are. If you have to actually move
to the same, then it becomes just as much more inefficient.
Another problem that happens, getting back to say, arrowing through a menu.
If you know that you want the fifth thing down, you can arrow really fast.
But imagine if you had to hear, even though you're already on that fifth
thing, the first one and the second one and the third one. So we also have to
interrupt speech to make it more efficient. Because if the user's not on that
thing anymore, that's no longer relevant. Well, that has side effects.
Because if I am typing a message and you type a message and then you go,
oh, by the way, I have returned again. I mean, let's think of how we all use
instant messaging at IRC. No one types sentences anymore.
The type like three words he had entered and you type a few more words he had
enter. That incoming message can interrupt a previous message.
Well, crap, you can't see the previous message. Do I have to, you know, do
shift tab and move up there and go find it? Well, so screen readers will give you
various utilities for, again, people who are blind or
visually impaired to interact more efficiently with what's on the screen.
So Orca and other screen readers or Windows and I think voiceover doesn't, I'm
not sure, will let you review previous notifications. Because if, you know,
your instant message came in at the same time to, oh, crap, that your
battery's about to go dead. I need to go back to that previous
notification. There might be a key command for that.
Navigation by element type. Picture a Wikipedia page.
How do you read it? You look for the bold headings.
You scroll really fast. You move down three headings and then you start reading
irrelevant content. You can't do that just by
arrowing and tabbing and sighted users for the most part don't really need to
jump for heading, you know, heading by heading. You use your vision to do that.
So screen readers, you know, might give you a command in the screen reader where
you can hit H and move to the next heading and H and move to the next
heading and so on. Fun and formatting information.
How do you know that your text is, you know,
10 point monotype, of course, CIVA or whatever. I know it's bold and underlined.
Well, if it's in front of you, you'll look at it.
Okay, if you might go, well, it's bold and it's underlined.
Is it 10 point or is it 12 point? Well, that might be the toolbar.
It might be in a dialogue, but you can get that information really quickly.
Yeah, I could give focus to the toolbar tab around. Okay,
it's just going to take forever. So screen readers will typically give you a command
where you could press, you know, some magical hot can't say F and it will tell you
what point size it is if it's underlined and if it's bold and blah, blah, blah, blah, blah.
Okay, so these are the kind of commands I'm talking about.
Search the screen for an object. If you don't know, if you have a bunch of stuff,
you know, a bunch of widgets on the screen and someone, especially on the phone
or in an instant message is, well, you got to click on a thing called
through. And you know, how do I have to tell twice? Do I have to tell
where it's going? So screen readers can give you a way to search for
objects on the screen and jump to it right away.
Okay, so getting back to Orca. Orca is a screen reader. So again,
yeah, we kind of in the past got roped into the magnification business briefly.
Or actually for a long time, we are kind of got roped into the
learning disability business a little bit. We're working our way out of that.
We present information and speech and braille. I forgot the first point.
We're written in Python, which means again, really low barrier to joining the crew.
Python is so easy. By the way, as in the side, my background is lightness and visual impairment.
I worked at the Carroll Center for 15 years. If I can register screen reader,
y'all can write a screen reader. Okay, I thought it's easy.
Where? Oh, yeah. Okay. So just for the people who like really care about the technical stuff,
and we're going to actually get into that shortly. You know, the user's arrowing around in a menu.
Well, how do we know what the user's on? How do we know what text is selected? How do we know
what the font is? So it's greeners going to present all this nifty stuff. How?
Well, we talked to something called ATSPI, and we're now at the ATSPI too, which is basically the
D bus-based version instead of the core-based version. But it's the assistive technology surface
provider interface. That's what assistive technologies like Gorka and other assistive technologies,
if they were to exist, would interact with the applications and toolcats. The robotic voice you
heard during room of the presentation, that was speech dispatcher presumably with e-speech.
Speech dispatcher, orca talks to speech dispatcher, and just says, say this, and speech dispatcher has
all the knowledge of the different speech synthesizers and how to make them do whatever it is they do.
Unfortunately, and we'll come back to this, anyone who's like really into hardware and software
and speech and all that stuff, man, we got to do something about those robotic voices.
That's where the free software, one of the places free assistive technology really sucks
is the voice says, welcome to AARC, you know, that's gotta go. We don't have that problem when
one does. Braille translation, that's a whole other concept, if you're not familiar with Braille.
So, there are different languages have different combinations of words and letters and
syllables and all that stuff, and different words that appear like really, really often.
And the thing is Braille takes up a huge, huge amount of space. I remember going out to teaching
in various schools and sometimes you find the Braille dictionary and what, I mean, I have an OED,
all 20 volumes, but most people have like a single volume dictionary. And Braille takes up a whole
okay, Braille is huge. So, you want to be able to contract it to get, and remember,
refreshable Braille displays are really expensive. We got to get stuff in small, small spaces.
So Braille, not just, you know, computer Braille or anything like that, but just Braille has
contractions. So like in English, there's a single symbol, symbol for the IMG. There's a single
symbol for EED. And because these were all invented way back, I don't remember when, but basically
it was to transcribe the Bible. We have a K all by itself means knowledge. Okay, GD is good. So,
there's all these contractions, but obviously K for knowledge doesn't make sense in Spanish Braille.
And IMG is not a normal combination, although Spanish Braille don't think it's contracted at all,
but it's not a normal combination, that you see in other languages. Okay, so not only do we have
to contract stuff, we need to display an accented lighters. We need to display all this stuff
to the user in whatever language. We've got a really active Hungarian user. I know nothing
about Hungarian Braille, but think goodness. Live Lewis does. So, if you have Live Lewis, it takes
care of all the languagey stuff. It takes care of the contractions. The user just says, this is the
table I need. And again, Orchid doesn't have to worry about it. We just tell Live Lewis to good.
And then it has to actually talk to the hardware. That's something, a high level,
why I always say Braille API, but BRL API talks to what I call Braille TTY, which is BRL TTY.
And so all that stuff, Orchid doesn't have to worry about that. Orchid is able to deal with Live at a
very high level, which is awesome. Next slide. Okay, so I started to notice a theme here. People
keep going, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah. And then we're
going to be yet another presentation like that. So very briefly, Orchid was started from scratch
in 2004 by Sun Microsystems. I joined the community, it's either 2005 and 2006, and actually
people this room would probably know better than I would. It's whenever the Commonwealth threatened
to switch the official document format to ODF, and then blind people complained. I mean, we didn't,
there was a lot of misunderstanding, but there was end result of that, as people started to show
it up at Perkins, Carroll Center for the Blind, places like that, to inform us about open document
format versus open, you know, what does all this stuff mean? And one of them was Sun Microsystems,
and they did this presentation on Orchid, I've seen your thing. Okay, I can make the screen reader.
You know, I'm teaching people, you know, every day, how do you use JAWS? I can't get my stupid bugs fixed.
It costs $1,200, and I'm like, wait a minute. I can like, you know, I take some computer science
after my first master's degree, you know, I kind of had a program, you know, I can make a screen
reader. Okay, I was totally sold, and I was in the community, whatever gear that was.
In 2007, we became the official screen reader of Gnome actually beating out the competition LSR
from IBM, and it was like, yay, you know, kind of friendly competition, and then IBM had a
big old riff, or no, excuse me, I think it was a strategy change. I forget the language they use.
It was really pretty language that means we're laying off our entire accessibility department,
except for some manager. So Gnome accessibility took a hit there.
That late 2007, that's what we started talking about Gnome 3, and I think that Rupin was the one
who mentioned, you know, when you change everything. Okay, that's a good way to, to, I mean,
I guarantee you, if you tell me you're going to change everything, you're going to break something
accessibility-wise. So it's like, oh gosh, Gnome 3. Oh, by the way, we're going to deprecate
Bonobo. Okay, so that means Gnome Mag, which Orca has to drive, is going away. We got to figure
something out about Magnification Gnome speech. Well, we're going to have to figure out how to
talk speech dispatcher. ATSPI is carpet base. That's going to go away. Oh, it is going to be really
non-performing over deep. Awesome. And right when all this is going on, some microsystems hadn't been
bought out yet, but they realized that financially they were in trouble, and there was riff after riff
after riff. And so the team just got lower and lower and lower and some microsystems, after I
be, you know, that was Gnome accessibility. So, you know, it was like, and then there were three,
and then there were two. And then 2009 was the official acquisition. It became legal. I think it was
late January 2010 and five days later, the rest of the accessibility paid people were gone,
and all of a sudden I became project lead. Keep in mind, I'm a teacher with a full-time job,
and then project lead. Gnome 3 almost went out the door and due to things, a few accessibility
things and a lot of other things didn't get out the door. And at least we didn't have to deal with
all those magnification speech problems, et cetera. 2011, it did come out. And then this is going
out live. So, between just us, it was an accessibility nightmare. Gnome 3, oh, was not accessible.
We tried. Some things just didn't get in on time, even though there were patches. This is a
problem with free software, and entire desktop environments made up of community numbers. A lot of
people with jobs paid to do it, but everyone's got their own, you know, it's just to scratch,
quote, unquote, their own company agendas, and things just didn't happen. Gnome 3 was an
accessibility nightmare. That's the bad news. 3, 2 came out. It was a lot better. She says kind of,
it was better. It really was, but it still wasn't good enough. And then in a funny twist of fate,
we had a good riff. At first, well, for about three hours, I was panicked, but my grant found
a position at the Carroll Center for the Blind ended. I was there for like 15 years. I went to my
normal telephone-based meeting, and it's like, are you sitting down? You never want to hear that
from your boss. But I got blessed Twitter. I tweet, and you know, I just got laid off. Oh my god.
And three hours that I had a job offer for. The gap, yeah, who was making a much bigger commitment
to accessibility. In fact, I would argue a bigger commitment than anyone else's, and I'm not saying
just as an employee who's drunk in the Kool-Aid, we really are investing quite a lot of
accessibility. And so now, my day job includes working on Orca. Next slide, please. And we have
another developer. In fact, Gnome, the new Gnome accessibility project late is Addigalia. He's
also the Gnome Shell accessibility developer. And so he and I just focused really, really hard to
pass a couple of buzz on Gnome Shell and Orca working together. And he did most of the work,
actually. I was just going, Addis isn't speaking right, and he'd come up with the fix. And
the fine folks at Red Hat, who are the ones really doing the Gnome Shell work, got these patches
reviewed and gave him feedback, and the patches are getting committed. And you know, Gnome 3.4,
you know, we can have the argument, oh, Gnome 3 is awesome. Oh, Gnome 3 is sex. I like Gnome 2.
Okay, forget all about. In terms of accessibility for users who are blind, Gnome 3.4 is going to be
awesome. Yay. So 2012 is looking up. We're going to start planning Gnome 3.6 soon, and whether or
not Trisco and other districts are going to go with that, I don't know. But it's good planning
time. She says looking at Ruben. So we've got to start talking. Other really neat things are happening.
Qt, it's one guy mind you again, bus factor of one. If this guy in Germany gets hit by a bus,
Qt accessibility is gone. But right now, he's been very, very careful with his travels. And Nokia is
funding a developer to make Qt accessible. Doesn't everyone have KDE accessibility like tomorrow?
In fact, Plasma is apparently, I don't want to say a nightmare. I like Plasma personally,
but accessibility-wise apparently is quite complex. But basic applications now are becoming
accessible with Orca. And I personally am not a Skype user because it's one of those closed
blobs. But I think users who are blind, if they want to, I think that's another freedom of choice.
And if you really want to use Skype, you should be allowed to do it. You should be able to do it.
And we're just now getting to the point where Skype plus Orca actually works.
So they shouldn't use Skype, but if they want to use Skype, it's now accessible more or less.
Thanks to the work done by Nokia. The XFCE developers, and they are, that's a whole desktop
environment with a small bus factor. There's like about five guys, and if they're all in the same
bus, we're in trouble. But they all by themselves. We don't have to go beat on their door and say,
you know, you need to make this accessible. They came to us and said, how do we do this? So they've
had some, some setbacks in terms of getting 4.10 out. But the next XFCE release is going to
hopefully be pretty darn accessible. They're working with us. So that's more or less three
environments. Orca users are going to be able to use, which is exciting. LXDE, don't know,
this GTK-based GTK, which we're going to get into momentarily, is accessible. So we just got to
figure out, you know, what kind of tweaks we need to do to get that working. And others, I don't know.
But I'm feeling really positive for 2012. Okay, so that is everything I want to say about
Orca. I mean, I want to talk about how Orca does what it does. Okay, and just very, very brief
history. And this is again, I was in the blindness biz for, you know, 15 years. And if you count what
I'm doing now more than 15 years. In the old days, and maybe he's still today, I don't know.
You'd launch the proprietary Windows screen reader and your cursor would start going really,
really fast. And it's like, why, you know, I never understood why that happened. I've someone
finally told me, that's how it's figuring out where the care it is. It's looking at the screen.
I remember you install, you know, one or two proprietary screen readers, you've installed
all of a sudden, you have no display access whatsoever. Because what was happening is they were
inserting some sort of hack to intercept whatever was being sent out to the video card. And that's
how screen reading used to work. Fortunately, we've never had to do that. And fortunately, even in
Windows, apparently, they're not doing that. So the bad news is that you could take out your system.
The good news is that a lot of times it worked. But from the point of view of screen reader,
which is again, why am you're recruiting? You didn't depend on anybody else. You did your
screen scraping, but it was everything was under your control. Okay, next slide.
We use, and even in Windows, but we at Oracle Land and in three desktop environments,
don't use scraping or tricks. We talked to the toolcats through the applications, through ATSP,
I'm going to give you a whole diagram in a minute. So none of that weird cursor flinky. Oh,
yeah, it's all orchid. You can't use your system anymore kind of stuff. That doesn't happen.
Okay. And what's better is we're not having to guess where the cursor is. We're asking where it is.
And we're being dulled. Okay. So that's like really, really awesome. It's really, really reliable.
We have, in fact, until just 3.4, the no-mixessability was just really sluggish. And it always was
sluggish. And part of that was just something happens. We're told about it. Okay, well now we've
got to find out what happened. Is that a focus menu or not a focus menu? Is that an incoming
chat mess? So we're having these things going back and forth over the wire. You know, we're getting
notified of stuff and we're asking questions. And it's just intensive work. And so sometimes
you get a performance out. Okay. But the good news slash bad news, double-edged shores here,
is we're depending on applications and toolkits doing the right thing. And if they don't expose
anything at all, we can't present anything at all. Now what's almost depending on your perspective
worse is if they expose focus information, I mean, we don't know. We just kind of pass it on to
the user. And so sometimes there are problems. Next slide. Okay. So here's just an overall diagram
of how all this stuff looks from my perspective. At the very, very top, I've got labor office,
fire box, financial epiphany, G-Edit, came out. So obviously applications beneath those,
what their toolkits are. And beneath those, that's where I'm really starting to care, is the
ATK implementation with the exception of QT, which I'll come back to. In the case of clutter and
GTK, they actually named it. So we had Gale and we have Callie. But it's still an ATK implementation.
ATK is the accessibility toolkit. Okay. And that's what toolkits do. To ultimately, it starts as
you can see, there's trickle and down to make their widgets and other, you know, font information.
All that neat stuff we want available and accessible to assistive technology. So we can
enter and pass it on to the user. I have been told by 20 different times why QT does not
implement ATK. It's talking directly to this thing called the bridge. And I keep forgetting,
in one of these days, I should just write it down, that I've got premature sonility or something
like that. Or maybe it's age-appropriate sonility. I can't remember why, but there's a really good
reason why the guide note, you didn't do it. He talks directly, he created a special bridge.
Everyone who implement ATK, it just lands in this thing called the ATK bridge. But ultimately,
the thing I care about is that ATSPI-2 rectangle. If it gets to ATSPI-2, I can get at it.
So I'm screen reader on the far left. And I've got a double-pointed arrow there because most of the
things when you care about when you're a screen reader is what's going on, where is the user?
But consider the case of when I said navigating by heading. In that case, I have to actually reposition
the carat to another location. So in that case, I am actually, it's not that often,
you know, Orca does actually manipulate the application. And we do it through ATSPI,
which works its way back up through the bridge to the toolkit, blah, blah, blah, blah.
Screen magnifier. We actually do have a good old Michelle magnifier that does not track focus
in the carat, but it's it's under to do list. But how would it find out where the carat is?
Well, let me back up. Why does it care where the carat is? So if you imagine magnifying your screen,
say just 2x magnification. Everything is twice as tall and twice as wide.
Okay? So area wise, you know, we need four times the space. And odds are you don't have four times
the monitor. So you're only seeing one fourth of the screen at a time. And what that means is if
you're typing really fast, you're pressing tab, you can actually move and frequently do move
right off the screen. So screen magnifier cares about where you are and finds it can find
how hopefully will eventually find out through ATSPI 2 where you are and could do some other
magic again through ATSPI 2 to say, is that on the screen or not? And if it's not on the screen,
move the magnifier so that you actually can see where you are. Okay? Speech for users with learning
disabilities for the most part is just going to be talking to them. There's probably not going to be
much manipulation. So that's an arrow just going down. Speech recognition, we don't have much
of a solution in GNOME. There's some really neat stuff called Simon that, right, it's very
QT-dependent. So GNOME is never officially going to adopt it, but GNOME users can install it.
Really cool stuff still still being developed. And in that case, assuming the user is just not able
to provide input to the computer, you can see what's on the screen. So you can actually like
click on widgets and things like that through ATSPI. Okay? So if I see an okay pattern, I could say,
okay. And then Simon can go off and do some magic and tell ATSPI to go find a click action.
To click on the thing. Okay? And testing tools. I don't know if you guys are familiar with LDTP.
I'm only aware of it and no see the developer in IRC. A lot of automated testing tools,
it's like nothing to do with accessibility per se does that automated testing and manipulation
of widgets and binding out where focus is through ATSPI. Another tool that we're going to talk
about very briefly, it is something I'm hoping I can convince everyone to start check it out through
their own applications and environments called Exercise or it is another testing tool. That's how I
use it. And it also finds out things through ATSPI too. And so Exercise or builds itself as the
interactive accessibility explorer. It's another Python app. Yay, people who are not, they want to be
hackers, but don't really have the background, you can hack on Exercise or okay? So very briefly,
because I'm going to actually do show and tell to make it all work out. You can view accessible
objects. You can examine what interfaces, so I guess I should define interfaces. Imagine a
progress bar. And you want to know that it's at 30%. So we have an accessible value interface.
If you want to know what the font information is, where the care it is, we have an accessible
text interface. We have different, you know, there's accessible table interface. We get
screen coordinates through the accessible component interface. So we can see for any given widget
and any given application, which of these interfaces are implemented at all. What information can
we find out about them? Okay, monitor accessibility events. So again, getting back to that menu case,
I down arrow. Well, sometimes it's got to tell me, you know, focus has changed. Selection has changed.
And for people who are normally programming, I mean, they're called signals. We call them events,
events or signals. And lastly, what's pretty cool is if you're kind of getting into, you know,
how does this accessibility kind of thing work? You're about to do a new feature, an org or whatever.
Sometimes it's nice to take Orca out of the picture and just kind of do those same sorts of
programming you do, but without Orca, like, being in the way. And you can do that to an
exercise. So I got pictures here. So on the, on the right, I got, no, on the left, I've got
G-Edit in the background. Hello world. And so I've got an exercise here, scrolled to G-Edit. So I see
the G-Edit accessible application. And these are all accessible objects, by the way. They correspond
to a widget. Okay, these aren't the widgets. These are accessible representation that we see of the
widget. And I can see the menu bar. I can see the file menu and edit menu and the view menu. And
I can see their roles. I can see a crazy lot of children, by the way. When I did these screenshots,
I do a bleeding edge dog fooding. This is for Dora 18. And I really don't think there's that
very accessible children. And you're going to see something even sillier momentarily. So
sometimes we see weird things like that. Normally in stable environments, we don't.
In fact, here's the work. Who could spot the weird thing? But what does this is me looking at,
so say the carrot moves. These are down arrow in line by line by line kind of thing. And I need to
present a new line to the user. Hello world. Well, I got to find out what the text is. Or if the
user wants to, you know, do the Orca modifier plus app. And I need to give them the fun information.
Well, where do I get that? And I get that through the accessible text interface. So to
exercise or without having to do anything other than just look, I can find out, you know, it is
accessible text interface implemented. Well, it seems to be. Do I have all these attributes
exposed? Yeah, do. The foreground color looks to be about the square of what I'd expect it to be.
But normally, colors are, you know, decimal, you know, like 255, 255, 255 RGB values. Why they're
in a 54 and 55,000? I'm not sure here that I'll file it by later. Next slide.
Events. So here is a case where the previous two G edit windows, I had hello. So what I had done
in between screenshots here is I highlighted or selected the LLO with it selected and typed a Y
to replace the LLO with Y to get a Hey world. And I got two events. I got an object text change
delete. The first detail too was the offset that started. The second one tells you how many
characters, which is in a way redundant because the third actually gives you the characters and
you could probably just count them. But anyway, that's that's the information I got. I know that
LLO is gone. And I immediately got a text change insert event that tells me that the character Y,
which is only one character, was inserted at offset two. Okay, these are these are these are the
kind of thing. This is how Orca does what it does. Okay, next one. And here's just an example of the,
you know, kind of thinking, well, let's say I wanted to present or move the character, do whatever,
you know, say I never implemented support for GTK. And I'm trying to figure out how this works.
This is me giving Python. So here's another alphabet soup. Pyat speed. So we got ATSPI,
slash ATSPI to the accessible technology service provider interface. Well, there's Python bindings,
which is, well, I guess technically they're bindings. They do it through introspection. So in a way,
it's not. But anyway, that is how Python assistive technologies and LDP and
Anxercizer interact with this information. Well, you get the icon console and Anxercizer,
you can start poking at the stuff yourself. Next slide. Okay, or you can roll your own listener.
And well, I've got the dead is simplest case. I mean, life is way more complex than this,
but again, I'm trying to recruit and convince people that you two can do this. And you can.
So all you have to do if you want to roll your own listener is you pick the event type. Okay,
let me example, we're going to use is again, pick picture, G edit, navigating through the menu.
And your screen reader, your job is to present those menu items. So there's a lot, a lot of
different types of events. They're listed in Anxercizer. They're listed in the accessibility
documentation. You pick the right ones. Okay, you figure out when you get that notification of
that event, what you're going to do with it. You tell the ATSPI registry that you care about it.
And here's, you know, here's the handler for it. And you start the registry up. So next slide.
So I'm hopefully able to do the lights and everything people can see this. So nine lines.
And that's counting the import and the pretty spaces I put to make it readable.
So I import pi ATSPI. I create a listener. It's jobs just going to be to run out the thing.
And I registered for a pretty generic event object state changed because it might be focused,
might be selected. I don't know. Started up the registry. Next slide. And I didn't put the output
here. And I knew this was just going to happen. I was always going to try to take a screenshot,
but to get it to fit on the slide, it would be too small to small. Everything starts spearing out
because if you're in an accessible environment, and you say, hey, I care about state changes,
you're getting anything that became focused, anything that became selected, anything that became
checked, anything that became visible. I mean, there's like a list of 20 things.
And you're getting it with the values true. And you get any values false. So I mean, just
what you know, you move from one mini-witem to another. That is a minimum of four events.
Okay. So you get like huge spewage and you go, oh, that was a mistake. I didn't want to do that.
So how do we narrow it down? Well, the good news is we can really listen to very specific,
or register for, very specific event types. The bad news is that's about all we can specify.
At least right now, I've got a RFE file, a system of technology really need to be able to
to fine tune what we ask for. We can't say, I only care about it if it's in G-Edit to the registry.
We can't say, you know, I only care about it if it's true, or I only care about it if it's a menu
item. I really wish we could. We can't. So what you have to do as an assistive technology is have
really efficient handlers for this. Okay. Find out right away. If it's not of interest, return.
It's right away. Because when you register for an event, you get it for every accessible object
in that environment, whether the application's focused or not. Next slide. Okay. So here's
take two of this, which is looks like 15 lines. Still was my nice, pretty blank lines.
So I did two things. I'm going to present them in reverse order. So at the bottom,
I mean, what could, out of all the different kinds of states that are changing?
Is your airline control menu? Well, keep our focus is moving. And, you know, I see the menu
becoming selected. So I guess state change focus, state change selected.
And my listener, I've found out what the application name is. And if it's not coming from G
Ed and it's not coming from menu, I don't care. I just want the rest. And the results are much,
much smaller. In fact, it fit on a slide. Okay. So that's what I got. So you could, I mean,
it takes a while if you've never looked at this format and output to take it in. When you look at it,
I mean, you can picture exactly what I did. Okay. After state change selected in the case of
state change, the first detail, ones and zeros here, tell you true or false. So the first line says,
something became selected. What was it? A menu item called new came from the application,
G out of the second event, something became unselected. The menu item. And I must have been
when I down arrowed because right after that, something became selected again, the open menu.
This is all I need, slight over simplification. This is all I need as an assistive technology
that wants to present menu changes to a user who's blind. You know, I still got to do some other
staff and I got to make sure it goes out in speech. I got to make sure it's relevant. It's that simple
folks. Okay. Next slide. Okay. And so here's just essentially what I said was pretty formatting to
to to gray out the stuff I don't care about. By the way, well, why don't I care about things
becoming unselected? These are not there anymore. These are the care about where he left.
You care about where he is now. Okay. So I just ignore the ones that, you know, we're unselected.
Present the ones that are what's up relevance to the user. We'll set the splite text and,
you know, they've, you didn't know what the splite text was. But again, when you look at the name
of those successful menu items, well, there it is. Okay. So my conclusions are as a screen reader,
I need to listen for object state change selected, where the first detail is one, meaning true.
Then I speak in brown name. And then my other thing is here I'd note to self because if I read
the handy, the handy, uh, ATK documentation, the definition of key for focus changing is that's,
you know, I forget the exact language, but basically keep when you down arrow in a menu,
that meets the official ATK definition of keyboard focus changing. It's like, why don't we get
in that event? What did GTK change? And I'm pretty sure I already found this in file a bug a
while ago, and I need to ping some developers about it. But this is, you know, a crash course
and accessibility 101. Okay. So we need you. So we got a bus factor of one and like so many
different groups. We have some ATs that don't exist. So people are like, oh, okay, you should also
be the, uh, assistive technology for people with learning disabilities, even though they can see
and don't need braille. Uh, excuse the snarkiness. Um, and so where there's, you know, this is a normal
join us kind of speech, all these different areas. You don't have to be able to program.
But let me give you a very specific case of why we need destined help. Um, and in many different
areas, but, um, Ubuntu, hopefully, um, whatever it is precise is going to come out accessible.
They broke like in the past month or so. So much stuff. So much stuff. Um, we have a lot of
Ubuntu users, um, and they're, they're angry too. The ARCA users are, they're, fortunately,
they're not complaining on your Oracle list anymore. They're complaining on your Ubuntu accessibility.
I mean, really nice people, the sweetest people, I mean, they're, they're dropping F-bombs.
Ubuntu kind of really blew it. And, you know, I've, I've, they're not sure. Everyone's asking the
question, well, how did you blow it this bad? You know, where's the regression testing?
Why aren't the Unity developers? Because Unity used to be accessible. It's like, apparently,
again, and it says it's being recorded. It's all going to be fine. Um, but, but, you know,
we're going to be pretty close to code for you to know why this stuff is broken. Um, we need more
people testing. And the problem here, the barrier to entry for a lot of users who are blind is,
if you only have one computer, and in order to actually test and interact with that computer,
you know, you need Unity working. You need Oracle working. You need ATSPI working. You need,
you need, you need, you need, you need, you need, you need. And if any one of those things breaks,
you can't use your system. It's not like you can turn on your vision and then diagnose it and
fix it, okay? That point you might have to reinstall your whole system. So users who are blind,
bless their hearts. They are testing throughout the process. But in terms of really, like,
grabbing Ubuntu and grabbing Fedora and grabbing, you know, insert this drum here, it's happening pretty
close to the release. We need people, you know, not necessarily, you can see, but people with, you know,
who understand how this stuff works, who maybe have a spare system or virtual machines,
who from all along the process, could test. And who know enough about, which is pretty much what I
showed you already, know enough about ATSPI, an advisor and writing, you know, listening for events,
that they can actually do some diagnosis and say, hey guys, this is why Oracle is not presenting
this field, not giving any events, or we don't think it's focused or whatever. We need a bunch
to help in this area. Anyone who is good at automated regression testing, we could use that too,
because if we had proper automated regression testing, both upstream and GNOME,
and for that matter, we had a recent regression in the Q accessibility and downstream and Ubuntu
and Fedora and blah, blah, blah, this stuff wouldn't happen. So it could be live functional testing.
It could be writing regression testing, but we definitely need help there.
We need bugs reported, you know, if we don't, you know, this field, if we don't know, it's broken,
you know, we can't fix it. Even at the toolkit level, there's like NX, you know,
it's slight exaggeration, but there was like one main guy doing DTK accessibility.
There is one main guy doing clutter accessibility. You know, we have got so many bus factors of one.
Okay. People fix and bugs, people implementing features. It would be amazing. Please join us.
By the way, if you write your own applications, please find out if they're accessible or not.
And if you're not, and you know, I'll give contact information briefly,
come find us. We'll help you make it accessible. We'll make, Trisco, like super, super accessible.
It'll be amazing. We want more people involved. Okay. But back to the free software community
experience, you know, typical spiel. Even if you can't code, we need documentation writers.
We need people translating and localizing community outreach. It sounds like, oh yeah,
we'll even you can join kind of thing. The biggest load off of two of our team members,
shoulders, one of them being mine is we got a marketing guy. He's actually got it for
the GNOME accessibility campaign running. He deals with getting quarterly reports and stuff
like that, you know, and release notes out. And all of a sudden, the other developer who does the
GNOME shell accessibility and me, we're actually able to focus on GNOME shell accessibility instead of
like marketing related, you know, bureaucratic things that really need doing. But, you know,
we just don't have time to do it all kind of thing. We need people in so many different areas.
Okay. And so why is speech synthesis my top area of choice? You heard me speak, right?
Enough said. Free speech synthesis. It's like it's awesome. It's there. It's in a lot of
different languages. And it sounds like the robot from Boston's base with less emotion. Okay.
The accessibility libraries, you know, again, these are things that are actively being developed
with like one person. Whatever your itch might be, you know, we need to come scratch it in accessibility.
The last one I want to point out, distros, I am on, here's my new kick. Everyone needs an
accessible installer. Ubuntu has an accessible installer. I don't think they broke that. They
they have, but like no one else might shouldn't say no one else. Do you have an accessible installer?
Trisco? Is there a? Okay, so you so you in here? Make sure it's not broken.
Yeah, but, you know, then try and it's pretty okay. It's not working right now because we have
some of our English talent. Okay. Okay. Okay. Yeah, a lot of them don't, you know, I mean,
I personally am a Fedora user. I like it. My other reason is it's so close to upstream that it makes
it really easy for me to do my GNOME-related work because, you know, I don't have to worry about
what's being passed. It's just all upstream goodness. And I would really love all these users
here dropping f-poms. It's like, you know, if you want to know for sure where ARCA works,
it works really great in Fedora. Where's the accessible installer? Kind of thing. So anyone
who wants who likes writing installers, we need all distros to have that. Next slide, please.
I don't expect everyone to like write these down, but there are a bunch of different active
accessibility communities with very few people in them, but whatever distro, whatever desktop
environment, whatever it's an environment you want to scratch an in, there's probably a group,
a very, very small group that would love to have you. And the last one, Google it. Okay. Or as I
forget who it was now, but earlier in the presentation, someone said, you know, you can start your
own community. That applies to accessibility too. Okay. If the thing you care about is I don't even know
you know, music editing software. Is it accessible? You know, if it's not, what is it going to take
to make it accessible? I think there's a lot of blind users who would love to use your music editing
software. But you know, we need to form a community around it, get people writing accessible software,
get people testing it, and so forth. So lastly, I've got the two long didn't read slide.
The neat thing, and it's not, you know, just makes it sound like good home accessibility is where it's
all at. I mean, historically, it was due to the whole sun, IBM, everyone invested in accessibility,
but it's just kind of like because of that history, I mean, the Mozilla guy, the Mozilla accessibility
developers, they're on pound a 11 Y. The cute developer, you know, KDE accessibility,
he's also in pound a 11 Y. The downs, the distros who really care about accessibility,
including Ubuntu. In fact, that's one of the, we have some active Ubuntu people who are there.
If you have any questions, if we don't know the answer, lots are that the person who doesn't know
the answer is actually hanging out in that room and to answer it for you. And if that's not the case,
we know who you need to talk to and are where the docs you need are. So it's, you know, it sounds
like I'm promoting an Elm here. It's just, this has happened to be where we've all converged.
So I talked really, really fast, but I knew I was going to run out of time. So other questions.
I've stunned you all into silence. I have that effect on people. I don't know why.
Okay, well, in that case, thanks.
You have been listening to Hacker Public Radio at Hacker Public Radio.
We are a community podcast network that releases shows every weekday Monday through Friday.
Today's show, like all our shows, was contributed by a HPR listener like yourself.
If you ever considered recording a podcast, then visit our website to find out how easy it really is.
Hacker Public Radio was founded by the digital dog pound and the
African-American computer cloud. HPR is funded by the binary revolution at binrev.com.
All binrev projects are proud to sponsor by lunar pages.
From shared hosting to custom private clouds, go to lunarpages.com for all your hosting needs.
Unless otherwise stated, today's show is released under a creative comments, attribution,
share a like, free.or license.
You're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to be able to do that, but you're not going to