[Evolution-users] Implementing an Evolution-Data-Server out-of-tree backend
Milan Crha
mcrha at redhat.com
Thu Aug 6 07:06:30 UTC 2026
Hi,
On Wed, 2026-08-05 at 18:30 +0200, Niklas Wimmer wrote:
> 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`)?
Yes. It's several "backends", one for registry, thus the main part
knows what to do with your .source files; other for the parts you want
to extend (like one for calendar, one for address book, maybe one for
evolution).
The old wiki pages used to have a diagram of the modules and backends
and how they interact, which could give an idea, but I did not copy it
into the new wiki, because it talked about CORBA and those old
technologies, which are not used anymore. It still reflected the
concept though.
>
> To make this machinery work I then have to build my extension as a
> library and place the resulting .so into the correct `BACKENDDIR`?
They are .so (on Linux), but they are modules, not libraries.
> On GNOME OS this seems to be "/usr/lib/x86_64-linux-gnu/evolution-
> data-
> server/calendar-backends/", so it will require a sysext.
pkg-config --variable moduledir libebackend-1.2
pkg-config --variable backenddir libedata-cal-2.0
> Is my understanding correct that this is the only way to add a new
> backend?
No. Users can install their modules into their home directory and the
system-installed evolution and evolution-data-server can load them.
The https://gitlab.gnome.org/GNOME/evolution/-/wikis/Extensions
contains a little note about the directories near the end of the
"Example Module" section, but not many details about it.
The Flatpak version on Flathub.org has an extensions point (search for
"add-extensions"
https://github.com/flathub/org.gnome.Evolution/blob/master/org.gnome.Evolution.json#L38
but I'm afraid its specific to the Evolution app, which has its own
evolution-data-server inside the Flatpak sandbox. The idea is that you
get not only the fixes in the evolution-data-server you build your app
with, but also the fixes on the backend sides, which is not possible
when you rely on the system-installed evolution-data-server processes
(which can be years old bits, with many long ago fixed bugs).
The way the Evolution on Flathub.org works has its downside, the
system-installed apps do not know about the configured accounts in the
Flatpak Evolution, thus for example when you add there a WebCal
calendar, the events from it won't be shown in the gnome-shell's "clock
applet".
> 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.
No idea how that would be done with Flatpak, where the host system does
not have access into the sandbox, intentionally. You should not be able
to influence system-installed services when you distribute as Flatpak.
Bye,
Milan
P.S.: Reply to List (Ctrl+L in Evolution) works better for me in this
mailing list
More information about the evolution-users
mailing list