LUWRAIN — дистрибутив и рабочая среда, в которых необязательно смотреть на экран

Сегодня очередной День всеобщей осведомлённости о доступности (GAAD), в который принято популяризировать вспомогательные технологии и доступность IT-продуктов для пользователей с ограниченными возможностями. Тем не менее, во время GAAD о доступности (или accessibility) в большинстве случаев говорят как о свойстве какого-либо программного обеспечения или web-сервиса, что безусловно важно и заслуживает всяческого внимания, но является не единственно возможным направлением приложения сил разработчиков. Помимо обеспечения доступности интерфейсов для вспомогательных технологий существует и такое направление, как разработка самих этих вспомогательных технологий: экранных увеличителей, программ чтения экрана, специализированных рабочих сред и других. Именно об одном подобном проекте, занимающемся разработкой специализированного рабочего окружения для незрячих и слабовидящих под названием LUWRAIN, и пойдёт речь в данной статье.

Год назад, на GAAD-2015, уже публиковался подробный материал о LUWRAIN, в котором была изложена общая концепция этой рабочей среды, а также рассмотрена задача создания приложений на её базе, адаптированных для людей с нарушениями зрения, поэтому, все, кто боится потерять контекст, может предварительно ознакомиться с публикацией «Luwrain — рабочее окружение для людей с нарушениями зрения». В этот же раз речь пойдёт о тех технических задачах, которые решались в рамках LUWRAIN на протяжении прошедшего года, и о перспективах дальнейшего развития, а также читателей ждёт рассказ о том, как команда LUWRAIN угощала армянским коньяком и русской водкой своих коллег из Canonical.

Михаил у офиса Canonical
Как и в прошлый раз, к написанию материала напрямую причастен руководитель проекта LUWRAIN Михаил Пожидаев, так что статья вполне может считаться официальной версией истории проекта, так как самые скандальные факты были им цинично цензурированы.

Основные задачи

Главное меню LUWRAIN

Напомним, что основной целью проекта LUWRAIN является создание специализированного рабочего окружения, главным образом, адаптированного под специфические потребности пользователей с серьёзными нарушениями зрения. Идея заключается в том, что работа незрячего человека с нативным графическим интерфейсом операционных систем и приложений при помощи существующих программ экранного доступа, далеко не всегда и во всём является удобной. Существует класс задач, которые вполне реально решать в специальной рабочей среде более эффективно, а некоторые категории пользователей напрямую нуждаются в подобном решении, так как нативные интерфейсы для них оказываются чрезмерно сложными, например, это касается многих пожилых людей и людей с одновременным нарушением зрения и слуха. Да и, в конце концов, каждый имеет право просто не любить GUI, что, между нами говоря, в полной мере относится к главному идеологу LUWRAIN.

Обзор файлов и папок, две панели LUWRAIN и Java

LUWRAIN предлагает достижение поставленной цели за счёт создания специализированного рабочего окружения, изначально адаптированного под специфику работы пользователей с нарушением зрения (исключительно текстовый интерфейс, полное клавиатурное управление без мышки, которая недоступна незрячим, гарантированная доступность всей экранной информации и пр.). Внутри среды LUWRAIN реализуются приложения для решения базовых задач (сёрфинг, работа с почтой, чтение новостей и пр.), а также существует API для создания дополнительных приложений сторонними разработчиками, который позволяет писать расширения, не задумываясь над задачей обеспечения их доступности, так как она решена уже на уровне LUWRAIN, являющегося как бы фреймворком для написания таких приложений.

Каталоги книг в LUWRAIN - список библиотек

Сам же LUWRAIN реализуется в двух вариантах: как Java-приложение для различных операционных систем и как дистрибутив Linux с LUWRAIN в качестве рабочего окружения. Вследствие этого, вся разработка LUWRAIN разбивается на несколько типов задач:

  1. Создание кросс-платформенного ядра среды LUWRAIN на Java;
  2. Разработка внутренних приложений на базе имеющегося API;
  3. Написание платформозависимых элементов для запуска LUWRAIN на разных системах;
  4. Сборка Linux-дистрибутива с наивысшей интеграцией LUWRAIN в систему.

Это довольно разноплановые задачи, которые требуют гибких подходов к их решению. В одних случаях получается воспользоваться практически готовыми open source библиотеками и только реализовать для них поддержку LUWRAIN API, как, например, в случае почтового клиента, в других, приходится писать собственные реализации с нуля, как, например, реализацию взаимодействия с MS Speech API, ну, а в третьих встаёт необходимость серьёзной доработки имеющихся решений, как, например, в случае браузера.

Адаптация WebKit

LUWRAIN, безусловно, является до определённой степени эскапистским решением, но всё же не настолько, чтобы игнорировать необходимость базовой функциональности, к которой, в том числе, относится и работа в сети Интернет. Тем не менее, ещё год назад реализация доступной для незрячих web-навигации в рамках LUWRAIN представлялась практически нерешаемой задачей. Именно поэтому рассматривалась возможность использования параллельно запущенного браузера Chrome с расширением ChromeVox, предназначенным для обеспечения невизуальной работы с web-страницами. Однако это был скорей шаг отчаянья, так как изящность подобного решения, откровенно говоря, хромала, да и сам ChromeVox на тот момент имел ряд фундаментальных проблем при работе с не ASCII-символами, которые не решены и до сих пор.

В середине 2015 года было решено попробовать взять за основу браузерный движок WebKit, собранный как JNI-модуль. Его перспективность заключалась в том, что фактически он является довольно самодостаточным компонентом. То есть, будучи собранным на C++, даёт одинаковый результат на всех платформах и не тянет за собой тяжёлых зависимостей. Он также имеет Java-интерфейс, представляющий собой почти только трансляторы JNI-вызовов. Плюс у него являются разнесёнными сам движок и блок графического отображения, то есть объект визуализации вообще можно не создавать, и движок будет всё равно работать, что делает его довольно удобным решением для реализации браузера с альтернативным интерфейсом в духе LUWRAIN.

Очевидно, что после обнаружения всех этих подробностей, идея с рядом запущенным Chrome и пробросом вызовов в ChromeVox показалась ещё более непривлекательной, и было решено реализовывать собственный браузер внутри LUWRAIN на базе WebKit. Однако задача эта оказалась далеко не такой уж простой из-за определённой специфики обеспечения невизуальной доступности web-интерфейсов.

Дело в том, что у незрячих пользователей к работе с web есть ряд определённых требований:

Во-первых, просто простыня текста web-страницы не очень удобна для невизуальной работы. Необходимо обеспечить ряд дополнительных возможностей, представляющих собой варианты навигации по структурным элементам страницы (заголовкам, ссылкам, таблицам и пр.).

Во-вторых, страницы, априори разрабатывающиеся с ориентацией на визуальное восприятие, далеко не всегда и не во всём удобно выглядят в текстовом исполнении, например, навигационные или информационные боковые колонки при текстовом представлении оказываются зачастую абсолютно лишним текстом в начале или середине основного содержимого (в зависимости от их порядка в исходной структуре документа). То есть необходимо предусмотреть различные дополнительные функции для адаптации страницы под чтение незрячим (режим чтения с удалением лишних элементов, возможность настроить чтение страницы при загрузке с определённого места, а не с начала, и пр.).

В-третьих, полностью отказаться от исходного представления страницы со всеми графическими элементами также было бы неправильно, так как системой может пользоваться слабовидящий человек, способный к ограниченному визуальному восприятию, да и, к сожалению, незрячим зачастую приходиться просить зрячих людей помочь разгадать графический CAPTCHA на сайтах.

Отображение yandex.ru в браузере LUWRAIN

Всё это требует довольно серьёзной доработки WebKit для его использования в LUWRAIN. В частности, приходится реализовывать поверх свою собственную структуру, которая и даёт навигацию по элементам гипертекста. Причём, необходимо разбирать не просто исходный HTML, а уже дерево DOM, потому что многие элементы интерфейса появляются только после отработки JavaScript.

Здесь кроиться одна проблема WebKit, заключающаяся в том, что движок в полной мере не даёт понять, когда именно страница загружена полностью.
То есть наличие большого количество скриптов делает момент получения готовой страницы очень размытым, что очевидным образом сказывается на способности адекватно отобразить её в интерфейсе LUWRAIN.

Отображение luwrain.org в браузере LUWRAIN

Отображение luwrain.org в браузере LUWRAIN (раскрытое меню)

Главным мастером этого направления в LUWRAIN стал Роман Воловодов rPman, который и сделал реальностью все эти вещи.

На сегодняшний день, работы по адаптации WebKit не закончены и браузер LUWRAIN пока ещё не может похвастаться стабильностью работы. Это по-прежнему остаётся одним из ключевых направлений развития рабочей среды. На ближайшее будущее задачей-минимум является получение реально стабильного и пригодного к пользовательской работе браузера. После этого можно будет задуматься над некоторой модульностью для расширений, в частности, прикручивания поддержки спамерских API для распознавания CAPTCHA.

Откровенно говоря, существуют некоторые сомнения в отношении возможности браузера LUWRAIN догнать по функциональности невизуальной работы существующие решения на Windows в связке с развитыми программами чтения экрана, которые, на сегодняшний день, являются лидерами индустрии в сфере обеспечения доступности web для незрячих. Однако всё это пока является скорей предметом спекуляций и дружеских холиваров внутри отрасли вспомогательных технологий, и до первой стабилизации браузера LUWRAIN выполнять какие-либо сравнения будет преждевременным.

Дистрибутивы с LUWRAIN

Как уже говорилось, одним из вариантов поставки LUWRAIN является сборка самостоятельного Linux-дистрибутива, так как несмотря на то, что среда задумана как кросс-платформенное решение, именно на Linux её возможности могут быть раскрыты в полной мере. Выбор базового дистрибутива был одним из вопросов, который возникал на этапе становления проекта, но в итоге было принято решение, что им станет Ubuntu.

Результат поиска 'Ubuntu' по Википедии в LUWRAIN

Разумеется, базовый дистрибутив — это всегда довольно флеймообразующий момент, зачастую затрагивающий практически религиозные чувства, поэтому всем угодить здесь сложно. В случае LUWRAIN, выбор в пользу
Ubuntu был сделан, главным образом, из соображений наибольшей массовости и документированности. К слову, до этого момента главный разработчик сидел на ALT Linux, что, наверное, может служить некоторой защитой от обвинений в предвзятости.

Так или иначе, в 2015 году начались серьёзные работы по подготовки дистрибутива LUWRAIN, которые под самый новый год завершились релизом образов бета-версии LUWRAIN 0.5.0 на базе Ubuntu 15.10 (Wily Werewolf). На сегодняшний день актуальной является уже версия 0.5.2 от 15 марта 2016 года. Все загрузочные ISO-образы, которые могут быть использованы как для запуска LUWRAIN в режиме live CD без установки на жёсткий диск, так и для установки на ПК в качестве самостоятельной OS, доступны на официальном сайте проекта.

Существует и другой дистрибутив, в котором в качестве рабочей среды используется LUWRAIN на пару с Emacspeak — Homeros, вышедший в начале апреля 2016 года. Он также базируется на Ubuntu 15.10, но в большей степени ориентирован на опытных пользователей и решение задач разработки, в том числе самого же LUWRAIN.

В общем и целом, будущее LUWRAIN как дистрибутива тесно связывается с Ubuntu, в том числе в отношении использования всей экосистемы и прочего. Между прочем, именно интерес главного разработчика LUWRAIN к механизму Snappy привёл к неожиданным последствиям.

Контакты с Canonical

В конце 2015 года, на некоторые вопросы Михаила Пожидаева о Snappy по почте ответил Марк Шаттлворт, после чего Михаил поинтересовался правовой стороной использования Ubuntu, показав статью о LUWRAIN в Linux Journal. В конечном счёте, всё это закончилось приглашением в Лондонский офис Canonical, куда команда LUWRAIN собралась отнюдь не с пустыми руками.

Существует легенда, в том числе известная и в Великобритании, что на Ялтинской конференции Сталин предложил Черчиллю рюмку армянского коньяка, который настолько понравился британскому премьер-министру, что он стал поклонником этого напитка. В последующие годы поставки этого коньяка сэру Черчиллю контролировались лично Сталиным, а когда однажды из-за ареста одного из мастеров качество продукта изменилось, Иосиф Виссарионович распорядился его выпустить и снова вернуть на работу. Разумеется, после такого, команда LUWRAIN не могла не захватить в подарок британским коллегам бутылку армянского коньяка, которую и вручила Джону Ли и Ричарду Коллинсу со словами, что Черчилль уважал, а Марку, которого тогда не было в Лондоне, передали бутылку настоящей русской водки.

Михаил с коллегами из Canonical

Общение именно с этими сотрудниками Canonical было не случайным. Дело в том, что Ричард Коллинс курирует телефонное направление, а Джон Ли отвечает за его дизайн.

На сегодняшний день, все основные мобильные операционные системы (Android, iOS, Tizen, BlackBerry, Windows 10 Mobile) в той или иной степени доступны для незрячих пользователей, а вот Ubuntu Touch, к сожалению, для невизуального использования остаётся абсолютно неприспособленной. Desctop-версии Ubuntu пытаются учитывать потребности незрячих, включая в себя средства чтения экрана, но по мобильному направлению система Canonical на сегодняшний день в отношении доступности ничего предложить не может. Потенциальное сотрудничество Canonical и LUWRAIN в этой области могло бы предложить незрячим ещё один вариант доступных смартфонов и планшетных компьютеров. Причём, не в виде повтора уже существующих решений, как это в массе своей происходит в уже доступных мобильных OS, а в рамках своей концепции адаптированных интерфейсов.

Международные контакты проекта LUWRAIN также поспособствовали и началу движения в сторону большей унификации и стандартизации. В частности, были начаты работы над имплементацией поддержки речевых серверов Emacspeak и Speech Dispatcher. Ранее, в LUWRAIN вывод синтезированной речи осуществлялся через речевой сервер VoiceMan, являющийся самостоятельной разработкой. Это давало некоторые преимущества, но также создавало для незрячих пользователей и определённые неудобства, а именно невозможность использовать те самые Emacspeak и Speech Dispatcher, являющиеся более распространёнными и даже стандартами де-факто для многих дистрибутивов, в том числе и Ubuntu.

Многие альтернативные вспомогательные технологии, главным образом, программа чтения экрана Orca, не работают с VoiceMan, поэтому у пользователей возникали проблемы одновременного сочетания LUWRAIN с другим адаптивным программным обеспечением на Linux, что было одним из предметов критики данной рабочей среды. Сейчас же, благодаря реализации поддержки и других речевых серверов, LUWRAIN становится более гибким и способным к комбинированному использованию.

Ближайшие планы

На ближайшее время в планы проекта LUWRAIN входит:

  1. До конца 2016 года завершить разработку первой стабильной версии браузера.
  2. К началу ближайшего учебного года создать условия для работы в рамках LUWRAIN с учебными материалами в специальном формате DAISY, адаптированном под потребности незрячих. Разумеется, в рамках проекта LUWRAIN речь идёт лишь о создании инструментария для чтения и возможно создания, а отвечать за подготовку контента должны будут соответствующие организации (коррекционные школы, библиотеки для слепых и др.).
  3. Реализовать доступное посредством среды LUWRAIN мобильное устройство совместно с Canonical, которым может быть как смартфон, так и планшет.
  4. Сдвинуть с мёртвой точки вопрос интеграции с платёжными системами, то есть реализовать возможность работы с ними в интерфейсе LUWRAIN, так как использование web-сервисов менее удобно, а зачастую и откровенно менее доступно для незрячих пользователей. Очевидно, что это крайне сложное направление работы, что обуславливается определёнными требованиями безопасности, однако есть надежда найти какие-то точки соприкосновения с соответствующими организациями.

Дополнительная информация

Проект Luwrain развивается в традициях свободного программного обеспечения и полностью открыт для сообщества. Более подробную информацию можно получить на официальном сайте. Там же доступны для загрузки существующие сборки LUWRAIN, как в виде ISO-образа, так и в виде отдельного приложения для Windows и Linux. Интересующиеся же непосредственным развитием проекта могут ознакомиться с LUWRAIN SDK, с полным перечнем репозиториев Git, а также с ночными сборками.

Дополнительно можно ознакомиться с рядом других материалов о LUWRAIN, вышедших за последний год и содержащих более подробное описание отдельных аспектов проекта:

  • Introducing LUWRAIN: Accessibility Solution for the Blind (Linux Journal, Техас, США, июль 2015, анг. яз.)
  • Введение в LUWRAIN: цели, описание, разработка (ITConf 2016, Санкт-Петербург, РФ, 7–8 апреля 2016 г., рус. яз.)

© Habrahabr.ru