Akonadi Questions
I've recently been looking at Akonadi again, and trying to understand its design goals, implementation, and so on. The documentation on the web site is pretty thin on the ground, so I have a few questions which I'd love any friendly Akonadi developers to reply to (note that I'm biased towards the address book side for now).
- IPC. Akonadi uses IMAP for most operations, with DBus used for notifications and other "control" messages apparently. As IMAP supports notifications fine, why not drop DBus entirely? To use Akonadi there has to be an IMAP connection, correct?
- Data format. How is something concrete, like a contact, represented? In what format would it be stored in the "local addressbook", and in what format is it transferred over IMAP?
- Dependencies. For a GNOME component C++ I can just about handle, Qt is pushing it, and libkde is out. What are the real dependencies of Akonadi, and can they be reduced?
- Examples. Can anyone provide example code of basic operations against the addressbook, such as searches, handling live views, adding and removing contacts?
Thanks!
NP: Artists Like: Skalpel, Last.fm
Have you looked at: https://launchpad.net/people-project ?
It is still young and not very usable, but it aims at providing a desktop neutral solution. However it only targets Contacts and social networking possibly.
Akonadi is desktop neutral already:
http://pim.kde.org/development/meetings/osnabrueck4/overview.php
Mission Statement:
We intend to design an extensible cross-desktop storage service for PIM data and meta data providing concurrent read, write, and query access. It will provide unique desktop wide object identification and retrieval.
ad (3): for the Akonadi server the intention is to only depend on Qt without the UI portions. The implementation currently depends on kdelibs as well for the Unix socket handling, however I will remove this with QLocalSocket as soon as qt-copy in KDE's SVN repository is updated to Qt4.4
Our (KDE's) implementation of client library is intendend for KDE application and such has all kind of KDE niceties and AFAIK the idea is that this side of the protocol depends quite on the design philosophies of the application software stack (e.g. event loop vs. threading) so wrapping doesn't make that much sense.
ad (4): In december I started to play with an implementation of your eds-embedded D-Bus interfaces on top of Akonadi to see how well the concepts would match. If you're interested, I'll try to clean it up a bit and make it available somewhere.
I'm not convinced myself, the notifications should be able to be sent over IMAP.
(Also, a big 'thank you' to anyone working on contact managers and task managers; existing projects are either very limited, including Evolution, or designed for megacorps with staff devoted to LDAP management. Hopefully someone can split the difference; 'infinite number of phone #s and addresses per contact' is a big deal for me, as is a hierarchial view with priority propagation for tasks, so I can view per-client and see which physical files need to be where (law office scenario).)