Jörmungandr, Fenrirs Brother
Linux for blind general discussion
blinux-list at redhat.com
Fri Jan 4 19:56:55 UTC 2019
Sorry for the cross posting but i want to share some useful information
Storm and Me cooking since some months a Idea i want to introduce here.
We call the Project "Jörmungandr". We choose this name because
Jörmungandr is as a child of Loki Fenrirs brother. It is an huge Sea
Serpent in Mythology.
You may say: "WTF, chrys are you f..ing crazy? what do you telling here?"
Let me explain...
On Linux we work with different environments like TTY, GUI or an
Terminalemulator. for this we fight with even more different screen
readers. But all of them do a single job.
- Read TTY: like espeakup or fenrir
-Read Desktop: like orca or the old stalled gnopernicus
- spawn an subprocess to read an Terminal Emulator (PTY Emulation): like
yasr, emacspeak or fenrir
Fenrir does already a good job for terminal emulation and read TTY as a
single screenreader cause by its modularity...
This is not enought!
The Jörmungandr Project is a "new" screen reader what should be able to
read All of our environments (TTY, GUI, TerminalEmulation). This is also
not enough to me. I want to have it network transparent to be able read
RDP, VNC, ssh or similar stuff (useful for admins). So its something
like an uinified speakup, orca, nvda, yasr, sbl and so on.
Sounds like crazy shit and it is. but its indeed doable. And the best,
we can reuse fenrirs codebase for some parts in first place.
Some technical details:
To have this we will create several components:
- Data Miners: running as standalone application to collect data for the
given screen. Its something like an "Networktransparent Screendriver"
what runs as own process and connected to an Processor and the Core. We
will i.e. have Data Miners for PTY Emulation, TTY reading, at-spi
reading and for inaccessible applications OCR.
- Processors: does work with data given by the data miners. GUI and CLI.
it will do stuff like Review Mode, Define a Window or SayAll. So the
Functionality. Why we need an own component for this? Lets say Text and
Graphical environments are completely different. For GUI we have Roles
(Button, Checkbox, Textbox) and States (Checked, Selected,Focused) what
could be proceeded and presented. In Text we just have an 2D Matrix of
Characters. All Textbased Mines will connect to an "Textprocessor" and
all GUI Miners will connect to an GUI Processor to process the
- Drivers: Like Braille, Speech, Sound, Input, Remote are connected to
the core or loaded into the core. some of them are also Network
Transparent to be able to run it on other machines to have speak at your
server or anything else. you can have multiple Drivers of the same
category connected to the core as well. maybe you want to create speech
or sound at your server and your local machine as well (maybe you do
help desk or switch between them). Some of them are loaded into the Core
directly like input or remote.
- Core: Is where all pieces come together. Its the "Server" part of the
screenreader. Drivers, Data Mines and Processors connects to it. it does
manage the components, settings, event queue and the Shortcut handling
Not in 1.0:
- Fixer: Is loaded into the Core and connected to the Processors. It
should "learn" about accessibility issues baased on the processed data
and try to fix those issues automatically. I work a lot with Google
Tenserflow and would use something like that. The idea is for example on
websites fi you stuck in an area, Jörmungandr should recognice this and
bring you out. or for some nasty timers what tick once per second what
floods the TTS, detect those cases and make them more "quite". this is
not part of the offical 1.0 but an nice idea for later. so i didnt
finaly think about the design here.
I choose C++ as primary language for 3 reasons:
1. Many blind people seems to have problems with pythons indentation.
2. C++ offers all needed bindings
3. its fast as hell
Fenrirs components could be recycled for most part. those will be
replaced step by step with an C++ component after having the core finished.
Jörmungandr should not only focused for Linux - But also work on other
operation systems. to smelt them all together.
Let me know what you think. Maybe you wanna help? let me know. We need
any help to accomplish this mission.
More information about the Blinux-list