[Evolution-users] Implementing an Evolution-Data-Server out-of-tree backend

Niklas Wimmer mail at nwimmer.me
Wed Aug 5 16:30:42 UTC 2026


On Thu, 2026-07-30 at 11:09 +0200, Milan Crha via evolution-users
wrote:
> On Thu, 2026-07-30 at 10:24 +0200, Niklas Wimmer via evolution-users
> wrote:
> > I am wondering if it is possible to create "out-of-tree" EDS
> > backends. Essentially, can EDS load additional backend
> > implementation
> > at runtime?
> 
> 	Hi,
> of course it can be done. There are some working and maintained
> extensions, touching all or some parts. One is evolution-ews:
> https://gitlab.gnome.org/GNOME/evolution-ews/
> 
> and one simpler, also doing "only" the calendar and the address book
> backends, is evolution-etesync:
> https://gitlab.gnome.org/GNOME/evolution-etesync/
> 
> There are more, though not many other too. These two I know about.
> 
> You might not need all the parts they implement/touch. Exploring
> either
> or both of the two projects might be a good starting point.
> 
> I suggest you derive your calendar backend from ECalMetaBackend,
> implementing its virtual methods, which will help you to focus on the
> way to communicate with your data store, rather than teaching all the
> calendar internals and requirements and so on. You just convert the
> iCalendar components into your storage format and back, mostly, when
> using the meta backend (book has one such too).
> 
> 	Bye,
> 	Milan

Hi,

so from my understanding I have to provide an implementation of an
`EBackend` and an `EBackendFactory`. I then need to register the types
of these classes in a `e_module_load` function (that is marked as
`G_MODULE_EXPORT`)?

To make this machinery work I then have to build my extension as a
library and place the resulting .so into the correct `BACKENDDIR`? On
GNOME OS this seems to be "/usr/lib/x86_64-linux-gnu/evolution-data-
server/calendar-backends/", so it will require a sysext.

Is my understanding correct that this is the only way to add a new
backend?

I was kinda hoping that it would be possible to register a backend over
DBus or similar, so that I could provide it as part of a GUI (Flatpak)
application.

Thanks,
Niklas


More information about the evolution-users mailing list