  <preface id="introduction">
    <title>Introduction</title>

    <para>
      This is the &Evolution; Developer's Guide or programming guide
      for the &Evolution; groupware suite.  If you are a programmer
      and you wish to use &Evolution;'s functionality from your own
      applications or if you wish to modify the &Evolution; core code,
      you should read this guide.
    </para>

    <para>
      If you are an end-user of &Evolution; you do not need to read
      this guide; please read the &Evolution; User's Guide instead.
    </para>

    <para>
      This guide contains the information you need to know to do the
      following:

      <itemizedlist>
	<listitem>
	  <para>
	    Write applications that use &Evolution;'s data
	    repositories via the &Wombat; personal information server.
	    Examples of this would be a <application>GNOME
	    Panel</application> applet that displays today's
	    appointments, or a telephone dialer application that uses
	    the contents of the &Evolution; Addressbook.
	  </para>
	</listitem>

	<listitem>
	  <para>
	    Write applications that use the &Camel; mail library.
	    This includes extending &Evolution;'s own mail component
	    to perform additional functions.
	  </para>
	</listitem>

	<listitem>
	  <para>
	    Write new components for the &Evolution; Shell.  Instead
	    of writing a stand-alone application, you can provide your
	    users with the benefit of having integrated views of their
	    data from within Evolution.
	  </para>
	</listitem>

	<listitem>
	  <para>
	    Write new modules for the &Evolution; Executive Summary.
	    This allows you to present commonly-accessed information
	    in a convenient fashion directly in the &Evolution; Shell.
	  </para>
	</listitem>

	<listitem>
	  <para>
	    Modify the core &Evolution; code to add new features or
	    change its architecture.
	  </para>
	</listitem>
      </itemizedlist>
    </para>

    <sect1 id="organization">
      <title>Organization of this Guide</title>

      <para>
	This guide is organized in two big sections.  The first is a
	programming guide, which consists of one part for each one of
	&Evolution;'s components:  there are separate parts for the
	calendar, the addressbook, the mailer, the executive summary,
	and the shell.  Each part gives a description of the
	architecture of its corresponding component, and also gives
	information about the component's internal architecture and
	some implementation details.
      </para>

      <para>
	The second section of this guide is a reference guide for
	&Evolution;'s programming interfaces.  We have separated these
	into public and private interfaces.  The public ones are those
	that most people will need to use when writing extensions or
	third-party components; the private interfaces are those used
	internally in &Evolution;.  Even if you do not intend to
	modify the &Evolution; core code, it may be useful to know a
	bit about the way it is organized internally.
      </para>

      <para>
	&Evolution; is free software, and we want you as a programmer
	to make the most of it.  We have provided many useful
	interfaces that you can use in your own applications.  Still,
	we want you to view &Evolution; as a framework for building
	groupware applications, and this may occasionally involve
	making changes to its core code.  We want you to learn from
	&Evolution;'s design because we think it marks an important
	milestone in the development of large-scale free software
	applications.  We want you to modify it as you see fit.  Free
	software gives you this freedom, and we want the whole world
	to benefit from it.
      </para>
    </sect1>
  </preface>

<!--
Local variables:
mode: sgml
sgml-parent-document: ("evolution-devel-guide.sgml" "book" "book" "")
End:
-->
