Accesibilidad en GNOME (formato WORD).

Anuncio
Accesibilidad
en
GNOME
1
1.
Cómo trabaja la Accesibilidad en GNOME: Arquitectura
de Accesibilidad de GNOME.
La Arquitectura de Accesibilidad de GNOME fue diseñada para proporcionar una interfaz
estándar entre:
 las tecnologías de asistencia (Assistive Technologies, AT's), por un lado, y
 las aplicaciones y el escritorio de usuario.
Las aplicaciones que ejecuta el usuario deben
poder ser accesibles para las personas con
discapacidad…
Antes de comenzar, vamos a señalar algunos de los acrónimos que utilizaremos y su
significado esencial.

AT, Tecnología de Asistencia: es una aplicación encargada de pedir y recopilar información
sobre la interfaz de usuario de la aplicación con la que esté trabajando para adecuarla a un
formato accesible. Además, puede transmitir acciones a dicha aplicación si ésta lo permite, es
decir, si es compatible.

ATK, Accessibility Toolkit: se trata de un conjunto de interfaces de accesibilidad. Dichas
interfaces serán implementadas por las aplicaciones en ejecución. De este modo, las AT’s
pueden obtener y mandar información a estas aplicaciones de usuario. Estas interfaces son
independientes del soporte de las aplicaciones (GTK, Motif o Qt).

AT-SPI, Assitive Technology Service Provider Interface: es una biblioteca que también
proporciona interfaces usadas por las AT's. Se combinará con la ATK para proporcionar una
accesibilidad óptima. Al contrario que ATK, AT-SPI está basada en CORBA, pero sus funciones
2
son prácticamente las mismas.

GTK: es una librería para crear GUI’s (Graphical User Interfaces). Funciona sobre muchas
plataformas basadas en UNIX e incluso en Windows.

GAIL, GNOME Accessibility Implementation Library: se trata de un conjunto de bibliotecas
que permiten la interacción entre las AT's y las aplicaciones que usen widgets GTK. Por tanto,
se trata de un puente entre ATK / AT-SPI y dichas aplicaciones.
1.1.
Vista general de la Arquitectura.
En este primer acercamiento, vamos a fijarnos en la parte de aplicación e interfaz de usuario,
dejando para más adelante la interacción con las AT's. De esta forma, iremos ampliando un poco los
conceptos citados en el apartado anterior.
Supongamos solo una cierta aplicación ejecutada por el usuario y una sola AT. Así,
simplificaremos la explicación, aunque ésta sea perfectamente extendible a una relación múltiple
entre aplicaciones usuario y AT’s.
Una condición necesaria para garantizar la accesibilidad en GNOME es que la información
de la aplicación usuario pueda ser recogida y transformada para que la AT haga uso de ella. Esa
transmisión de información necesita de un camino y un formato específico para poder comunicar
ambos extremos. Ese camino está compuesto de dos partes: el ATK y el AT-SPI.
- La misión del ATK es la de la comunicación directa con la aplicación usuario. No obstante,
es posible que no sea necesario cargar el ATK. Por ejemplo, Mozilla incluye la
implementación de ATK en sus aplicaciones; Java, por su parte, puede usar una librería de
accesibilidad propia.
- La misión del AT-SPI es la de transmitir la información recogida por ATK, transformarla y
propagarla directamente a la AT.
A grandes rasgos, este es el esquema de la Arquitectura de Accesibilidad en GNOME. Sin
embargo, el proceso de comunicación es más complejo, pues requiere la carga de librerías
específicas que permitan la interacción entre:
3
-
ATK y AT-SPI,
ATK y las aplicaciones basadas en GTK y
AT-SPI y la AT
De lo dicho hasta ahora, es necesario puntualizar que la comunicación descrita entre la
aplicación de usuario y la AT es recíproca, es decir, hay transmisión de información en ambos
sentidos.
Sobre el proceso de comunicación y su estructura interna hablaremos con más detalle en
apartados siguientes.
1.2.
GTK y la accesibilidad GNOME.
Muchas aplicaciones hacen uso de GTK para implementar las componentes gráficas de sus
interfaces. Para la correcta comunicación entre ATK y las aplicaciones GTK se carga la librería
GAIL.
2.
El diseño de AT-SPI.
AT-SPI (Assistive Technology Service Provider Interface) fue desarrollado para permitir a
las AT’s como los lectores de pantalla pudieran relacionarse con las aplicaciones usuario. AT-SPI
consta de:
- atk-bridge (puente-atk)
- Registry Daemon (demonio conocido como Accesibility Broker)
- cspi, una librería compartida
AT-SPI está basado en CORBA y bonobo. En el último apartado profundizaremos en lo
referente a CORBA y el debate abierto en la comunidad GNOME. La librería cspi facilita el trabajo
de los programadores de C, ya que ésta hace referecencia a la librería libspi, la cual requiere el uso
directo de llamadas tipo CORBA y bonobo.
2.1.
Relación del atk-bridge con Registry Daemon.
Atk-bridge enlaza ATK con AT-SPI. Ello permite la comunicación entre las AT’s y aquellas
aplicaciones que soportan AT-SPI. Al comienzo, atk-bridge inicializa el servidor bonobo, el cual a
su vez inicializa el Registry Daemon. Una vez activados, el atk-bridge comienza a registrar en el
Registry Daemon “escuchadores” para los eventos básicos que puedan aparecer.
El Registry Daemon, por su parte, cuando se inicializa realiza las siguientes tareas:
1) Activa la conexión al servidor bonobo si ésta no existía.
2) Crea un registro.
3) Dicho registro crea un escritorio.
4
4)
5)
6)
7)
2.2.
Al inicializar el escritorio, se crea un escritorio especial: el escritorio-ATK.
Este escritorio-ATK crea un objeto que servirá de ruta para el árbol del escritorio.
De esta ruta colgarán todas las aplicaciones registradas por Registry Daemon.
Los escritorios enviarán señales y los registros serán los encargados de gestionarlas
mediante “manejadores” de señales.
Cómo sucede el registro de aplicaciones.
Cuando una aplicación inicia su ejecución, la función gtk-module-init del atk-bridge es
llamada. Ello, a su vez, activa las llamadas pertinentes para que atk-bridge registre la aplicación con
Registry Daemon. Una aplicación es un árbol de objetos accesibles.
3.
El problema de base que presenta AT-SPI.
AT-SPI usa actualmente ORBit para su IPC (Inter-Process Communication), el cual es un
componente obsoleto de GNOME y en desuso sobre el escritorio KDE. La comunidad de
desarrolladores debate en la actualidad sobre la idoneidad de migrar AT-SPI a otro estándar IPC, el
D-Bus.
No existe un análisis completo de la interfaz AT-SPI trabajando bajo D-Bus, pero son
algunas las mejoras que plantea D-Bus sobre ORBit, como la rapidez en el envío de referencias de
objetos.
Actualmente, AT-SPI está definido por su IDL (Interface Definition Language). El IDL es
utilizado para describir los componentes software de una interfaz (procedimientos, métodos…)
mediante un lenguaje neutral, lo cual permite la comunicación entre componentes de software que
no comparten el mismo lenguaje de programación.
Es por ello, por la naturaleza neutral del AT-SPI, la posible futura migración del IDL al
protocolo D-Bus. No obstante, dicha migración plantea dos problemas:
1) Por el momento no existe un traductor fiable de IDL a lenguaje D-Bus.
2) Sería necesario reescribir las librerías básicas ligadas a ORBit, las cuales son fundamentales
(ATK / GAIL, cspi…).
Por suerte, las AT’s usan llamadas indirectas (wrappers) sobre ORBit, en lugar de llamadas
directas, lo cual podría permitir la creación de una API muy similar a la actual para esas librerías si
se llegara a usar el protocolo D-Bus.
3.1.
D-Bus.
Es un mecanismo IPC (Inter-Process Communication) y RPC (Remote Procedure Calling)
originalmente desarrollado para Linux, con la finalidad de reemplazar los IPC’s existentes bajo un
único protocolo unificado.
Usa un protocolo de transferencia de mensajes muy rápido, con latencia y uso de recursos
5
reducidos. A bajo nivel, las aplicaciones se comunican por D-Bus enviándose mensajes
mutuamente. Estos mensajes pueden contener tanto las llamadas a procesos remotos como sus
respuestas y los posibles errores asociados a ellos. Además, estos mensajes tienen un emisor y un
destinatario concretos, evitando la congestión que pueda provocar, por ejemplo, el envío en masa
(broadcasting). Para distinguirse entre ellas, las aplicaciones escogen un “nombre de servicio” con
el que serán identificadas unívocamente dentro del bus. Los servicios que se prestan unas
aplicaciones a otras son posibles gracias a la exportación de objetos, los cuales están
jerárquicamente organizados.
6
Descargar