Proceedings of the 10th conference of FOSS-developers, Kaluga, Russia, September 21, 2013
LUWRAIN is an operating system designed for blind and visually impaired persons. It uses Linux kernel and offers special type of user environment based on representation of objects in text form only, in contrast to widely popular graphical user interface (GUI). GUI is a standard modern way to bring information to user, but interaction is performed mostly through a mouse, usually not used by blind persons. That makes GUI rather inconvenient for this group of information technologies consumers.
Although LUWRAIN design in general is very close to the Android ideas (Java on Linux kernel), it isn't based on Android. Even in case of some benefits, multiple Android vulnerabilities cause a lot of security concerns. Very likely known Android security issues are a consequence of deep modification of basic components: glibc, Java virtual machine etc. LUWRAIN uses standard components as they are provided by GNU/Linux distributions including Linux kernel, Java SE, glibc and so on. This decision by the way allows consider LUWRAIN as universal platform without any bias towards any known computer type: desktop, laptop, tablet. As device evolution goes quickly and mostly unpredictable, this fact plays significant role.
There are three valuable components in LUWRAIN design: Linux kernel, system services and user environment based on Java, as it was mentioned above. All necessary interaction with system services is performed through a D-Bus activity. LUWRAIN intents to use udisks for removable media management, Network Manager for network interfaces operations and so on. Generally we would like to respect as many relevant freedesktop.org recommendations as it is possible, making LUWRAIN compatible with usual Gnu/Linux desktop.
User interface approach is the most important part of the project. It is inspired by emacspeak package, widely known in community of blind users of GNU/Linux. Its main advantage is a very high speed of work, usually unapproachable with GUI-based systems in conjunction with screen reading software. We would like to save all positive parts of emacspeak experience eliminating its disadvantages. In LUWRAIN user interacts with several areas placed on a screen as tiles. Each of them always has rectangular form and filled with text written using monospaced font. Font size, font color and background color are defined globally and can be easily changed to be suitable for needs of a particular user. All areas are associated with launched applications and not all of them should be visible on the screen. User has convenient methods for quick applications and areas switching and that makes LUWRAIN different than emacspeak which has no applications at all. In addition LUWRAIN offers special type of areas called a popup areas and designed for dialogs with a user. Their main difference is that they can be opened as single method call which does not return until popup area is closed. A couple of popup areas have system-wide meaning: main menu and command line prompt. The idea to offer easily accessible command line evidently was adopted from emacspeak but there it has slightly different behaviour. It provides the access only to commands with execution not related to a particular area. Commands invocation can be done in any time and yields the same result, without dependence what applications are currently opened.
The standard set of applications includes file manager, mail and news reading applications, documents reading, text editor, address book, calendar and so on. Each of this tasks usually implies only creation of proper interface in terms of LUWRAIN, as real back-ends for them mostly are already available as various libraries for Java. This fact played nearly crucial role at language choosing decision.
But there are some exceptions from the strategy described above. Web browser cannot be implemented as text-based application so it should be available as a separate applications executed outside of Java environment. There are two possible alternatives for that:
The former choice is more difficult since creation of libatspi client requires significant efforts but actually is more preferable, because it allows collecting web-page contents in Java environment for copy-paste operations. In addition, available libatspi client also gives a way for launching of some closed applications, like Skype.
LUWRAIN installation program is based on the installation program previously developed as a part of ALT Linux Homeros project. It uses livecd-cloning technique and can be done by blind user without any additional sighted help.