<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">

<chapter id="overview">
  <title>Overview</title>
  <para>
    <ulink url="http://www.gupnp.org">GUPnP</ulink> is a library for
    implementing both <ulink url="http://www.upnp.org">UPnP</ulink> clients and
    services in C, using <ulink url="http://www.gtk.org/">GObject</ulink> and
    <ulink url="http://live.gnome.org/LibSoup">LibSoup</ulink>.  It allows for
    fully asynchronous use without using threads and so cleanly integrates
    naturally into main-loop based applications, and supports all of the UPnP
    features.
  </para>
  <para>
    This documentation assumes some familiarity with the UPnP model and
    concepts.  If the reader doesn't have any prior understanding of UPnP, then
    we can recommend <ulink
    url="http://www.intel.com/intelpress/sum_upnp.htm"><citetitle>UPnP Design By
    Example</citetitle></ulink> by Intel Press.  For a very basic overview of
    UPnP, see <glossterm linkend="device">Device</glossterm>, <glossterm
    linkend="service">Service</glossterm>, and <glossterm
    linkend="controlpoint">Control Point</glossterm> in the glossary.
  </para>
  <para>
    The canonical reference for UPnP is <citetitle>UPnP Device 
    Architecture</citetitle> by  
    <ulink url="http://www.upnp.org">UPnP Forum</ulink>. GUPnP also 
    follows the <citetitle>DLNA Networked Device Interoperability 
    Guidelines</citetitle> by <ulink url="">Digital Living Network alliance</ulink>
    (to the extent that the guidelines are applicable to a UPnP protocol 
    implementation).
  </para>
</chapter>
