# AT-SPI

AT-SPI (del inglés, Assistive Technology Service Provider Interface) es un framework de accesibilidad independiente de plataforma que proporciona comunicación entre las tecnologías de apoyo o de asistencia (AT, del inglés Assistive Technologies) y las aplicaciones. Es el estándar de facto de accesibilidad para escritorios libres como GNU/Linux o OpenBSD, liderado por el proyecto GNOME.
Una manera habitual de explicar un framework de accesibilidad es mediante analogía con la arquitectura cliente-servidor. En este sentido, las tecnologías de apoyo, como los lectores de pantalla, serían los clientes y las aplicaciones serían los servidores. En esta arquitectura, tanto los clientes como los servidores necesitan comunicarse entre ellos, normalmente usando la tecnología de Comunicación entre procesos de la plataforma. Idealmente, el framework de accesibilidad expone la información de accesibilidad de los servidores a los clientes de forma transparente.
Normalmente, tanto la parte del cliente como la del servidor usan la misma API, y el framework de accessibilidad proporciona las implementaciones de la API para ambas partes. En el caso de GNOME, existe una API para la parte del cliente (AT-SPI) y otra para la parte del servidor (ATK) debido a razones históricas relacionadas con la tecnlogía de comunicación entre procesos empleada inicialmente.

## Implementaciones

AT-SPI fue diseñado inicialmente para usar CORBA, una tecnología basada en objetos de comunicación entre procesos/llamada a procedimiento remoto, como protocolo de transporte. La especificación de AT-SPI originalmente estaba tan vinculada a CORBA que estaba definida usando el lenguaje IDL (del inglés, Interface description language) de CORBA. AT-SPI usaba una implementación ligera y rápida de CORBA desarrollada por GNOME llamada ORBit, y un framework propio para el desarrollo de componentes CORBA llamado Bonobo.
El proyecto GNOME empezó a usar paulatinamente D-Bus en lugar de ORBit/Bonobo y se decidió que la versión 3.0 sería la primera en eliminar por completo todo uso de ORBit y Bonobo, y por tanto, se hizo necesario encontrar una implementación de AT-SPI basada en D-Bus. Las tareas de migración a D-Bus comenzaron en noviembre de 2006, que comenzaron con un estudio del rendimiento y un análisis de la arquitectura, disponibles en la wiki de GNOME. Los trabajos de implementación comenzaron en mayo de 2007 La versión de AT-SPI basada en D-Bus, AT-SPI versión 2, fue publicada de forma conjunta al lanzamiento de GNOME 3.0 en abril de 2011.

## Soporte

AT-SPI proporciona además un puente a ATK, de manera que todos aquellos sistemas de widgets o aplicaciones que implementan ATK automáticamente comunican todos sus eventos a AT-SPI. El sistema de widgets de GNOME, GTK+, aplicaciones de Mozilla como Firefox o Thunderbird para GNU/Linux implementan ATK, así que se comunican con AT-SPI de forma ipso-facto. No obstante, es también posible usar AT-SPI sin implementar ATK. La migración a D-Bus posibilitó que Qt añadiese soporte AT-SPI. Qt implementó su propio puente a AT-SPI que se lanzó en estado alfa en agosto de 2011 para su testeo y finalmente fue integrado en Qt para su uso general un año más tarde.

## Desarrollo

AT-SPI forma parte del Framework de Accesibilidad de GNOME que fue lanzado en 2001. Inicialmente, la mayor parte del desarrollo de ATK se realizó a través de la Oficina del Programa de Accesibilidad (APO, del inglés Accessibility Program Office) de Sun Microsystems, Inc. (ahora Oracle) con contribuciones de muchos miembros de la comunidad. Cuando Oracle adquirió Sun en 2010, se eliminaron puestos de trabajo a tiempo completo dedicados al desarrollo de componentes de accesibilidad de GNOME como el toolkit de accesibilidad ATK o el lector de pantalla Orca. Desde entonces, ATK es siendo mantenido principalmente por la comunidad GNOME.

## Mantenedores

El desarrollo de AT-SPI está liderado por sus mantenedores con la ayuda de la comunidad. Los mantenedores hasta la fecha han sido:
Actual:
* Mike Gorse
Anteriores:
* Mark Doffman
* Li Yuan

## Otros usos

AT-SPI también se usa para el testeo automático de interfaces de usuarios, a través de herramientas como Linux Desktop Testing Project o Dogtail.

## Licencia

ATK está publicado bajo la licencia GNU Library General Public License (LGPL) versión 2.