No estoy seguro de si esto es conocido o si se está rastreando en algún lugar. De ser así, agradecería los enlaces. Pero, aunque la situación está mejorando, la experiencia de usar Discourse con un lector de pantalla presenta algunos desafíos que me gustaría documentar.
Soy usuario de lector de pantalla y quería configurar una instancia autoalojada dirigida principalmente a usuarios ciegos. Normalmente no recomiendo Discourse debido a problemas de accesibilidad, pero están haciendo que el autoalojamiento con las funciones que deseo sea muy fácil, por lo que me entristece que la accesibilidad no esté del todo resuelta. Estos son algunos de los desafíos que estoy enfrentando:
Los menús desplegables que mi lector de pantalla reporta como HTML <select/> están casi completamente rotos. Se expanden mediante las convenciones normales del teclado, pero ahí termina la accesibilidad. Los problemas comenzaron cuando tuve que seleccionar un idioma durante la configuración. No estoy seguro inmediatamente si “Inglés: EE. UU.” estaba seleccionado por defecto, pero cuando fui a investigar, había logrado configurar el idioma en español y tuve dificultades para volver a cambiarlo. Finalmente encontré la lista con mi lector de pantalla y logré corregirlo. Pero casi todos los menús desplegables están rotos. No quiero decir “todos” por si acaso hay alguno en algún rincón lejano de la interfaz que funcione, pero ninguno de los que he probado funciona en absoluto.
No puedo encontrar una forma de acceder a la interfaz de administración sin navegar directamente. Las pantallas de configuración me indicaron que estaba bajo el icono de engranaje, pero no puedo encontrar una representación textual de lo que podría ser el icono de engranaje, ni ninguno de los controles accesibles por teclado que he encontrado parece enlazar finalmente a una interfaz de administración. Por ahora, simplemente voy a /admin, pero esto me hace preguntarme qué herramientas podría no estar descubriendo porque no puedo encontrar este engranaje.
Relacionado con el menú desplegable de configuración, no puedo usar los menús desplegables/selecciones en la parte superior de las listas de categorías para navegar a las listas de categorías. Sé que existe el enlace Categorías, que es lo que generalmente uso. Pero sería agradable que esos selectores funcionaran.
Siempre que no me registro en un Discourse, se me dice que debería hacerlo en parte porque el foro recuerda dónde dejé de leer. Esto nunca ha funcionado para mí con un lector de pantalla. ¿Cómo se supone que debe funcionar? ¿Debería hacer clic en el enlace para mover el foco a la publicación que leí por última vez?
Y no relacionado con mi sitio, pero la experiencia de registro modal aquí presentó algunos desafíos. Intenté registrarme por correo electrónico, pero su instancia rechazó mi dirección de correo .info que he usado durante casi 17 años y que funcionó perfectamente en mi propio servidor. Luego me registré a través de Google, pero el modal que se me mostró al regresar presentó algunos desafíos:
No capturó el foco del teclado, por lo que tuve que buscarlo e interactuar con él yo mismo.
Mientras intentaba hacer eso, la lista de temas con desplazamiento infinito estaba agregando nuevos temas, lo que hacía más difícil que el foco llegara realmente al diálogo. No recuerdo exactamente cómo logré moverme más rápido de lo que aparecían los temas (todavía no he tomado mi café), pero aquí estoy.
Así que, algunas preguntas:
Realmente quiero quedarme con Discourse si puedo. ¿Cuánto de esto puedo cambiar en mi propio sitio? En particular:
¿Puedo eliminar los selectores de la lista de categorías, para que los usuarios tengan que interactuar con el enlace de la lista de categorías por ahora?
¿Puedo eliminar el selector de categoría en las páginas de nuevo tema, para que los usuarios primero deban ingresar la categoría en la que quieren publicar y no puedan accidentalmente crear publicaciones sin categoría o confundirse?
¿Puedo hacer ambas cosas de una manera que facilite las actualizaciones? Preferiría no editar las plantillas estándar y bifurcar el proyecto si no es necesario, ni tampoco quiero necesariamente un tema completamente nuevo.
¿Se está rastreando este trabajo en algún lugar y hay alguien dedicado a abordarlo? Los foros de Discourse se están comiendo internet. Por dondequiera que mire, los proyectos o comunidades en las que paso tiempo las están adoptando. ¡Incluso, como usuario ciego, yo quiero ejecutar Discourse porque, nuevamente, ustedes hacen esto tan fácil. Solo no quiero que la accesibilidad de una herramienta tan crucial sea una idea tardía o que juegue perpetuamente a ponerse al día con el nuevo desarrollo.
Esa es una publicación muy reflexiva, @nolan. Estoy seguro de que otros miembros del equipo se pronunciarán sobre tus preguntas, pero ¿podrías compartir tu configuración para que un desarrollador pueda intentar reproducir los problemas que estás experimentando? Es decir, qué sistema operativo, qué lector de pantalla, etc.
Windows 10, lector de pantalla NVDA. Aunque, para ser delicados, está tan roto que probablemente no funcione bien en ningún lado, así que casi cualquier combinación de sistema operativo/lector de pantalla probablemente se encontrará con esto.
¡Gracias por tus comentarios! Sabemos que aún no hemos alcanzado el nivel deseado en accesibilidad y hemos estado trabajando más en ello recientemente. A finales de 2020, realizamos una auditoría de accesibilidad de terceros para las páginas no administrativas más importantes de Discourse y hemos comenzado a abordar los problemas de alta prioridad en las últimas semanas.
Ahora que lo mencionas, entiendo por qué podría ser difícil encontrar el menú de administración. El enlace para el menú se encuentra dentro de uno de los menús principales del encabezado… el aria-label dice “ir a otra lista de temas o categoría”… lo cual definitivamente no deja claro que hay algunos enlaces de administración dentro.
En cuanto al mensaje que dice que Discourse recuerda dónde te quedaste… el comportamiento esperado es que, al entrar al tema, saltes directamente al punto donde dejaste de leer. Acabo de probar la navegación con el teclado y puedo confirmar que no está colocando el foco en el lugar correcto.
Muchos de nuestros menús desplegables son una implementación personalizada, y esa es una de las áreas que se nos ha señalado para mejorar la accesibilidad. También somos conscientes de que nuestros modales no atrapan el foco, lo que dificulta acceder a ciertos contenidos, especialmente en páginas con desplazamiento infinito como la que experimentaste.
En relación con tus preguntas sobre quedarte con Discourse… todo lo que mencionaste es posible; se trataría de unas pocas líneas de CSS para ocultar esos elementos. Ese CSS tendría que estar en un tema, pero podría existir dentro de un componente de tema, que se puede añadir a cualquier tema existente (así que no tendrías que cambiar tu tema principal). Los temas son mucho mejores para el proceso de actualización, ya que existen por encima de Discourse… editar plantillas o bifurcar el proyecto, como mencionaste, hace que las actualizaciones sean muy difíciles.
Etiquetamos los informes de problemas de accesibilidad aquí en Meta con la etiqueta accessibility para que sea más fácil encontrarlos en un solo lugar… pero dicho esto, el informe de accesibilidad de terceros y el trabajo posterior que mencioné anteriormente no se están rastreando públicamente.
Realmente agradecemos tus comentarios aquí, especialmente considerando que requirió un esfuerzo adicional publicarlos. Espero que en los próximos meses Discourse se vuelva mucho más fácil de usar para ti.
Recibí una pregunta en una discusión del Fediverso de Robert Kingett, quien tiene una discapacidad visual y se identifica como “aceleracionista de la accesibilidad” en su perfil. La pregunta fue:
¿Cómo están haciendo que Social Hub sea accesible para lectores de pantalla y otras personas con discapacidad? Convulsiones, etc.
Dado que SocialHub utiliza Discourse, y la pregunta estaba relacionada con problemas de accesibilidad aquí, ofrecí copiar este hilo como un documento Markdown en un Gist de GitHub. Así que aquí está y puede ser utilizado por otras personas con discapacidad visual: Accessibility: Discourse with a screen reader · GitHub
Además, si esto no se ha mencionado, me gustaría señalarlo como una forma de obtener mejoras rápidas en accesibilidad:
Los lectores de pantalla aprovechan bien muchas de las etiquetas semánticas de HTML 5. No solo puedo navegar entre ellas de manera eficiente, sino que también me indican el tipo de contenido en el que me encuentro.
Sería ideal que las publicaciones estuvieran dentro de una etiqueta <article>, con el encabezado y el pie en los elementos <header> y <footer>, respectivamente. Si cambiar los elementos no es viable, el uso adecuado de los atributos role transmite el mismo significado.
Actualmente, es difícil leer hilos largos. Después del primer mensaje, tengo que desplazarme pasando la sección con temas recomendados y demás. Luego leo los mensajes siguientes de forma lineal, sin poder saltar los mismos encabezados que he escuchado un millón de veces, que solo difieren en la fecha, ni el pie con los mismos controles de mensaje. Ciertamente, hay ajustes avanzados de ARIA que mejorarían aún más la experiencia, pero cambiar las etiquetas o usar roles sería una solución de bajo esfuerzo con grandes beneficios, en mi opinión.
Tengo una actualización en nuestra cola de revisión que añadirá algunos fragmentos de marcado ARIA a las páginas de temas. Según la especificación, parece lógico marcar los controles debajo de las publicaciones y en la parte inferior de la página con el rol de barra de herramientas.
También tenemos un área de barra de herramientas de la línea de tiempo del tema que funciona como una barra de desplazamiento (ahora le he asignado el rol de barra de desplazamiento) y también contiene los botones “ir a la primera publicación” e “ir a la última publicación” (a los cuales les he añadido descripciones)…
Estos cambios estarán disponibles con las actualizaciones de Discourse la próxima semana.
Esto puede parecer obvio, pero lo mencionaré de todos modos. Ten en cuenta que no basta con simplemente añadir ARIA a estos controles y dar por terminado el trabajo. En otras palabras, marcar esas áreas como barras de herramientas sin seguir el patrón de barra de herramientas probablemente sea peor que no asignarles ningún rol. Si me encuentro con una barra de herramientas, espero que se comporte de ciertas maneras que no surgen automáticamente solo por añadir el rol. Solo quiero dejar esto claro, ya que un error común que veo al añadir accesibilidad es incluir estos roles sin implementar los comportamientos asociados de teclado. Así, termino frente a un montón de controles que no se comportan como espero, y luchar constantemente con esas expectativas es peor que no tenerlas desde el principio.
Espero que tenga sentido. Estoy encantado de responder cualquier pregunta adicional.
Hola Chris, el rol de scrollbar podría no ser exactamente lo que buscas aquí. Tendremos que verlo en acción, pero hasta ahora no lo he visto utilizado de esta manera. Es más bien algo similar a un elemento range en HTML5 que representa una posición de desplazamiento relativa de un contenedor. Los elementos “Ir al primer mensaje” e “Ir al último mensaje” son simples botones que pueden hacer scroll en la vista, sí, pero no creo que estos botones sean apropiados como contenido para un contenedor de barra de desplazamiento, el cual es necesario para obtener los atributos aria-value*.
P.D. En la comunidad de VS Code, soy conocido como el gurú de los roles ARIA. No sé exactamente qué me valió esa reputación, pero soy conocido por ser exigente con los roles. Pueden hacer más daño que bien, por lo que es probable que este cambio específico tenga que ser revertido. Estoy casi seguro de que así será.
Por curiosidad, ¿tienen en el equipo a alguien con enfoque en accesibilidad? Estoy emocionado por la reciente auditoría de accesibilidad y los cambios planificados, pero dado que Discourse impulsa una parte tan grande de internet, probablemente debería haber alguien con experiencia práctica trabajando junto a estos cambios y asesorando sobre ellos. Es muy fácil equivocarse y, sin querer, empeorar las cosas.
Como ejemplo, Slack afirma tener un enfoque en accesibilidad y de hecho intentan usar ARIA, pero sus intentos parecen haber hecho que el área de chat sea completamente inaccesible para mi lector de pantalla. O si es accesible, yo, con varias décadas de experiencia, no logro entenderlo. No quiero ver que Discourse tome ese camino sin querer.
En cualquier caso, hago esto y cosas similares por trabajo y estoy disponible. Además, uso varios foros de Discourse, así que contar con accesibilidad sería una mejora tangible en mi calidad de vida. Estoy encantado de hablar más con quien esté interesado.
@MarcoZehe, para nuestro control de línea de tiempo, dudé un poco sobre si usar el rol de barra de desplazamiento o el de control deslizante. Opté por el rol de barra de desplazamiento porque el control efectivamente desplaza la página y parece encajar con la descripción proporcionada por el W3C:
Un objeto gráfico que controla el desplazamiento del contenido dentro de un área de visualización, independientemente de si el contenido se muestra completamente dentro de dicha área.
Dicho esto, es un control bastante único que hemos desarrollado… ya que tanto desplaza la página como muestra tu posición dentro del rango actual de publicaciones (por ejemplo, indica que estás actualmente en la publicación 6 de 12). Es posible que no exista una forma adecuada de marcarlo para lectores de pantalla, y quizás sería mejor ocultarlo… ya que el desplazamiento normal de la página funciona como se espera sin él. Me gustaría probarlo y ver qué opinas al verlo en acción; si no funciona, podemos revertir los cambios.
Para responder a tu pregunta, @nolan, he asumido la responsabilidad de organizar las recomendaciones de accesibilidad y gestionar nuestra auditoría, aunque la mayor parte de mi experiencia previa en accesibilidad proviene de implementar especificaciones definidas por otros. No contamos con un experto dedicado a trabajar en accesibilidad a tiempo completo, ya que aún somos varias órdenes de magnitud más pequeños que Slack… pero esto podría ser algo para lo que necesitemos contratar a alguien en el meantime para hacerlo bien y no empeorar las cosas…
Gracias a ambos por sus respuestas, ¡realmente lo aprecio!
Haciendo seguimiento sobre el rol de barra de herramientas, para aclarar… ¿estás diciendo que el rol no vale la pena en absoluto a menos que siga este patrón según lo descrito por el W3C?
Implementa la gestión del foco para que la secuencia de tabulación del teclado incluya un punto de parada para la barra de herramientas y las teclas de flecha muevan el foco entre los controles de la barra de herramientas.
Si ese es el caso, no implementaré el rol hasta que podamos configurar correctamente el foco y los controles de las teclas de flecha.
Correcto, si utilizas el rol, prometes que también implementarás el patrón de diseño. Si aún no estás listo para proporcionar el patrón de diseño, tampoco uses el rol todavía.
¿Es este el lugar adecuado para informar sobre los hallazgos de mi propia auditoría de accesibilidad para una instancia de Discourse alojada, o debería iniciar un nuevo hilo?
Y:
el informe de accesibilidad de terceros y el trabajo posterior que mencioné anteriormente no se están haciendo públicos.
¿Existe alguna posibilidad de que esta decisión pueda ser revisada? Sería útil tener cierta transparencia al respecto que pueda compartir con mis clientes.
Para evitar que se pierda nada, recomiendo crear un nuevo tema de ux (etiquetado con accessibility) para cada hallazgo de tu propia auditoría. Si tus hallazgos están estrechamente relacionados, podría tener sentido usar el mismo tema para todos. Básicamente, queremos agrupar las cosas en pequeños bloques que puedan rastrearse de forma independiente y marcarse como “completados”, sin tener que preocuparnos por haber pasado por alto un elemento de una lista de 53 en la publicación original.
Usar el rol sin implementar el patrón sería algo así como estilizar algo para que parezca un botón y luego hacer que solo responda si alguien pasa el cursor sobre él y hace scroll con la rueda del ratón. Si navego con la tecla Tab hasta una barra de herramientas o la enfoco de otra manera, y esta expone todos sus botones por separado o no responde a las flechas, entonces se siente como ese extraño botón de la rueda del ratón. Tendrías que pensar antes de cada interacción, y eso que afirma comportarse de maneras en las que no lo hace.
Espero que esto aclare un poco las cosas. Saber que algo es una barra de herramientas solo es valioso si se comporta como una barra de herramientas. De lo contrario, es distractor.
¡Ay, qué decepcionante! Vine aquí a preguntar por el estado de todas esas actualizaciones que parecían estar en proceso cuando publiqué esto. Aún no he lanzado nuestra comunidad, pero el antiguo foro PHP está a punto de desaparecer, así que es ahora o nunca. Pensé que para entonces habría habido cambios increíbles.
Pero no pude averiguar cómo acceder al área de administración de mi sitio. Claro que puedo llegar a /admin, pero el enlace al sitio sigue sin ser accesible mediante el teclado de ninguna manera que haya encontrado. Eso lo hace un poco complicado cuando pido a usuarios de lectores de pantalla que me ayuden a moderar.
Luego intenté escribir esta respuesta hace 5 minutos, pero de alguna manera hice clic en el botón Editar o en el de Citar. Me llevó a lo que parecía ser una versión editable de un mensaje anterior que envié. Intenté presionar Enter en un enlace etiquetado como Cancelar, pero no funcionó. Tampoco funcionó recargar la página. Al final envié la respuesta y luego encontré e interactué con un modal inaccesible, como el que reporté al principio aquí, para descartar el mensaje.
¿Ha cambiado algo en este sentido o ya hay una hoja de ruta pública? Como usuario de lector de pantalla que debe interactuar con comunidades de Discourse quiera o no, puedo hacer que funcione para mí, pero no me siento muy cómodo pidiendo a una comunidad de personas ciegas que usen esto… o, al menos, que construyan una comunidad que disfruten en Discourse.
Desafortunadamente, eso abrió un cuadro de diálogo preguntando qué querías hacer con tu borrador (descartar/guardar/cancelar), y parece que la captura de enfoque del cuadro de diálogo está rota…
Discourse funciona para mí, pero definitivamente me gustaría ver algunas mejoras en accesibilidad. Ha pasado un tiempo desde que usé la interfaz de administración o administré un foro de Discourse, pero esperaría que se hayan logrado muchos avances en tres meses.
Entiendo que ARIA puede ser desafiante, pero eso en absoluto significa que no se pueda avanzar. @nolan, yo también sufrí ese mismo problema antes; me tomó un tiempo entender por qué el cuadro de edición no había desaparecido al hacer clic en “Cancelar”. Me encantaría usar Discourse como foro para mi propia comunidad en el futuro, pero podría tener que reconsiderarlo si no se realizan mejoras en accesibilidad. Y me dolería tener que volver a PHP.
Ustedes prácticamente tienen a alguien ofreciéndose a ayudarles con la accesibilidad. Perdón si sueno impaciente; sé que esto es complicado y difícil para ustedes. Pero tanto @nolan como yo estamos definitivamente dispuestos a ayudar, de todos modos. Estaría encantado de configurar una instancia de prueba de Discourse.