<?xml version="1.0" encoding="utf-8"?>
<!-- -*- indent-tabs-mode: nil -*- -->
<appendix id="apx-modules">
  <title>Quick Module Overview</title>

  <para>This appendix provides a quick overview of the libraries included
  in the GNOME desktop and developer platform.  Libraries are listed by
  module with a brief description and a link for more information in this
  document, where possible.</para>

<section id="apx-modules-platform">
  <title>Platform Modules</title>

  <para>Modules in the GNOME developer platform make strict guarantees
  about API and ABI stability.  Applications developed against platform
  modules can be assured of running unmodified for the duration of the
  GNOME 2 lifecycle.</para>

  <variablelist>
    <varlistentry>
      <term>GConf</term>
      <listitem><para>GConf provides the daemon and libraries for storing
      and retrieving configuration data.  GConf is discussed in <xref linkend="gconf"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>ORBit</term>
      <listitem><para>ORBit is a fast and lightweight CORBA server.  GNOME's
      component architecture, Bonobo, is built on top of CORBA.  CORBA is
      discussed in <xref linkend="bonobo-corba"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>atk</term>
      <listitem><para>ATK provides the set of accessibility interfaces that
      are implemented by other toolkits and applications.  Using the ATK
      interfaces, accessibility tools have full access to view and control
      running applications.  ATK is discussed in <xref linkend="a11y"/>.</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>gail</term>
      <listitem><para>GAIL provides an implementation of the ATK interfaces for
      GTK+ and GNOME libraries, allowing accessibility tools to interact with
      applications written using these libraries.  Accessibility is discussed
      in <xref linkend="a11y"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gio</term>
      <listitem><para>A part of GLib, the GIO library provides a high-level
      API for accessing files and folders.  Together with the GVFS library,
      it provides a file system abstraction that allows transparent access
      to local and remote files.  GIO is discussed in
      <xref linkend="gio"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>glib</term>
      <listitem><para>GLib provides the core application building blocks for
      libraries and applications written in C.  It provides the core object
      system used in GNOME, the main loop implementation, and a large set of
      utility functions for strings and common data structures.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gnome-vfs</term>
      <listitem><para>GnomeVFS is a deprecated library for accessing files and
      folders.  It is superseded by GIO and GVFS.  Newly written code should
      use GIO instead.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gtk+</term>
      <listitem><para>GTK+ is the primary library used to construct user
      interfaces in GNOME applications.  It provides user interface controls
      and signal callbacks to control user interfaces.  GTK+ is discussed in
      <xref linkend="gtk"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gvfs</term>
      <listitem><para>GVFS provides a backend implementation for GIO, allowing
      access to numerous protocols with the GIO API.  Developers do not access
      GVFS directly.  Instead, applications written with GIO will automatically
      use GVFS on systems where it is enabled.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libIDL</term>
      <listitem><para>libIDL is a library for parsing Interface Definition
      Language (IDL) files, which are necessary for CORBA interfaces.  libIDL
      is used by GNOME's CORBA implementation, ORBit.  CORBA is discussed in
      <xref linkend="bonobo-corba"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libart_lgpl</term>
      <listitem><para>libart is a graphics library which can render vector
      paths.  It is used by the GnomeCanvas widget.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libbonobo</term>
      <listitem><para>Bonobo is a framework for creating reusable components
      for use in GNOME applications, built on top of CORBA.  Bonobo is
      discussed in <xref linkend="bonobo-corba"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libbonoboui</term>
      <listitem><para>The Bonobo UI library provides a number of user interface
      controls using the Bonobo component framework.  Bonobo is discussed in
      <xref linkend="bonobo-corba"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libglade</term>
      <listitem><para>Libglade is a library for constructing user interfaces
      dynamically from XML descriptions.  Libglade allow programmers to
      construct their user interfaces using a graphical interface builder
      application, and then import those interface definitions.  Libglade
      is discussed in <xref linkend="libglade"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libgnome</term>
      <listitem><para>The libgnome library provides a number of useful routines
      for building modern applications, including session management, activation
      of files and URIs, and displaying help.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libgnomecanvas</term>
      <listitem><para>The GnomeCanvas widget provides a flexible widget for
      creating interactive structured graphics.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libgnomeui</term>
      <listitem><para>The libgnomeui library provides additional widgets for
      applications.  Many of the widgets from libgnomeui have already been
      ported to GTK+.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libxml2</term>
      <listitem><para>The libxml2 library provides a number of APIs for working
      with XML in a standards-compliant manner.  The libxml2 library is
      discussed in <xref linkend="libxml2"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libxslt</term>
      <listitem><para>The libxslt library provides a fast and complete
      implementation of XSLT, a language for transforming XML.  The libxslt
      library is discussed in <xref linkend="libxslt"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>pango</term>
      <listitem><para>Pango is the core text and font handling library used
      in GNOME applications.  It has extensive support for the different
      writing systems used throughout the world.  Pango is discussed in
      <xref linkend="pango"/>.</para></listitem>
    </varlistentry>
  </variablelist>
</section>

<section id="apx-modules-desktop">
  <title>Desktop Modules</title>

  <para>Modules in the GNOME desktop are not required to make the same
  API and ABI stability guarantees as modules in the platform, although
  attempts are made to keep them relatively stable.  Often, modules are
  introduced in the desktop release to mature, and are moved into the
  platform once they've stabilized.</para>

  <variablelist>
    <varlistentry>
      <term>eel</term>
      <listitem><para>The eel library provides a number of additional widgets
      primarily for use inside <application>Nautilus</application>, the GNOME
      file manager.  Many of the widgets in eel have since been provided in
      GTK+.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>evolution-data-server</term>
      <listitem><para>Evolution Data Server provides a unified location for
      address book and calendar information, allowing multiple applications
      to share the same data.  Evolution Data Server is discussed in
      <xref linkend="address-book-calendar"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gnome-panel</term>
      <listitem><para>In addition to the actual panel, the gnome-panel package
      provides the libraries used to construct panel applets to run on the
      user's panel.  Panel applets are discussed in <xref linkend="panel-applets"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gnome-keyring</term>
      <listitem><para>The GNOME keyring manager provides a modern and secure
      means of storing users' passwords and other sensitive data.  Keys are
      encrypted and can only be accessed by explicit user permission.  The
      keyring manager is discussed in <xref linkend="keyring"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gstreamer</term>
      <listitem><para>GStreamer is the powerful multimedia used throughout GNOME
      to play, create, and manipulate sound and video.  GStreamer is discussed
      in <xref linkend="multimedia"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gtkhtml</term>
      <listitem><para>The gtkhtml library provides a lightweight HTML renderer
      with full support for rich text editing.  It is used inside the
      <application>Evolution</application> mailer to allow users to compose
      and read HTML email.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>gtksourceview</term>
      <listitem><para>The gtksourceview library provides an extension of the
      GtkTextView widget with support for automatic syntax highlighting and
      other functions that are useful for source code editors.  It is used in
      the <application>gedit</application> text editor.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libgail-gnome</term>
      <listitem><para>GAIL provides an implementation of the ATK interfaces for
      GTK+ and GNOME libraries, allowing accessibility tools to interact with
      applications written using these libraries.  Accessibility is discussed
      in <xref linkend="a11y"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libgnomeprint</term>
      <listitem><para>The libgnomeprint library provides an implementation of
      the PostScript imaging model and can be used to create high-quality
      print renderings.  The GNOME print framework is discussed in <xref linkend="gnomeprint"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libgnomeprintui</term>
      <listitem><para>The libgnomeprintui library provides a standard print
      dialog, a print preview dialog, and various other controls required for
      printing.  The GNOME print framework is discussed in <xref linkend="gnomeprint"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libgtop</term>
      <listitem><para>The libgtop library provides a portable API for obtaining
      information about running processes.  It is used in the <application>System
      Monitor</application> application.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>librsvg</term>
      <listitem><para>The librsvg library provides an implementation of
      Scalable Vector Graphics (SVG).  It is used throughout the desktop
      to render resolution-independent vector graphics.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libsoup</term>
      <listitem><para>The libsoup library provides an implementation of the Simple
      Object Access Protocol (SOAP), as well as an HTTP implementation.  SOAP can
      be used to build web services into applications.  The libsoup library is
      discussed in <xref linkend="libsoup"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libwnck</term>
      <listitem><para>The libwnck library provides a means of controlling any
      EWMH-compliant window manager, including <application>Metacity</application>,
      the GNOME default window manager.  The libwnck library is discussed in
      <xref linkend="window-manager"/>.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>libxklavier</term>
      <listitem><para>The libxklavier library provides a high-level API for
      accessing and setting keyboard layouts.  It is used in the
      <application>Keyboard Preferences</application> to allow users to set
      their keyboard layout and options.</para></listitem>
    </varlistentry>
    <varlistentry>
      <term>vte</term>
      <listitem><para>VTE is a terminal emulator widget for use in GTK+
      applications.  It provides a consistent API and uses Pango for text
      drawing, allowing it to display all internationalized text.  VTE
      is used in GNOME's <application>Terminal</application> application.</para>
      </listitem>
    </varlistentry>
  </variablelist>
</section>

</appendix>
