Stable release | |
---|---|
Repository | |
License | GNU LGPL (version 2) [2] |
Website | wiki |
Assistive Technology Service Provider Interface (AT-SPI) is a platform-neutral framework for providing bi-directional communication between assistive technologies (AT) and applications. [3] It is the de facto standard for providing accessibility to free and open desktops, like Linux or OpenBSD, led by the GNOME Project.
One common nomenclature to explain an accessibility framework is a usual client-server architecture. In that way, Assistive Technologies (ATs), such as screen readers, would be the clients of that framework, and computer applications would be the server. In this architecture, client and server need to communicate with each other, usually using the IPC technology of the platform. Ideally the accessibility framework exposes this to the client and server in a transparent way.
Usually the API for both client-side and server-side applications are the same, and the accessibility framework provides a client-side and a server-side implementation of that API. In the case of GNOME, there are two different APIs, one for the client-side (AT-SPI) and a different one for the server-side (Accessibility Toolkit (ATK)) due to historical reasons related to the underlying technologies. [4]
AT-SPI was originally designed for using Common Object Request Broker Architecture, an object-based IPC/RPC technology, for its transport protocol. The AT-SPI specification itself was tied to CORBA as it was defined in CORBA IDL. AT-SPI used the GNOME project's own fast and lightweight CORBA implementation, ORBit, and its own framework for creating CORBA components, Bonobo. [5]
The GNOME project decided that the 3.0 release would be free of ORBit and Bonobo, meaning that a D-Bus AT-SPI solution was required. [6] [7] In an effort to move AT-SPI forward, a D-Bus project was started in November 2006. This took the form of a performance and design review available on the GNOME wiki. Work began on the implementation in May 2007. [8] The D-Bus version of AT-SPI, AT-SPI version 2, was released along with GNOME 3.0 in April 2011. [9] [10]
AT-SPI provides an ATK bridge, so all the widget systems or applications that implement ATK will automatically communicate all their events to AT-SPI. The GNOME widget system, GTK+, or Mozilla applications like Firefox and Thunderbird for Linux implement ATK, so they communicate out-of-box with AT-SPI. However, it is completely possible to use AT-SPI without implementing ATK. The D-Bus migration made possible that Qt added AT-SPI support. Qt implemented its own bridge to AT-SPI that was released in alpha status in August 2011 for testing purposes [11] and it was integrated into Qt for general use a year later. [12]
AT/SPI is part of the GNOME Accessibility Framework that was released in 2001. The main development force behind ATK was the Accessibility Program Office (APO) of Sun Microsystems, Inc. (now Oracle) with contributions from many community members. When Oracle acquired Sun in 2010 they cut developer jobs of full-time developers working on GNOME accessibility components like the Accessibility Toolkit ATK and the Orca screen reader. Since then, it is mainly maintained by the GNOME community.
ATK development has been led by their maintainers with the help of its community. The maintainers so far are: [13]
Current:
Previous:
AT-SPI can also be used for automated testing of user interfaces, with tools such as Linux Desktop Testing Project and Dogtail. [14]
AT-SPI is released under the GNU Library General Public License (LGPL) version 2. [2]
In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.
Gambas is the name of an object-oriented dialect of the BASIC programming language, as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic. Gambas is also the word for prawns in the Spanish, French, and Portuguese languages, from which the project's logos are derived.
Computer accessibility refers to the accessibility of a computer system to all people, regardless of disability type or severity of impairment. The term accessibility is most often used in reference to specialized hardware or software, or a combination of both, designed to enable the use of a computer by a person with a disability or impairment.
freedesktop.org (fd.o), formerly X Desktop Group (XDG), is a project to work on interoperability and shared base technology for free-software desktop environments for the X Window System (X11) and Wayland on Linux and other Unix-like operating systems. Although freedesktop.org produces specifications for interoperability, it is not a formal standards body.
GDK is a library that acts as a wrapper around the low-level functions provided by the underlying windowing and graphics systems. GDK lies between the display server and the GTK library, handling basic rendering such as drawing primitives, raster graphics (bitmaps), cursors, fonts, as well as window events and drag-and-drop functionality.
D-Bus is a message-oriented middleware mechanism that allows communication between multiple processes running concurrently on the same machine. D-Bus was developed as part of the freedesktop.org project, initiated by GNOME developer Havoc Pennington to standardize services provided by Linux desktop environments such as GNOME and KDE.
Accessibility Toolkit (ATK) is an open source software library, part of the GNOME project, which provides application programming interfaces (APIs) for implementing accessibility support in software.
IAccessible2 is an accessibility API for Microsoft Windows applications. Initially developed by IBM under the codename Project Missouri, IAccessible2 has been placed under the aegis of the Free Standards Group, now part of the Linux Foundation. It has been positioned as an alternative to Microsoft's new UI Automation API.
Microsoft UI Automation (UIA) is an application programming interface (API) that allows one to access, identify, and manipulate the user interface (UI) elements of another application.
Clutter is a discontinued GObject-based graphics library for creating hardware-accelerated user interfaces. Clutter is an OpenGL-based 'interactive canvas' library and does not contain any graphical control elements. It relies upon OpenGL (1.4+) or OpenGL ES for rendering,. It also supports media playback using GStreamer and 2D graphics rendering using Cairo.
java-gnome is a set of language bindings for the Java programming language for use in the GNOME desktop environment. It is part of the official GNOME language bindings suite and provides a set of libraries allowing developers to write computer programs for GNOME using the Java programming language and the GTK cross-platform widget toolkit.
Wayland is a communication protocol that specifies the communication between a display server and its clients, as well as a C library implementation of that protocol. A display server using the Wayland protocol is called a Wayland compositor, because it additionally performs the task of a compositing window manager.
GTK is a free software cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the Wayland and X11 windowing systems.
GNOME, originally an acronym for GNU Network Object Model Environment, is a free and open-source desktop environment for Linux and other Unix-like operating systems.
Mono is a free and open-source .NET Framework-compatible software framework. Originally by Ximian, it was later acquired by Novell, and is now being led by Xamarin, a subsidiary of Microsoft and the .NET Foundation. Mono can be run on many software systems.
Bonobo is an obsolete component framework for the GNOME free desktop environment. Bonobo is designed to create reusable software components and compound documents. Through its development history it resembles Microsoft's OLE technology and is GNOME's equivalent of KDE's KParts.
Client-side decoration (CSD) is the concept of allowing a graphical application software to be responsible for drawing its own window decorations, historically the responsibility of the window manager.
GNOME 1 is the first major release of the GNOME desktop environment. Its primary goal was to provide a consistent user-friendly environment in conjunction with the X Window System. It was also a modern and free and open source software alternative to older desktop environments such as the Common Desktop Environment (CDE), but also to the K Desktop Environment (KDE). Each desktop environment was built-upon then proprietary-licensed widget toolkits, whereas GNOME's goal from the onset, was to be freely-licensed, and utilize the GTK toolkit instead.