Merge "[TIZEN] Introduce atspi_collection_get_matches_in_matches API." into tizen_8.0
[platform/upstream/at-spi2-core.git] / README.md
1 # Assistive Technology Service Provider Interface (AT-SPI)
2
3 This repository contains the [DBus][DBus] interface definitions for AT-SPI, the Assistive
4 Technology Service Provider Interface — the core of an accessibility stack for free
5 software systems.  It also contains the basic daemons of the accessibility stack.
6
7 The version control repository and bug tracker are at https://gitlab.gnome.org/GNOME/at-spi2-core/
8
9 The code in this repository is not intended for application programmers.  To write
10 accessible applications, look into [ATK][ATK] or your programming language's bindings for
11 the `xml` DBus interfaces mentioned below.
12
13 While this module started within the [GNOME][GNOME] project's umbrella, it is not used
14 only in GNOME.  Other sources of relevant information about AT-SPI and Accessibility
15 include:
16
17 * [GNOME Accessibility wiki][gnome-a11y-wiki]
18 * [KDE Accessibility wiki][kde-a11y-wiki]
19 * [Accessibility documentation for GNOME users][docs-users]
20
21
22 ## Summary of this repository's contents
23
24 * `xml` - DBus interfaces for accessibility, described in DBus's XML introspection format.
25   Ideally, your programming language's implementation of DBus makes use of these files to
26   generate callable bindings.
27   
28 * `bus` - Launcher for the session's accessibility bus; see its [README.md](bus/README.md)
29   for details.
30
31 * `registryd` - Daemon that keeps track of accessible applications in the user's session,
32   and lets them talk to each other and to assistive technologies (ATs) like screen
33   readers.
34
35 * `atspi` - Hand-written binding for the `xml` DBus interface above, for use from C with
36   [GObject][GObject].  This is not normally what you would use; use a language-specific
37   binding instead.  This module is for use mainly by [`at-spi2-atk`][at-spi2-atk].
38
39 * `dbind` - DBus utilities for use by `atspi` above.  `atspi` was written before the more
40   modern C bindings like [GDBusConnection][GDBus] were available, so there is a lot of
41   hand-written IPC here.
42
43 * Documentation for the Gitlab [Continuous Integration pipeline](devel-docs/gitlab-ci.md).
44
45 ## Historical note
46
47 Versions 1.x of AT-SPI were based on [CORBA][CORBA] for inter-process communication (IPC),
48 using GNOME's ORBit implementation thereof.  During the GNOME 2 and 3 release series,
49 CORBA was phased out in favor of [DBus][DBus], a more modern IPC mechanism.
50
51 The original CORBA interfaces for AT-SPI were based on Java's implementation of
52 accessibility.  Later, these CORBA interfaces were translated to DBus.  This is why the
53 interfaces sometimes have a 1990s feeling to them.
54
55 The project was started with a D-Bus performance review, the results of which are available
56 on the GNOME wiki. Keep in mind that the D-Bus AT-SPI design documents on this page have
57 not been kept up to date.
58
59         https://wiki.gnome.org/Accessibility/Documentation/GNOME2/ATSPI2-Investigation
60
61
62 [CORBA]: https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture
63 [DBus]: https://www.freedesktop.org/wiki/Software/dbus/
64 [GObject]: https://docs.gtk.org/gobject/
65 [at-spi2-atk]: https://gitlab.gnome.org/GNOME/at-spi2-atk
66 [GDBus]: https://docs.gtk.org/gio/class.DBusConnection.html
67 [ATK]: https://gitlab.gnome.org/GNOME/atk/
68 [GNOME]: https://www.gnome.org
69 [docs-users]: https://help.gnome.org/users/gnome-help/stable/a11y.html
70 [gnome-a11y-wiki]: https://wiki.gnome.org/Accessibility
71 [kde-a11y-wiki]: https://community.kde.org/Accessibility