0,0
рейтинг
21 мая 2015 в 01:29

Разработка → Luwrain — рабочее окружение для людей с нарушениями зрения

На страницах Хабра несколько раз уже упоминался проект Luwrain (раз и два), однако было это мельком и без технических подробностей. Поскольку сегодня День всеобщей осведомлённости о доступности, то это хороший повод заполнить этот пробел и подробно рассказать о том, что такое Luwrain, какие цели он преследует, что представляет собой в техническом отношении, а главное, чем может быть интересен обычным разработчикам, не имеющим проблемы со зрением.

В этом материале мы познакомимся с общей концепцией доступной среды Luwrain, а также рассмотрим задачу создания приложений на её базе, адаптированных для людей с нарушениями зрения. Один из авторов данной статьи никто иной, как координатор проекта Luwrain Михаил Пожидаев, так что у всех желающих есть возможность получить информацию буквально из первых рук. Другой же автор уже успел прослыть как противник Luwrain, так что надеемся, что эта смесь обеспечит достаточный уровень объективности изложения.

Ну и сразу, чтобы читатели не отвлекались на ненужные мысли, отметим, что Luwrain произносится как «люрэ́йн» и является мальчиком, то есть говорить в третьем лице надо «он».

Цели проекта


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

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

Перед проектом ставится три главные цели:

  1. Обеспечить возможность работы с компьютером тех пользователей с нарушениями зрения, которые по разным причинам не могли это делать раньше.
  2. Предложить надёжный и производительный инструмент для опытных пользователей в решении ряда базовых и профильных задач.
  3. Предоставить платформу для создания и распространения приложений, адаптированных для людей с нарушениями зрения.

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



В конечном итоге, Luwrain не предполагает вытеснение альтернативных технологий невизуальной доступности ПК. Смысл проекта заключается в том, чтобы незрячим пользователям предложить доступный интерфейс взаимодействия с компьютером, а разработчикам предоставить возможность реализации доступных приложений без каких-либо компетенций в области вспомогательных технологий. В современном мире, когда большая часть сервисов уходит в Интернет, именно Luwrain может предложить простую, гибкую и функциональную платформу для реализации интерфейсов невизуального доступа к сетевым сервисам.

Концепция Luwrain


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

Обзор файлов и папок в Luwrain

Значительное влияние на развитие концепции Luwrain оказал Emacspeak (подсистема для среды Emacs, озвучивающая её интерфейс), сильным сторонам которого было уделено особенное внимание. По сути, именно Emacs является наиболее ярким примером жизнеспособности концепции текстового интерфейса, причём, не только для незрячих. Также среди проектов, близких к Luwrain по общей идеи — специальной рабочей среды для незрячих, можно, например, отметить такие как:

  • Adriane Knoppix — некоммерческий дистрибутив Linux на базе Debian, предназначенный для незрячих и слабовидящих пользователей за счёт отказа от обязательности использования визуально ориентированных средств вывода информации. Создан специально Клаусом Кноппером для его незрячей жены Адриан.
  • Dolphin Guide — коммерческая рабочая среда для OS Windows, имеющая упрощённый и озвученный интерфейс. Главным образом, позиционируется как решение для пожилых пользователей.
  • Mobile Accessibility — коммерческая озвученная оболочка для OS Android, обеспечивающая незрячим пользователям гарантированную доступность базовых функций смартфона. Была особо актуальна во времена становления специальных возможностей Android (примерно до 4.1), когда фактически являлась единственным инструментом обеспечения простой доступности ряда функций устройства.

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

Во-первых, Luwrain написан на Java, что сразу переводит его из разряда платформозависимых в разряд кросс-платформенных решений. Потенциально Luwrain может быть запущен везде, где есть JVM, разве что с некоторыми оговорками в виде необходимости соблюдения некоторых минимальных системных требований и наличия интерфейсов вывода информации, которые могут быть использованы для воспроизведения синтеза речи или подключения тактильных дисплеев. В частности, работа Luwrain на компьютерах под управлением Linux, OS X и Windows является реальностью уже сегодня.

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

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

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

Ну а поскольку при всём этом Luwrain является некоммерческим продуктом с открытым исходным кодом, живущим по законам GPL, то в общей сложности он гарантирует три вида доступности ПК для людей с нарушениями зрения: финансовую, технологическую и доступность с точки зрения минимальных требований к знаниям пользователей.

Создание приложений на базе Luwrain


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

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

Основные понятия


Для начала определимся с парой основных понятий, характерных для разработки под Luwrain.

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

Документация по интерфейсу Application.

Область (area) — это абстракция элемента управления в рабочем пространстве приложения. За исключением того, что элементы управления в среде Luwrain имеют текстовый вид, никаких иных принципиальных отличий от GUI больше нет. Область выступает и как источник текстовой информации, и как получатель событий от системы. Рабочее пространство приложения может состоять из одной или нескольких областей. В отличии от Application, для Area готовить собственную реализацию необязательно, потому что Luwrain подразумевает библиотеку элементов управления, пригодную для расширения и кастомизации.

Документация по интерфейсу Area.

Библиотека элементов управления


При построении рабочего пространства приложения Luwrain мы по сути оперируем текстовыми аналогами привычных элементов GUI. Это может быть список, редактируемый текст, форма с набором полей, таблица, дерево и прочее. За всё это отвечает пакет org.luwrain.controls.

Документация по пакету org.luwrain.controls.

Здесь для примера подробно рассмотрим создание и кастомизацию списка элементов. В элементах управления в отдельные интерфейсы вынесены модель (model) для хранения контента и представление (uppearance) для уточнения показа информации пользователю.

Документация по интерфейсу ListModel.

Документация по интерфейсу ListItemAppearance.

В списке элементов управления (list) по сути происходит следующее:

  • Модель хранит набор элементов и не заботиться о деталях их представления пользователю.
  • Методы getItemCount() и getItem() дают доступ ко множеству элементов.
  • Метод refresh() уведомляет модель, что пользователь запросил обновление содержимого списка.
  • Метод toggleMark() запрашивает смену состояния выделения элемента и может вернуть false, если модель не подразумевает множественное выделение.
  • В интерфейсе ListItemAppearance метод introduceItem() должен выполнить некоторое звуковое действие, чтобы сообщить пользователю, что курсор установлен на новом элементе списка. В Luwrain также активно используется сопровождение работы звуковыми сигналами, которые несут определённую смысловую нагрузку и позволяют донести до незрячего пользователя информацию быстрее, чем это можно сделать посредством проговаривания.
  • Метод getScreenAppearance() возвращает строку, которая должна быть отображена на экране для визуального представления.
  • Методы getObservableLeftBound() и getObservableRightBound() позволяют определить фрагмент строки на экране, который пользователь может исследовать по буквам. Эта область иногда ограничивается, чтобы не заставлять пользователя разбирать символы, предназначенные только для визуального представления.


Обработка событий


Внутри Luwrain выделяется две группы событий: события клавиатуры (KeyboardEvent) и события окружения (EnvironmentEvent).

Под клавиатурой понимаются именно клавиши. Мышь и другие позиционные устройства ввода не используются. Это связано с принципиальными проблемами невозможности удобного невизуального представления данных о позиции мышиного курсора. Touchpad потенциально может транслироваться в события, аналогичные нажатиям сочетаний клавиш, как это, например, реализовано в VoiceOver на OS X.

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

Документация по классу KeyboardEvent.

Документация по классу EnvironmentEvent.

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

Текущее состояние проекта


На текущий момент среда Luwrain находится в статусе бета-версии. Существуют работоспособные сборки для Linux, OS X и Windows, а также вариант в виде загрузочного ISO-образа. За последние полгода ядро среды было существенно переписано и сейчас близко к стабилизации. Версия, актуальная на момент написания статьи, 0.4.

В настоящее время ведётся активная работа по созданию и развитию внутренних приложений Luwrain, обеспечивающих базовую функциональность: файловый менеджер, RSS-агрегатор, почтовый клиент и так далее. Кроме того, дорабатываются платформозависимые блоки среды, относящиеся к сборкам под конкретные платформы и обеспечивающие запуск и работу Luwrain в окружении той или иной операционной системы. Например, это касается синтеза речи, который реализуется на каждой платформе особым образом через использование характерных для неё TTS API (для Linux — речевой сервер VoiceMan, для OS X — Speech Synthesis, для Windows — SAPI5).

В ближайшие планы входит доведение до состояния production ready версии Luwrain с базовой функциональностью, чтобы выпустить первый стабильный релиз. Это позволит обкатать продукт не только на опытных пользователях, которые щупают бету сейчас, но и на обычных людях, что даст дополнительную обратную связь и понимание, какие ещё аспекты нуждаются в доработке для учёта интересов целевой аудитории.

К сожалению, сама концепция специализированной среды, которой придерживается Luwrain, имеет и ряд трудностей в отношении предоставления пользователю некоторой базовой функциональности. В основном это связано с теми задачами, которые по каким-то причинам трудно реализовать внутри Luwrain. Например, это касается полноценного браузера или вещей типа Skype. И если создание браузера внутри Luwrain ввиду существования Java-реализации WebKit вполне реально, то вот с тем же Skype, ввиду недавнего закрытия SkypeKit, внутренняя реализация невозможна.

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

Участие в проекте


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

Исходный код Luwrain хранится и постоянно обновляется в нескольких репозиториях Git, расположенных на GitHub. С их полным списком можно ознакомиться на соответствующей странице официального сайта Luwrain.

Если у кого-то возникло желание принять участие в проекте в том или ином качестве, то выходите на связь!
Никита Цейковец @Tseikovets
карма
61,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (4)

  • +1
    Подкаст с участием Михаила, где он подробно рассказывает о проекте.
  • 0
    А как давно система разрабатываеся и сколько в ней разработчиков? И почему со Skype проблемы? Есть же платный SkypeKit (насколько я знаю). Проблема в платности?
    P.S. На главной странице есть ссылка на github.com/luwrain/app-writer Но там ничего нет. Я так понимаю, некоторые ссылки — это задел на будущее?
    • +1
      Ну непосредственной разработкой Java-кода Luwrain помимо Михаила, являющегося координатором проекта, занимается ещё два человека, хотя есть, конечно, и люди, присылающие нерегулярные патчи. Также есть люди, которые не занимаются непосредственной разработкой Luwrain, а помогают с вещами типа сборки ISO-образов, записью дикторского материала, подготовкой звуковых схем, сборкой Luwrain под разные платформы.

      Что касается SkypeKit, то его вообще убили в 2014 году. Теперь только официальные клиенты.

      Да, app-writer в планах, но код ещё не выложен, хотя у Михаила наверное локально уже что-то лежит, потому что этот кусок как раз входит в дорожную карту первого стабильного релиза.

      Чуть не забыл, проект как идея по-моему появился году в 2006, но как конкретная реализация начался позже. Активно он развивается примерно последние пару лет.
  • +1
    Более подробные доклады Михаила с демонстрацией системы на конференциях
    * SECR-2014
    * OSEDUCONF-2013

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.