This book aims to be a comprehensive technical manual for the development of plugins for Evolution, a personal information manager for GNOME.
Up-to, and including, Evolution version 2.0, Evolution contained limited extensibility interfaces. There were only two ways to extend Evolution; by implementing a new top-level component, or by implementing a Camel provider. When implementing a top-level component, there was still little integration, and in effect it was merely a more complex way of writing a separate GNOME application. Camel providers were only designed to be e-mail storage backends, so were of limited use for general extensibility. Despite this, both mechanisms were used for example for the Exchange Connector, although the system made the integration clumsy and difficult.
This lack of extensibility has severaly stifled external developer contributions by forcing any extensions to be considered as core features. Evolution being a commercial product, it has tight usability and quality requirements that limits the ability to experiment with the core feature set in this way. As a result, very few lines of code or new features have been implemented by external contributors.
One of the major goals for the 2.2 release was to implement an extensibility system, given the working name of EPlugin, which must provide a frame-work for both providing extensibility hooks, and for extending the functionality of Evolution.