# Introduction

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.

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

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

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

- Write applications that use the &Camel; mail library. This includes extending &Evolution;'s own mail component to perform additional functions.

- 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.

- 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.

- Modify the core &Evolution; code to add new features or change its architecture.

## Organization of this Guide

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.

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.

&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.