# Platform Overview

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.

## Core Technologies

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 .

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 .

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 .

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 . Accessibility is discussed in .

GNOME ships with GStreamer, an extremely powerful multimedia framework for creating, editing, and playing audio and video content. GStreamer is discussed in .

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 .

## IPC and Networking

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 .

With freedesktop.org, 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 .

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 .

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 .

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 .

## Desktop Technologies

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 .

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 .

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 .