Общение с помощью программы экранного доступа

Привет, друзья,

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

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

  • Выпадающие списки, которые программа чтения с экрана определяет как HTML-теги <select>, почти полностью неработоспособны. Они раскрываются с помощью стандартных клавиатурных команд, но на этом доступность заканчивается. Проблемы начались, когда мне нужно было выбрать язык во время настройки. Я не сразу понял, выбран ли по умолчанию английский (США), но когда я решил разобраться, случайно установил испанский язык и с трудом смог вернуть всё обратно. В конце концов я нашёл список с помощью программы чтения с экрана и исправил это. Но практически каждый выпадающий список неработоспособен. Не хочу говорить «каждый», вдруг где-то в отдалённом углу интерфейса найдётся рабочий, но все те, которые я пробовал, вообще не работают. :frowning:
  • Я не могу найти способ попасть в административную панель без прямой навигации. Экраны настройки сообщали, что она находится под значком шестерёнки, но я не могу найти текстовое описание этого значка, и ни один из найденных элементов управления, доступных с клавиатуры, не ведёт к административной панели. Пока я просто перехожу по адресу /admin, но это заставляет меня задуматься, какие ещё инструменты я могу не обнаруживать, потому что не могу найти эту шестерёнку.
  • Связано с выпадающим списком настроек: я не могу использовать выпадающие списки/элементы <select> в верхней части списков категорий для перехода к спискам категорий. Я знаю о ссылке «Категории», которую обычно и использую. Но было бы здорово, если бы эти селекторы работали.
  • Всякий раз, когда я не регистрируюсь в Discourse, мне говорят, что мне стоит это сделать, отчасти потому, что форум запоминает, где я остановил чтение. Для меня с программой чтения с экрана это никогда не работало. Как это должно работать? Должна ли ссылка перемещать фокус на последний прочитанный мной пост?
  • И это не связано с моим сайтом, но опыт регистрации в модальном окне здесь также вызвал некоторые трудности. Я попытался зарегистрироваться по электронной почте, но ваш сервер отклонил мой адрес .info, который я использую уже почти 17 лет и который отлично работал на моём собственном сервере. Затем я зарегистрировался через Google, но модальное окно, которое появилось при возвращении, вызвало некоторые проблемы:
    • Оно не перехватывало фокус клавиатуры, поэтому мне пришлось искать его и взаимодействовать с ним самостоятельно.
    • Пока я пытался это сделать, бесконечно прокручивающийся список тем добавлял новые темы, что затрудняло достижение фокусом диалогового окна. Я не помню точно, как мне удалось двигаться быстрее, чем появлялись темы — кофе ещё не пил — но я здесь. :slight_smile:

Итак, несколько вопросов:

  • Я очень хочу остаться с Discourse, если это возможно. Сколько из этого я могу изменить на своём собственном сайте? В частности:
    • Могу ли я убрать селекторы списка категорий, чтобы пользователи пока должны были использовать ссылку на список категорий?
    • Могу ли я убрать селектор категории на страницах создания новой темы, чтобы пользователи сначала вводили категорию, в которой хотят опубликовать, и не могли случайно создать пост без категории или запутаться?
    • Могу ли я сделать оба этих изменения так, чтобы обновление было простым? Я бы предпочёл не редактировать стандартные шаблоны и не форкать проект, если это не обязательно, и мне не обязательно нужен совершенно новая тема.
  • Ведётся ли работа над этим где-либо отслеживается, и есть ли кто-то, кто занимается этим целенаправленно? Форумы Discourse поглощают интернет. Куда ни глянь, проекты или сообщества, в которых я участвую, переходят на них. Чёрт возьми, даже как незрячий пользователь, я хочу запускать Discourse, потому что, повторюсь, вы делаете это очень простым. Я просто не хочу, чтобы доступность такого важного инструмента была либо второстепенной задачей, либо постоянно отставала от новых разработок.

Спасибо за прочтение.

29 лайков

Это продуманный пост, @nolan. Я уверен, что другие члены команды ответят на ваши вопросы, но не могли бы вы описать вашу конфигурацию, чтобы разработчик мог попытаться воспроизвести возникшие у вас проблемы? То есть: какая операционная система, какой скринридер и так далее.

11 лайков

Windows 10, экранная программа чтения с экрана NVDA. Однако, чтобы выразиться деликатно, ошибка настолько серьёзна, что она, вероятно, не будет работать корректно нигде, поэтому практически любая комбинация ОС и программы чтения с экрана, скорее всего, столкнётся с этой проблемой.

11 лайков

Спасибо за обратную связь! Мы понимаем, что ещё не достигли желаемого уровня доступности, и в последнее время активно работаем над этим. В конце 2020 года мы провели независимый аудит доступности для наиболее важных неадминистративных страниц Discourse и за последние пару недель начали устранять проблемы с высоким приоритетом.

Теперь, когда вы об этом упомянули, я понимаю, почему поиск меню администратора может быть затруднён. Ссылка на меню находится в одном из основных пунктов верхнего меню… её aria-label — «перейти к другому списку тем или категории»… что, безусловно, не даёт понять, что внутри есть несколько ссылок для администратора.

Что касается сообщения о том, что Discourse запоминает, где вы остановились… ожидаемое поведение заключается в том, что при входе в тему пользователь должен переходить к тому месту, где остановился чтение. Я только что проверил навигацию с помощью клавиатуры и могу подтвердить, что фокус не устанавливается в нужном месте.

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

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

Мы помечаем отчёты о проблемах доступности здесь, на Meta, тегом accessibility, чтобы их было легче найти в одном месте… однако сам отчёт независимого аудита доступности и последующая работа, о которой я упоминал ранее, публично не отслеживаются.

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

17 лайков

У меня возник вопрос в дискуссии в Fediverse от Роберта Кингетта, у которого есть нарушения зрения, и в его профиле указано «акселератор доступности». Вопрос звучал так:

Как вы делаете Social Hub доступным для программ чтения с экрана и других людей с инвалидностью? Эпилепсия и т. д.

Поскольку SocialHub работает на Discourse, и вопрос касался проблем доступности здесь, я предложил скопировать эту ветку в документ Markdown в Github Gist. Вот он, и его можно использовать для других людей с нарушениями зрения: Accessibility: Discourse with a screen reader · GitHub

4 лайка

Кроме того, если этот вопрос ещё не поднимался, я хотел бы обратить на него внимание как на возможность быстро улучшить доступность:

Скринридеры эффективно используют многие семантические теги HTML5. Я не только могу быстро перемещаться между ними, но и они сообщают мне тип текущего контента.

Было бы здорово, если бы сообщения размещались в теге , а заголовок и подвал — в тегах и соответственно. Если замена элементов невозможна, правильное использование атрибутов role передаст тот же смысл.

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

Спасибо!

8 лайков

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

У нас также есть область панели инструментов временной шкалы темы, которая служит полосой прокрутки (я теперь присвоил ей роль scrollbar) и содержит кнопки «перейти к первому сообщению» и «перейти к последнему сообщению» (к которым я добавил описания)…

Эти изменения станут доступны с обновлениями Discourse на следующей неделе.

7 лайков

Отлично, с нетерпением жду!

Это, возможно, и так очевидно, но всё же скажу: просто «наклеить» ARIA на эти элементы управления и считать дело сделанным — недостаточно. Иными словами, разметка этих областей как панелей инструментов без следования шаблону панели инструментов, вероятно, хуже, чем полное отсутствие роли. Если я попадаю на панель инструментов, я ожидаю, что она будет вести себя определённым образом, чего не произойдёт автоматически только лишь добавлением роли. Хочу прояснить это, поскольку распространённая ошибка при добавлении доступности — это добавление таких ролей без соответствующего поведения клавиатуры. Тогда я попадаю на множество элементов управления, которые ведут себя не так, как я ожидаю, и постоянное столкновение с несоответствием ожиданий хуже, чем полное их отсутствие.

Надеюсь, всё понятно. С радостью отвечу на дополнительные вопросы.

9 лайков

Привет, Крис, роль scrollbar может быть не совсем тем, что вам нужно здесь. Нам придётся посмотреть, как это работает в действии, но пока я не видел её использования в таком контексте. Это скорее аналог элемента range в HTML5, который представляет относительную позицию прокрутки контейнера. Элементы «Перейти к первому сообщению» и «Перейти к последнему сообщению» — это просто кнопки, которые могут прокручивать представление, да, но я не думаю, что эти кнопки подходят в качестве содержимого для контейнера полосы прокрутки, который должен иметь атрибуты aria-value*.

P.S. В сообществе VS Code меня знают как гуру ролей ARIA. Не знаю точно, что именно сформировало эту репутацию, но я известен своей придирчивостью к ролям. Они могут принести больше вреда, чем пользы, поэтому это конкретное изменение, возможно, придётся откатить. Я почти уверен, что так и будет.

7 лайков

Из любопытства, есть ли у вас в команде кто-то, кто специализируется на доступности? Я с энтузиазмом отношусь к недавнему аудиту доступности и запланированным изменениям, но поскольку Discourse поддерживает значительную часть интернета, вероятно, стоит привлечь человека с практическим опытом для работы над этими изменениями и консультирования. Очень легко допустить ошибки и непреднамеренно ухудшить ситуацию.

В качестве примера: Slack заявляет о приоритете доступности и действительно использует ARIA, но их попытки, похоже, сделали область чата полностью недоступной для моего экранныого диктора. Или же, если доступность есть, я, имея несколько десятилетий опыта, не могу в этом разобраться. :slight_smile: Не хочу, чтобы Discourse непреднамеренно пошёл по этому пути.

В любом случае, я занимаюсь этим и подобными задачами профессионально и готов помочь. Кроме того, я использую несколько форумов на базе Discourse, поэтому для меня наличие гарантированной доступности стало бы ощутимым улучшением качества жизни. :slight_smile: С радостью пообщаюсь с любым заинтересованным лицом.

8 лайков

@MarcoZehe, что касается нашего управления временной шкалой, я немного сомневался, стоит ли использовать роль scrollbar или slider. Я остановился на роли scrollbar, поскольку этот элемент управления действительно прокручивает страницу и, похоже, соответствует описанию, приведённому в спецификации W3C:

Графический объект, управляющий прокруткой содержимого в области просмотра, независимо от того, полностью ли содержимое отображается в этой области.

Тем не менее, это довольно уникальное управление, которое мы создали: оно одновременно прокручивает страницу и показывает ваше текущее положение в диапазоне постов (например, отображает, что вы находитесь на посте 6 из 12). Возможно, вообще не существует хорошего способа разметить его для экранного доступа, и, возможно, его лучше скрыть, поскольку обычная прокрутка страницы работает так, как вы ожидаете, без него. Я хотел бы попробовать это решение и посмотреть, что вы думаете о его работе в действии; если оно не сработает, мы можем вернуться к предыдущему варианту.

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

Спасибо вам обоим за ответы, я очень это ценю!

6 лайков

В продолжение темы о роли toolbar, для уточнения… вы имеете в виду, что эта роль не имеет смысла вообще, если не соблюдается этот паттерн, описанный в спецификации W3C?

Реализуйте управление фокусом так, чтобы последовательность клавиши Tab включала одну точку остановки для панели инструментов, а стрелки перемещали фокус между элементами управления внутри панели.

Если это так, то я не буду внедрять эту роль, пока не смогу правильно реализовать управление фокусом и стрелками.

5 лайков

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

5 лайков

Является ли это подходящим местом для публикации результатов собственного аудита доступности для размещённого экземпляра Discourse, или мне следует создать новую тему?

И:

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

Есть ли шанс, что это решение будет пересмотрено? Было бы полезно иметь некоторую прозрачность в этом вопросе, которую я мог бы передать своим клиентам.

4 лайка

Привет, Аарон,

Чтобы ничего не потерялось, я рекомендую создавать отдельную тему ux (с тегом accessibility) для каждого пункта вашего собственного аудита. Если ваши выводы тесно связаны, возможно, имеет смысл использовать одну и ту же тему для всех. По сути, нам нужно сгруппировать задачи небольшими порциями, которые можно отслеживать независимо и отмечать как «выполненные», не беспокоясь о том, что мы упустили один пункт из списка в 53 пункта в исходном сообщении.

6 лайков

Хорошо, сделаю.
Опубликовал первую тему здесь: WAVE issues from homepage, но, похоже, у меня пока нет прав для добавления тегов.

9 лайков

Чтобы немного подробнее пояснить:

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

Надеюсь, это немного проясняет ситуацию. Знание того, что элемент является панелью инструментов, имеет ценность только в том случае, если он ведёт себя как панель инструментов. В противном случае это лишь отвлекает.

5 лайков

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

Но я не мог понять, как попасть в административную панель моего сайта. Я, конечно, могу перейти на /admin, но ссылка на сайт всё ещё недоступна с клавиатуры ни одним из найденных мной способов. Это немного усложняет задачу, когда я прошу пользователей скринридеров помочь мне с модерацией.

Затем я попытался написать этот ответ 5 минут назад, но каким-то образом нажал либо кнопку «Изменить», либо «Цитировать». Это отправило меня в то, что выглядело как редактируемая версия моего предыдущего сообщения. Я попробовал нажать Enter на ссылке с надписью «Отмена», но это не сработало. Перезагрузка страницы тоже не помогла. В итоге я отправил ответ, затем нашёл и взаимодействовал с недоступным модальным окном, похожим на то, о котором я сообщал изначально, чтобы отменить сообщение.

Что-то изменилось в этом отношении или уже есть публичный дорожный план? Как пользователь скринридера, которому приходится взаимодействовать с сообществами Discourse, хочу я этого или нет, я могу заставить это работать для себя, но мне не очень комфортно просить сообщество незрячих людей использовать это — или, по крайней мере, просить их создать сообщество, которым они будут наслаждаться на Discourse.

Спасибо.

5 лайков

К сожалению, после этого появилось модальное окно с вопросом, что вы хотите сделать с черновиком (удалить/сохранить/отменить), и, похоже, захват фокуса модального окна не работает…

5 лайков

Discourse мне подходит, но я бы определённо хотел увидеть некоторые улучшения в области доступности. Прошло уже довольно много времени с тех пор, как я пользовался административным интерфейсом или управлял форумом на Discourse, но за три месяца, как мне кажется, должен был быть достигнут значительный прогресс.
Я понимаю, что ARIA может быть сложной задачей, но это никоим образом не означает, что прогресс невозможен. @nolan, я сталкивался с той же проблемой — мне потребовалось время, чтобы понять, почему поле редактирования не исчезло после нажатия кнопки «Отмена». Я бы очень хотел в будущем использовать Discourse как платформу для своего собственного сообщества, но, возможно, мне придётся пересмотреть это решение, если улучшения доступности не будут внедрены. И мне бы не хотелось возвращаться к PHP.
У вас фактически есть человек, готовый помочь с вопросами доступности. Извините, если я звучу нетерпеливо — я знаю, что это сложная задача и вам непросто. Но и @nolan, и я сами определённо готовы помочь, в любом случае. Я с радостью настрою тестовый экземпляр Discourse.

7 лайков