[Evolution-hackers] Merging the account-mgmt branch this weekend
- From: Matthew Barnes <mbarnes redhat com>
- To: evolution-hackers gnome org
- Subject: [Evolution-hackers] Merging the account-mgmt branch this weekend
- Date: Thu, 31 May 2012 12:39:52 -0400
This is a heads up that I will be releasing Evolution 3.5.2 and co. this
weekend and then merging the account-mgmt branches for E-D-S, Evolution,
and Evolution-EWS. Evolution-MAPI will follow sometime after the merge.
The account-mgmt branch is an effort to overhaul how we manage account
information. It solves some long-standing problems in the architecture
we've been using for the past decade, and hopefully makes accounts more
flexible so we can do new and interesting things we couldn't before.
I have documented much of the design decisions and progress over the
past 18 months in a thread on this mailing list entitled "Rethinking
Account Management" [1].
As this branch represents 18 months of largely non-peer-reviewed work,
I'm sure there's going to be bugs and regressions. Just report them as
you find them and I'll try to be responsive. My most immediate concern,
however, is that account migration works correctly. Bugs can always be
fixed, but the migration code typically runs only once. And if I botch
that we'll have a royal mess on our hands come Fall.
Here's a quick recap of the major changes:
* Account data will be removed from GConf and converted to plain text
files which live in $HOME/.config/evolution/sources. The file format
will be an .ini-like syntax understood by GKeyFile, rather than XML.
I have documented the new file format here:
https://live.gnome.org/Evolution/ESourceFileFormat
* Clients will not access these files directly. Instead, a new D-Bus
service named "evolution-source-registry" is introduced to serve these
files to clients. Clients will access ESources via a new client-side
class named ESourceRegistry.
ESourceRegistry is intended to be a singleton instance used by all
E-D-S clients as well as our own ECal/EBook factory services.
The "evolution-source-registry" service (or just "registry" service)
has a few other responsibilities, detailed below.
* Authentication attempts are now coordinated between backends and the
"registry" service. The service queues all backend requests, handles
keyring lookups and password prompting, and securely feeds passwords
to backends to test.
This takes client applications completely out of the authentication
loop. EClient no longer has an "authenticate" signal.
This means "headless" E-D-S clients with no main window of their own
like evolution-alarm-notify and gnome-shell-calendar-server, as well
as E-D-S clients which don't even link to GTK+, can access calendars
and address books as easily as applications like Evolution and GNOME
Contacts which have historically handled authentication themselves.
The "registry" service uses GcrSystemPrompt [2] to display a system
modal password prompt. If running a GNOME Shell session, GNOME Shell
takes over and displays the prompt as a fancy Javascript-style dialog.
This is the same mechanism the gnome-keyring-daemon now uses to prompt
users for keyring passwords.
ECredentials and e-passwords.c are now deprecated.
* The "registry" service is extensible through EExtension the same way
Evolution is. I've already written a few extension modules for the
service:
online-accounts
Integrates with GNOME Online Accounts. Basically takes over for
Evolution in synchronizing E-D-S sources with GOA accounts. You
no longer have to start Evolution for GOA accounts to be noticed.
cache-reaper
Deletes abandoned cache directories. The reaper scans directories
shortly after the service starts up and then once every 24 hours.
It lets newly-orphaned directories age a few days before reaping
them, in case the account deletion was accidental or cached data
needs to be salvaged. It does not touch data directories.
google-backend / yahoo-backend
These are "collection" backends (described below) for Google and
Yahoo! accounts. These are functional but not yet complete.
* The "registry" service, through its extension framework, hosts a new
kind of backend called a "collection" backend. The term "collection"
is borrowed from WebDAV nomenclature. A collection backend's job is
to manage a collection of ESources as a single account. Usually this
involves querying a remote server for private and shared data sources,
setting up equivalent ESource instances to serve as proxies, and then
keeping the collection synchronized with the remote server.
The idea is if you create, say, a new calendar on a groupware server,
the collection backend for that server is supposed to notice the new
calendar and assemble an equivalent ESource for it, which is then
exported over D-Bus and all active E-D-S clients see it immediately.
I've really only just begun to implement collection backends. There's
a lot more work to be done here to fully realize what I have in mind.
* There will be API breakage at all levels of Evolution-Data-Server, but
most severely in libedataserver. ESourceList, ESourceGroup, EAccount,
and EAccountList are all gone, replaced by ESourceRegistry.
ESource still exists and is conceptually the same as before, but its
API is completely different now. It's basically a glorified key file
interface with a few asynchronous D-Bus methods.
ESource also now handles mail accounts, unifying at last all account
management under one API.
The new libedataserver and libebackend APIs are documented here:
http://mbarnes.fedorapeople.org/account-mgmt/docs/libedataserver/
http://mbarnes.fedorapeople.org/account-mgmt/docs/libebackend/
* The account editor and the calendar and address book configuration
dialogs have been rewritten from scratch. They no longer use EConfig,
nor even EPlugin at all. They are now extended through EExtensions.
Now that the config editors are liberated from EPlugin, I'd like to
take a serious look at moving them to Evolution-Data-Server. I still
need to figure out the details there.
* Lastly, the test suite in Evolution-Data-Server is pretty borked at
the moment. I hope to get the test suite operational again by 3.6.
Now that account information is stored in XDG-compliant directories,
we should be able to create a much nicer and fully automated test
harness that doesn't risk interfering with your own accounts.
I have several patches prepared already for other projects to help them
quickly adapt to the API breaks. I'll also be blogging about this today
or tomorrow.
Matthew Barnes
[1] Thread starts here:
https://mail.gnome.org/archives/evolution-hackers/2010-November/msg00013.html
[2] http://developer.gnome.org/gcr/unstable/GcrSystemPrompt.html
[
Date Prev][
Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]