[maemo-developers] EDS groupware "plugin" development

From: Jörgen Scheibengruber jorgen.scheibengruber at nokia.com
Date: Fri Jun 4 17:41:43 EEST 2010
Am Freitag, den 04.06.2010, 11:48 +0200 schrieb ext Nils Faerber:
> Hello!
> We are currently evaluating the possibilities to attach the N900/Maemo5
> to a groupware server for synchronising PIM data - primarily contacts
> and calendar events.
> 
> Maemo5 quite obviously uses EDS in some form to handle some PIM data but
> by quick searching I was not yet able to verify how EDS is used in
> Maemo5. E.g. it is not fully obvious to me if EDS is used for all PIM
> data or just for the address since I only see this
> 	/usr/lib/evolution-data-server/e-addressbook-factory
> in my process list.
> And since the calendar and addressbook applications seem to be
> non-open-source I cannot check in them either.

Only the addressbook uses eds. The calendar has it's own backend, but
it's open-source as well: http://maemo.gitorious.org/calendar-backend

> The intention is to create something, like an EDS plugin, that will
> allow the standard Maemo5 applications to transparently use another
> groupware server, like e.g. Kolab.
> 
> The documentation that is referred at
> 	http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide
> also does not mention calendar services and the calendar backend
> documentation referred to by
> 	http://maemo.org/api_refs/5.0/5.0-final/calendar-backend/
> is empty except for the data types.
> 
> 
> So my basic questions are:
> 
> - For which type of PIM data is EDS actually used in current Maemo5 PR1.2?

Only the addressbook.

> - For the types used would it be possible to add an EDS connector plugin
> to connect to other groupwares and have it automatically picked up by
> the built-in Maemo5 PIM apps addressbook and calendar?

The list of backends that the addressbook tries to load is hard-coded,
so while you can add more backends, the shipped clients will never open
those.

The only thing that can be done is to point the "system" addressbook to
another backend then the "file" (= berkley db) backend via gconf (check
libebook source how to do that). That way you basically could write a
backend, that syncs automatically with a remote groupware server. As
long as you take care to implement all the APIs that the file-backend
implemnents, and take care that you use auto-incrementing integers as
the contact UIDs, this should in theory work (and i successfully done it
by replacing the berkleydb with a sqlite backend). But it never has seen
any extensive testing, so I wouldn't be surprised if there are quirks. 

> - For the other non EDS type(s) what would be the best way to create
> alternate source connectors?

I'm not aware of any plugin system for the calendar, but it's backend
supports different "calendars", that can be
created/deleted/enabled/disabled from the UI. You can insert events into
them by using the calendar-backend apis.

> Many thanks for any information or pointers!

Summary: I think for synchronization you definitely want to use the
libebook and caledar-backend apis.

I'm not sure if there is any actually any good use-case of replacing the
eds file backend with another one, it's just a fairly simple database
after all. And you should be able to do (almost?) everything that can be
done from within the backend, via it's apis.

Br,
Jörgen

More information about the maemo-developers mailing list