<?xml version="1.0" encoding="utf-8"?>
<!-- -*- indent-tabs-mode: nil -*- -->
<chapter id="platform">
  <title>Platform Overview</title>

  <para>The GNOME platform provides a comprehensive development environment
  for graphical applications and other software.  Using the technologies in
  GNOME, you can create high-quality software to meet and exceed your users'
  expectations.  This chapter provides a very brief overview of the components
  that are discussed in this document.</para>

  <section id="platform-core">
    <title>Core Technologies</title>

    <para>GNOME provides a number of libraries for constructing attractive
    graphical interfaces.  It provides libraries for displaying and manipulating
    common user interface controls, for laying out and rendering text from most
    of the world's writing systems, and for drawing sophisticated vector
    graphics to the screen.  The graphical technologies in GNOME are outlined
    in <xref linkend="graphics"/>.</para>

    <para>The GIO library in GLib, together with the GVFS backend, provides
    a file system abstraction that allows users to work with files on remote
    servers as well as the local file systems.  GIO provides a high-level API
    for file operations, making development fast and easy.  Using GIO will
    allow your application to support remote files and folders automatically.
    GIO and GVFS are discussed in <xref linkend="gio"/>.</para>

    <para>GNOME provides the GConf library and daemon for storing and retrieving
    user preferences.  GConf has a simple API that makes it easy to provide
    instant-apply preferences in your application.  Using GConf also allows
    administrators to provide default and mandatory application settings for
    their users.  GConf is discussed in <xref linkend="gconf"/>.</para>

    <para>GNOME provides facilities for internationalization and accessibility,
    helping you reach the largest possible number of potential users.  Much of
    the internationalization and accessibility support is built right in, but
    there are many issues you should be aware of when developing applications.
    Internationalization is discussed in <xref linkend="i18n"/>.  Accessibility
    is discussed in <xref linkend="a11y"/>.</para>

    <para>GNOME ships with GStreamer, an extremely powerful multimedia framework
    for creating, editing, and playing audio and video content.  GStreamer is
    discussed in <xref linkend="multimedia"/>.</para>

    <para>GNOME also provides a complete print framework which leverages
    CUPS whenever possible.  The print framework in GNOME allows you to
    provide a consistent interface to high-quality printing.  The print
    framework is discussed in <xref linkend="printing"/>.</para>
  </section>

  <section id="platform-ipc">
    <title>IPC and Networking</title>

    <para>The GNOME desktop has full support for transferring data using the
    clipboard or with drag and drop.  The APIs in GTK+ can help you create
    applications that interoperate well with the rest of the desktop.  Clipboard
    and drag and drop functionality are discussed in <xref linkend="clipboard"/>.</para>

    <para>With <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink>,
    GNOME provides the D-Bus messaging system.  D-Bus is a cross-desktop message
    bus which allows all types of applications to communicate with one another.
    D-Bus is discussed in <xref linkend="dbus"/>.</para>

    <para>GNOME features the Bonobo component system, built on top of CORBA.
    Bonobo allows programmers to create complex embeddable components which
    can be reused inside other programs.  Note that Bonobo has been deprecated.
    Newly written code should use D-Bus and other technologies instead.  Bonobo
    is discussed in <xref linkend="bonobo-corba"/>.</para>

    <para>To make networks more manageable for users, GNOME supports DNS
    Service Discovery.  DNS Service Discovery enables applications to find
    services automatically on a local network, rather than requiring users
    to provide network addresses.  DNS Service Discovery is discussed in
    <xref linkend="dns-sd"/>.</para>

    <para>Finally, GNOME provides a number of libraries for working with XML
    and web services.  These technologies are becoming increasingly important
    to application developers.  XML and web services are discussed in <xref linkend="xml-web-services"/>.</para>
  </section>

  <section id="platform-desktop">
    <title>Desktop Technologies</title>

    <para>The GNOME desktop features numerous places where applications can
    provide better integration, such as providing panel applets or plugins
    for the file manager.  Many of these features are discussed in <xref linkend="desktop-tech"/>.</para>

    <para>GNOME provides comprehensive Human Interface Guidelines to help
    you create more usable applications.  GNOME's usability standards were
    a first among free desktop environments, and they continue to improve
    through GNOME's commitment to a better user experience.  Usability is
    discussed in <xref linkend="usability"/>.</para>

    <para>GNOME also provides a complete help system, as well as style
    guidelines for writing documentation.  Though often under-appreciated,
    good user help can significantly improve your software.  Documentation
    is discussed in <xref linkend="documentation"/>.</para>
  </section>
</chapter>
