Die Menge an Personal Messenger Information (PIM) nimmt stetig zu, aber auch die Anforderungen an die Verfügbarkeit von E-Mail, Kontakten oder Bookmarks wachsen. Auch bei einer Bahnfahrt durch unerschlossene Täler eines fernen Landes möchte der moderne Datennomade seine Mails lesen, sortieren und vorbereiten. Die KDE-Architekten erkannten daher zwei zentrale Probleme: mangelnde Wiederverwendung und eingeschränkte Remote-Fähigkeit. Mit den Mitteln des bisherigen KDE 3 waren beide Probleme nicht zu lösen.
So hat jede Anwendung bislang den Zugriff auf Datenquellen selbst umgesetzt. Manchmal haben gleich mehrere Programme konkurrierend die gleiche Aufgabe implementiert, etwa eine Kontaktverwaltung in KAddressbook und Kopete. Aus Sicht des Benutzers ist es ärgerlich, wenn sich Informationen nicht zwischen den Anwendungen austauschen lassen und deshalb Kopien der Daten angelegt werden. Liegen diese dann noch im Hauptspeicher, wird der Platz schnell knapp.
Das zweite Problem ist der Durchsatz, wenn eine Anwendung entfernte Datenquellen abfragt. Synchrone Übertragung von Daten führt oft zu Engpässen und die Anwendungsoberflächen aktualisierten sich nicht mehr zeitnah. Dazu kommt, dass entfernte Quellen oft große Datenmengen enthalten, deren direkte Übertragung das Problem noch verstärkt. Daten, die beispielsweise nur über Webdienste zugänglich sind, bleiben überdies insgesamt unerreichbar.
Prozessbeobachter
Im Zuge von KDE 4 planten die Architekten daher einen neuen Ansatz, den sie nach der ghanaischen Göttin der Gerechtigkeit Akonadi nannten. Eine zentrale Akonadi-Instanz pro KDE-Sitzung kümmert sich fortan um die Verwaltung aller PIM-Daten [1].
Akonadi ist eine Komponente, die als Server arbeitet und dem Entwickler zwei Arten von Bibliotheken anbietet: Klassen, um mit Akonadi selbst zu kommunizieren, und Darstellungskomponenten, um Benutzern PIM-Daten anzuzeigen. Die Benutzer profitieren dabei von fertigen Views, die verschiedene Anwendungen einfach verwenden können.
Zu Beginn einer KDE-Sitzung startet »akonadi_control« die Komponenten und wacht darüber, dass alle weiteren Prozesse auch laufen. Dazu ruft das Steuerungsprogramm die zentrale Komponente »akonadiserver« auf. Sie kümmert sich um die Verwaltung des Datenspeichers. Weitere Prozesse kümmern sich um den Zugriff auf Datenquellen (siehe Abbildung 1). Durch den Einsatz mehrerer Prozesse soll das Gesamtsystem robuster werden: Ein einzelner fehlerhafter Dienst zieht nicht mehr die komplette Komponente in den Abgrund.
Abbildung 1: Mehrere Prozesse bilden zusammen die Infrastruktur von Akonadi. Durch die asynchrone Struktur der Komponenten laufen einzelne Teile weiter, wenn langsame Netzwerkverbindungen den Nachschub blockieren.
Datenquellen aller Art
Im Datenspeicher legt Akonadi alle Informationen unabhängig davon ab, woher sie stammen. Datenquellen wie IMAP-Server oder Webmail-Dienste heißen Ressources. Jede Quelle wird dabei von einem eigenen Prozess verwaltet. Einzelne Prozesse für den Zugriff auf unterschiedliche Ressourcen zu verwenden war eine Kernidee, die zum Entwurf von Akonadi führte. Eine View reagiert so trotzdem noch auf den Benutzer, wenn im Hintergrund Daten geholt und aufbereitet werden - selbst wenn das Netzwerk einmal stockt. Datenzugriffe erfolgen daher immer asynchron, damit während des Lesens oder Schreibens das Benutzerinterface nicht blockiert.
Insgesamt will Akonadi hohe Bandbreite mit niedrigen Latenzzeiten erreichen, wenn es auf Ressourcen zugreift. Das gilt in besonderer Weise für entfernte Ressourcen wie IMAP-Server oder Webservices. Benutzer profitieren so davon, dass einerseits die Anwendungen besser bedienbar sind, und sie andererseits die Daten aus mehreren Quellen an einer zentralen Stelle verwalten und in Beziehung setzen können.
Kontakte lassen sich in lokalen Vcard-Dateien, einem Groupware-Server oder in einem Facebook-Account speichern. Alle Kontakte stehen dann beim Schreiben neuer Mails direkt zur Verfügung. Durch diesen einheitlichen Zugang zu allen PIM-Daten versprechen sich die Entwickler eine hohe Steigerung der Benutzerproduktivität.