Re: [orca-list] Misteries of low performance of Orca and distros



http://community.nvda-project.org/wiki/DesignOverview#ProgrammingLanguages

From reading this article, the areas where Python is too slow is something
called "in-Process" tasks.  The example given is rendering a web page into a
flat review.  These are the parts they wrote in c++ for the performance.  I
must admit, NVDA's browsing experience is excellent and has been for several
years.  For everything else, it appears they used Python.

Alex M


-----Original Message-----
From: Krishnakant Mane [mailto:krmane gmail com] 
Sent: Tuesday, July 30, 2013 9:47 AM
To: Alex Midence
Cc: 'Luke Yelavich'; orca-list gnome org
Subject: Re: [orca-list] Misteries of low performance of Orca and distros

NVDA is in Python, which is by the way, very fast.
JAWS has a script language as I hear, meaning that to must be semi compiled.
The problem is not that simple.
happy hacking.
Krishnakant.

On 07/30/2013 07:54 PM, Alex Midence wrote:
That was a fascinating post!  As to what lengths developers of windows 
screen readers go to to make their product more responsive, the only 
thing (and this is a guess, mind you) which comes to my mind is the 
choice of programming language.  The infrastructure of the program is 
written in a compiled language like C or C++ and an interpreted 
language is used for customization i.e. scripting.  Jaws, for 
instance, is written in c++ and uses its own, in-house interpreted 
language called jaws scripting language for customization.  Window 
Eyes uses c++ for the code and can use stuff like visual basic or, in some
cases, I seem to recall seeing Perl for scripting.
NVDA does same thing, c++ for infrastructure and Python for scripting.
Orca, on the other hand, appears to be written entirely in Python as 
are lots of other accessibility components from what I was able to 
gather.  I don't know how much difference this makes but, this is the 
best guess I can come up with for the difference.  Manpower is another 
factor but, NVDA doesn't seem to have the amount of people working on 
it that I'd imagine a commercially produced program like JFW and 
Window Eyes would have.  There's another screen reader out there which 
is called Access to Go or something like that and then there's Supernova
which has a screen reading component.
I know very little about these products so can't say how they do things.


Regards,
Alex M


-----Original Message-----
From: orca-list [mailto:orca-list-bounces gnome org] On Behalf Of Luke 
Yelavich
Sent: Monday, July 29, 2013 7:34 PM
To: orca-list gnome org
Subject: Re: [orca-list] Misteries of low performance of Orca and 
distros

On Mon, Jul 29, 2013 at 11:55:03PM EST, Luciano de Souza wrote:
Hi listers,
I am using Orca 3.2.0 and Ubuntu 10.10, but I really need to upgrade it.
However, I am facing severe issues about performance. I have a Entel
I5 processor with 4 gigabytes of RAM. It's not a bad machine, but, 
under Linux environment, the performance has never been good.
I don't think you are referring to performance, so much as you are 
referring to Orca responsiveness. Linux of any flavour will certainly 
perform quite well on your system, given you have plenty of RAM. I 
think it is well known that screen readers in Windows tend to be much 
more responsive, although I don't know what lengths screen reader 
developers go to, to achieve such responsiveness. I do however, have a 
pretty good idea as to why Orca is not as responsive as it possibly 
could be, and this is always something that the GNOME accessibility 
development team are aware of, and are trying to address.

I am not going to go indepth here as to how the whole accessibility 
framework works, I believe there is some good documentation about the 
details on the GNOME Accessibility wiki, 
http://live.gnome.org/Accessibility. The key point here however, is 
that there are essentially 3 components. The application, the 
assistive technology provider, otherwise known as at-spi, and then the 
assistive technology, aka Orca. You may have heard of Dbus. Dbus is a 
technology that was developed to help with inter-process communication 
(IPC). THe GNOME accessibility framework uses Dbus to communicate 
between the application, at-spi, and Orca.

When Orca is started, one of the things it does is register itself 
with at-spi, and one part of this registration is registering a 
listener with at-spi for keyboard events. This is so Orca can act on 
Orca specific commands, and it needs to be able to do so before the 
application does. So lets step through what happens when a user is 
say, navigating a dialog box, and the user presses tab to move to the next
control in the window.

1. THe user presses the tab key.
2. The toolkit that the application is based on, in most cases this is 
GTK, picks up on the key press, but before it passes it through to the 
application, it checks to see whether there are any key listeners 
registered with itself. In the Orca case there is.
3. The listener is then called, and sends the keystroke via Dbus to
at-spi.
4. At-spi checks for any registered key listeners from assistive 
technologies.
5. The Orca key listener is found, and called. Now its up to Orca to 
decide what to do with that tab key press.
6. Orca checks its own database of settings, and if tab is associated 
with an Orca command, a signal is sent back to at-spi, and then to the 
app/toolkit, that the keyboard command should be discarded. Otherwise 
a signal is sent back to the app/toolkit indicating the command should 
be passed through to the application.
8. At-spi then signals the application toolkit via Dbus to pass 
through the key press to the rest of the toolkit/app to be acted on.
9. The application/toolkit then signals a widget focus change, and the 
whole dance is repeated back and forth to signal Orca, and for Orca to 
find out about the widget in question, although its likely that at-spi 
has cached relevant data about the widget, so communication is not 
always needed with the application.

This process is followed for all keyboard input when Orca is running, 
even when you are typing text in an editor. There is also more back 
and forth between orca and at-spi when flat review is used, as Orca 
needs to be able to find widgets in a window when moving up and down 
by line, or moving accross via word/character.

The observant among you may be wondering why the toolkit is required 
to listen for key presses, and send them back to at-spi. This is due 
to a lack of functionality in the X window system. In ideal 
circumstances, at-spi should be able to register with X, and get 
keyboard events itself, and at one point there was an X extension to 
do so. However from what I've read, this extension was buggy and not 
maintained, so it fell out of use, thus GTK had to be extended to do 
the listening for at-spi, which in turn introduced further back and 
forth between the two processes to make things work properly for Orca. 
Fortunately, this is likely going to change with the advent of 
Wayland, and Canonical's Mir display server, at which point, GTK will 
not be required to do any key listening for at-spi. Hopefully this 
change will result in a slight responsiveness increase for Orca use, 
although its not known just how much better things will be until things
change.

As for your installation issues, I encourage you to raise them on the 
relevant distro lists, i.e the Vinux list or the Ubuntu accessibility 
list, and I am sure folks there will be more than happy to help you 
try and work out what is going wrong.

I hope this helps, and has educated a few folks as to how some of the 
infrastructure works.

GNOME accessibility devs, feel free to chime in and correct me if I 
don't have things quite correct.

Luke
_______________________________________________
orca-list mailing list
orca-list gnome org
https://mail.gnome.org/mailman/listinfo/orca-list
Visit http://live.gnome.org/Orca for more information on Orca.
The manual is at
http://library.gnome.org/users/gnome-access-guide/nightly/ats-2.html
The FAQ is at http://live.gnome.org/Orca/FrequentlyAskedQuestions
Log bugs and feature requests at http://bugzilla.gnome.org Find out 
how to help at http://live.gnome.org/Orca/HowCanIHelp

_______________________________________________
orca-list mailing list
orca-list gnome org
https://mail.gnome.org/mailman/listinfo/orca-list
Visit http://live.gnome.org/Orca for more information on Orca.
The manual is at 
http://library.gnome.org/users/gnome-access-guide/nightly/ats-2.html
The FAQ is at http://live.gnome.org/Orca/FrequentlyAskedQuestions
Log bugs and feature requests at http://bugzilla.gnome.org Find out 
how to help at http://live.gnome.org/Orca/HowCanIHelp




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]