[Post Invitado] Estándares y accesibilidad

 

Como sabéis desde Microsoft estamos lanzando una campaña sobre la concienciación de la importancia de uso de estándares. Teniendo en cuenta que uno de los aspectos fundamentales es la accesibilidad, creemos que el punto de vista de Juanjo Montiel es muy interesante, por eso le hemos pedido que escriba un post. Conocí a Juanjo Montiel en un evento en Barcelona, donde nos ofreció una charla sobre todo didáctica, a la vez que cautivadora e interesante.

Para quienes no lo conozcáis, Juanjo Montiel (@kastwey) es un desarrollador de software que trabaja en el grupo Ica y vive en Barcelona. Cuenta con más de 7 años de experiencia en el desarrollo accesible de sitios webs y aplicaciones de escritorio para Windows y Linux, escribe sobre sus experiencias en el mundo de la programación en su blog: programad.me. Es un experto en consultoría de accesibilidad y usabilidad, de tecnologías de apoyo para personas con diversidad funcional y del concepto de diseño para todos

 

La importancia de la accesibilidad

Cuando desarrollar productos accesibles es tu única posibilidad de poder utilizarlos más tarde, no piensas en la accesibilidad como en algo que ya harás si tienes tiempo, sino que es algo con lo que has de trabajar desde la concepción de tu producto; desde la fase de diseño hasta la fase de despliegue. Y no es más complicado. Simplemente, es una forma distinta de trabajar.

La accesibilidad en el software siempre ha sido algo de lo que se ha escuchado hablar por aquí y por allá, pero nunca algo de lo que se sepa demasiado.
Normalmente, al menos en España, no hay conciencia de la importancia de desarrollar productos accesibles: ni se estudia en las carreras o ciclos, ni las empresas lo requieren a la hora de contratar a trabajadores.
Incluso existe una ley: UNE139803:2012, que regula la obligatoriedad de que ciertos sitios web cumplan con los estándares de accesibilidad, en concreto, de acuerdo a las pautas de accesibilidad para el contenido web (WCAG) 2.0, pero casi nadie la cumple y casi nadie es sancionado.

Cuando desarrollamos un sitio web, normalmente no tenemos en cuenta la accesibilidad; y no es debido a falta de interés, sino a la falta de conocimiento y sobre todo, a la falta de información sobre el impacto positivo que supone que nuestro desarrollo sea accesible.

Sin embargo, según un informe de la Organización Mundial de la Salud de 2011 (WHO | World report on disability), más de mil millones de personas en el mundo padecen algún tipo de discapacidad. ¡más del catorce por ciento de la población mundial! ¿Realmente vamos a dejar fuera a un catorce por ciento de nuestro público cuando uno de los pilares de la World Wide Web es su universalidad? ¿De verdad es un requisito tan marginal como para que apenas se estudie?

Siempre he pensado que los desarrolladores tendrían mucho más en cuenta la accesibilidad, si conocieran de primera mano lo que esto supone para las personas con discapacidad. No es lo mismo hablar de ello, que conocer una historia.
Cuando se habla de accesibilidad, se hace como algo abstracto, un conjunto de reglas y recomendaciones que nuestro sitio ha de cumplir... ¿pero por qué ha de cumplirlos? ¿a quién ayuda? ¿por qué es importante hacerlo así?

Cuando tu sueldo depende de la accesibilidad de las herramientas

Soy una persona ciega que además se dedica al desarrollo de software, y llevo más de quince años desarrollando software sin ver, en el sentido purista de la palabra, ni una sola línea de código. Eso sí, las escucho hasta en sueños ;)

Ahora, Poneros un segundo en mi lugar, e imaginad lo que sería para vosotros tener, cada vez que sale una nueva versión de vuestra herramienta de trabajo, el miedo a que esa herramienta haya dejado de ser accesible. De repente, ya no podríais trabajar con ella. Tendríais que buscar otra herramienta similar, o conformaros con un editor simple de código, que os haría bajar en productividad, y convertiría lo que antes era cómodo y sencillo en un proceso largo, lento y tedioso en comparación a cómo lo hacíais antes... Y además, en vuestra empresa no rendiríais igual que vuestros compañeros, porque ellos tendrían herramientas más potentes. ¡A lo mejor os echarían!

Y resulta que esto no es culpa de vuestra capacidad de trabajo, sino de que, debido a que los desarrolladores de esa herramienta no han tenido en cuenta la accesibilidad, vosotros ya no podéis trabajar con ella, y os habéis quedado sin igualdad de oportunidades con respecto a las personas sin discapacidad.

Afortunadamente, cada vez que sale una nueva versión de Visual Studio, esta aumenta su accesibilidad en lugar de lo contrario, pero en mi día a día, utilizo muchas más herramientas que poseen mayor o menor grado de accesibilidad, y que a veces, de repente, tras una actualización, dejan de ser accesibles y tengo que buscarme la vida para encontrar otra, o si se trata de una herramienta corporativa, cruzar los dedos y buscar otras formas de interactuar con ella (las APIS son mi salvación en muchas ocasiones! :) ).

Manejando un ordenador siendo ciego

Trabajo con un software denominado lector de pantallas (screen reader), que me lee todo lo que aparece en la pantalla de mi ordenador, pero con un matiz: la interfaz tiene que ser accesible para que el lector de pantallas se entere.

Imaginad a un lector de pantallas como una especie de crawler, un bot, como el que tiene Google y otros indexadores. El lector de pantallas consulta al sistema operativo bajo el que se ejecuta, y extrae la información completa de un programa, transformándola y adaptándola para transmitirla después al usuario que está escuchando al otro lado.

Existen numerosas ayudas técnicas para personas con discapacidad. Entre ellas, hay dos tipos de ayudas técnicas que no podrían funcionar sin obtener información pormenorizada de todos los elementos de las interfaces con las que trabajan: los lectores de pantalla (pues tienen que transmitir la información textual mediante síntesis de voz), y los reconocedores de voz (pues tienen que ser capaces de interactuar con los elementos de la interfaz invocándolos por su tipo o nombre).

Ahora imaginad tres posibles escenarios con este tipo de ayudas:

Escenario uno: El programa pasota: Una relación sin futuro.

Cuando el lector de pantallas le dice al programa: ¡Hola! ¡háblame de ti! ¿quién eres? El programa se queda con cara de tonto y no contesta, porque no sabe contestar. De hecho, no sabe ni que le están preguntando.

Esto ocurre cuando el programa no es capaz de transmitir la información de estado al sistema operativo y al lector de pantallas, porque no tiene soporte de accesibilidad, o los controles que se utilizan dentro de la interfaz no son accesibles. Es el caso, por ejemplo, de los programas que utilizan GTK+ en Windows. La capa de accesibilidad del sistema operativo (UIA y MSAA en Windows), no tiene forma de acceder a la información de GTK, porque no se han creado los providers necesarios para que exista esa comunicación.

Escenario dos: Jugando al despiste

La conversación podría ser algo así:
- ¡Hola! ¡háblame de ti! ¿quién eres?
- ¿Yo? Soy una imagen.
- ¡Ah! ¿Y cómo eres?
- No lo sé, nunca me han descrito, pero te puedo decir que tengo un src que se llama /img/logo.png. ¿Te sirve?
- ¡No mucho, pero algo es algo! Y... Oye... ¿tu hermano?
- ¿Yo? Me llamo span.
- ¿Y cómo eres?
- Pues tengo dentro un texto que dice: ¡haz click aquí para iniciar sesión con facebook!
- ¿Que haga click? Pero... ¡si no eres un botón, eres un span!
-- Sí, me llamo Span, ¡ya te lo había dicho! Pero puedes pulsarme, tengo un onclick...
- No entiendo nada, si no eres un botón, ¿por qué habría de pulsarte?
- ¡porque me han programado para eso! Púlsame, porfa, que es lo único que sé hacer!
- Uf, qué complicado. Esto es un agobio. Si eres un span, eres un span, y no se te puede pulsar.
- Pero sí que se...
- Que no, y punto!

En este caso, sí existe el canal de comunicación, pero el desarrollador no ha utilizado de forma correcta el marcado html ni las recomendaciones de accesibilidad que tiene a su disposición.
Por un lado, no ha etiquetado la imagen para que el lector pueda transmitir su descripción al usuario, y por otro, ha puesto una etiqueta span con un onclick, en lugar de utilizar un botón.
Cuando esta interfaz llega al usuario a través del lector de pantallas, lo más probable es que el usuario no sepa que el span es interactivo, aunque por intuición sea evidente porque el nombre ya lo sugiere. Pero imaginad que el span es vuestro nombre de usuario, y que al hacer click se abre vuestro perfil... Si el lector no sabe que ese elemento tiene función de botón, al usuario no se le va a ocurrir pulsarlo.

Escenario tres: Una comunicación rica, fluida y fructífera. ¡tal para cual!

En este escenario, el lector de pantallas es capaz de obtener toda la información que necesita del programa al que pregunta: estado de los controles, tipos, ayudas contextuales si fueran necesarias, descripciones de las imágenes, estructuras jerárquicas coherentes... y un sin fin de detalles que hay que tener en cuenta para poder trasladar una interfaz gráfica a una interfaz auditiva que me permita a mí, usuario ciego, trabajar de forma cómoda con la aplicación.

Esto puede parecer muy complicado de lograr, pero nada más lejos de la realidad, sobre todo cuando hablamos de la web.

- ¿Y cómo lo consigo?
- Pues un punto de partida es utilizar los estándares que han sido creados a tal efecto, y que debido precisamente a su concepción como estándares, ya contemplan los mecanismos necesarios para que esos sistemas puedan ser accesibles.
Entonces... ¿esto significa que por el hecho de utilizar estándares mi desarrollo va a ser accesible per se?
No exactamente, pero tendrás mucho camino recorrido.

Estándares web

Cuando descargo algún programa para Windows, en más del 40% de las veces el programa no es accesible, o de lo poco accesible que es, resulta muy incómodo de utilizar. ¡Imaginad lo frustrante que es esto ! Sin embargo, cuando accedo a una página web, en la mayor parte de los casos, con más o menos problemas, puedo acceder a la herramienta o información que estoy buscando.

¿Y esta diferencia en cuanto al nivel de accesibilidad, a quién debemos agradecérsela?
Podríamos pensar que a los desarrolladores y diseñadores, y tendríamos razón en muchos casos. Pero una web es de facto más accesible que un software de escritorio gracias al uso de estándares abiertos en su construcción.

Los estándares web son el conjunto de recomendaciones y buenas prácticas que sirven como base para que las tecnologías relacionadas con la web, sean cada vez más robustas, interoperables y accesibles. El W3c (World Wide Web Consortium), desarrolla numerosos estándares relacionados con la web. Tecnologías como HTML5, XHTML, CSS y XML, son estándares nacidos del W3C, y permiten que un sitio web desarrollado correctamente bajo dichos estándares sea accesible independientemente del navegador, sistema operativo, dispositivo o incluso de las características propias del usuario: localización geográfica, velocidad de conexión, edad o discapacidad, entre otras.

Algunas razones por las que los estándares web facilitan la accesibilidad de un sitio son:

  • El sitio web cumple con un conjunto de especificaciones conocidas (un lenguaje que entienden los navegadores a la perfección). Esto hace que los navegadores transmitan de forma adecuada esa información hasta el lector de pantallas.
  • La separación entre presentación y contenido hace que las personas con baja visión puedan trabajar con hojas de estilo personalizadas, para adaptar la apariencia de la web a sus necesidades.
  • Al utilizar un lenguaje estándar conocido por todos los navegadores, aunque utilicemos un navegador poco corriente, muy probablemente entenderá el tipo de documento que se le está presentando, y será capaz de interpretarlo adecuadamente.
  • Las ayudas técnicas conocen los estándares y son capaces de leer la información correctamente. Si se usa un lenguaje no estándar que solo conocen algunos navegadores y que las ayudas técnicas no saben interpretar, no podrán transmitir esa información correctamente al usuario, y la navegación no será consistente.

Para que un sitio web sea totalmente inaccesible, hay que hacerlo bastante mal, ¡y vaya si algunos lo hacen! Imposibilidad de navegar con teclado, captchas no accesibles, imágenes sin etiquetar, falta de estructura, campos de formulario sin etiquetar, javascript mal diseñado... son algunas de las malas prácticas que pueden convertir un sitio web en imposible de navegar para personas con discapacidad.

pero gracias al uso de estos estándares, la incidencia de páginas inutilizables es pequeña en comparación con el software de escritorio que corre en ecosistemas como Windows, Linux o MAC.
¿Y por qué? Pues básicamente, porque en el software de escritorio existe tal cantidad de tecnologías subyacentes que no en todas se tiene en cuenta la accesibilidad a la hora de generar las interfaces.

Un ejemplo muy clarificador: tengo un cliente que tiene una tienda y quería cambiar de TPV. Probé un montón de programas para Windows, todos inaccesibles, y al final, me quedé con uno gratuito basado en web, con el que pude enseñar al cliente y manejar todos los aspectos del TPV . ¿Cien por cien accesible? ¡Qué va! pero con algunos trucos sí que he podido usarlo.

En una web, puedes mirar el código, manipular el DOM con herramientas como la "Web Developer", y así, modificar el comportamiento de un sitio web si sabes cómo hacerlo; pero en un software de escritorio, la interfaz es inmutable y poco podemos hacer si la tecnología subyacente no es capaz de transmitir información sobre sí misma a la capa de accesibilidad del sistema operativo.

Aunque un sitio web no es accesible solo por usar los estándares, utilizar los estándares sí que es requisito indispensable para que un sitio web sea accesible.

Cumplir con las pautas de accesibilidad para el contenido web (WCAG), que es el estándar de accesibilidad aceptado a nivel mundial, requiere cumplir, a su vez, con los estándares web, así que, si te preocupas por la accesibilidad, ¡deberás utilizarlos!

 

Sé accesible. Sé estándar. Sé universal. Sé parte de la esencia de la World Wide Web.

El poder de la web reside en su universalidad. El acceso para todos independientemente de su discapacidad es un aspecto fundamental.

Tim Berners-Lee, Director del W3C e inventor de la World Wide Web.

Si eres un desarrollador o diseñador web, acuérdate de que estás trabajando bajo una tecnología que nació con la premisa de ser universal y de llegar a todo el mundo. ¡así que no te olvides de mí, que al igual que tanta gente con discapacidad, formamos parte de él.
¡y no me hagas meterle mano a tu DOM para poder manejar tu sitio, que es de mal gusto, y además, no todos sabemos hacerlo! ;)

 

Juanjo Montiel
@kastwey
https://www.programad.me/