Development/Architecture/KDE4/Akonadi
Akonadi
Communication, calendaring and keeping information about others are fundamental parts of your daily work and private life. As a provider of an application development framework and of a Free Software desktop runtime environment, KDE addresses this by tightly integrating with the PIM infrastructure provided by Akonadi.
KDE's implementation of an Akonadi client library stack makes it easy to develop both applications using Akonadi as their data source as well as Akonadi agents for the actual access to the data's persistant storage.
Concepts
Akonadi's design follows the principle of separation of concerns, meaning that each component has a small, well defined role to fullfil in order to achieve a fully functional setup.
There are three main categories of components, all of which are implemented as individual processes for increased system stability and implementation independence:
- Akonadi Server
- Akonadi Agents
- Akonadi Applications
Akonadi Server
The server category consists of two roles: control and cache.
Control is implemented by a process called akonadi_control. It is the first to start and controls the life cycle of all components other than end user applications.
Cache is implemented by a process called akonadiserver. It is the hub for the data flow, tracks changes and is responsible for system consistency, e.g. ensures unique identifiers, etc.
All communication with these two roles is implemented in the KDE client libraries for Akonadi and available to developers at different level of abstraction.
Akonadi Agents
The agent category describes processes which perform their task without human interaction. This includes a special role also referred to as Akonadi Resources, agents which transport data between the cache and the data's actual persistant storage locations, e.g. files.
The KDE client libraries for Akonadi provide convenience classes to ease development of generic agents as well as the resource subtype. The KDE PIM project provides a set of commonly required implementations as part of their runtime module.
Akonadi Applications
The application category refers to the usual end user visible application, e.g. address book, calendar or e-mail program. Implementations of this category can sometimes be referred to as Akonadi Clients, since agents can be seen as part of the server-like functionality, both from the point of view of users as well as application developers.
The KDE client libraries for Akonadi provide both a low level job based API as well as high level data models, views and standard actions.