Traits of the Common and Generally Mythical Evolution Data Server Replacement

When not writing media centres or GL toolkits, it appears that the latest trend in open source is to write Evolution Data Server replacements. There is a fairly common pattern forming.

First, implementation details will be announced as a major, if not the main, feature. The shining example is "based on DBus". Yes, DBus is great. Yes, ORBit is a dying technology for something as simple as transfering a few strings between two processes. But this is an implementation detail. I'd prefer a project using DBus instead of another incredibly complicated IPC, but implementation details are typically not something to get excited about.

Often this first point gets out of control and suddenly the point of the project is to design a DBus interface, not to write real working code. Of course, an interface without any code behind it, without any reference implementation, without several applications and different users, is bound to be broken somewhere. But you'll never know until it is too late and you've labelled the interface as STABLE. Learn from DBus itself, anyone who followed the project before 1.0 knows that the core concepts were rewritten several times before it was finally marked as stable.

Spreading basic FUD is fairly common too. "EDS is not efficient concerning network bandwidth" doesn't make sense, because EDS is a local daemon. When it does talk over the network, it's fairly sensible. The LDAP (and Groupwise/Exchange I believe) backend maps EDS searches to native searches so that only the requested items are fetched. Backends such as WebCal have no option but to fetch the entire file, because that is how they work. "EDS is not efficient concerning memory usage" is rather vague, and if you interpret it as "private dirty memory usage is unreasonably high when in use" then in my opinion that is untrue and I have Massif logs to back me up.

If these points were true, they'll generally be fixable within EDS. The default local calendar backend is implemented as an iCalendar file on disk, which is parsed into memory in its entirety on startup. This certainly works well for a basic implementation but should be replaced with a database of some sort, a simple one which stores a hash of UID to event would reduce memory usage for large calendars. Add to that a cache of start and end times to optimise that common case and the end result is probably both faster and uses less memory, for a few days work.

Occasionally complaints are spot-on, but EDS isn't immutable and whilst starting a new project from scatch may be more fun, please think of everyone else. EVCard is over-complicated and yet tragically crippled, whilst EContact tries to be clever but generally gets in the way. Luckily we can write a new contact object which is easier to use. The query language is limited, but Milan Crha of Red Hat fame has been chipping away and now it's more flexible without breaking existing applications. Maybe someone can come up with a good replacement language, and the old language deprecated.

I'll summarise what I'm trying to say.

NP: Kharah System, Hereill

17:00 Tuesday, 18 Mar 2008 [#] [computers] (7 comments)

Posted by iain at Tue Mar 18 17:39:41 2008:
"I have Massif logs to back me up"

Well, I've got Massive logs to back me up, so I'll take you in a fight any day...
Posted by Ross at Tue Mar 18 18:08:01 2008:
Bring it, Holmes. What ya gonna do, attack me with empty bottles of Breezer?
Posted by daniels at Tue Mar 18 18:48:24 2008:
s/Kharah/Kharak/

Also, touche.  But you know that you can smash them, and if he shanks you with a broken Breezer bottle, you'll be bleeding lime green for a week.
Posted by Jeff Schroeder at Tue Mar 18 20:31:54 2008:
Is this a dig at pvanhoof of Tinymail fame and his camel/evolution/whatever isn't as good as it should be posts?

He seems pretty sensible and normally right if not a bit elitist.
Posted by iain at Tue Mar 18 20:55:23 2008:
Yeah, and i'll have some lime ready to squirt in the wound too...
Posted by pvanhoof at Tue Mar 18 21:26:52 2008:
@Jeff: Ehm, no. Tinymail is not related to the service Evolution Data Server. That service serves calendar and contact data. Not E-mail data.

Tinymail is only about E-mail.
Posted by Rodney Lorrimar at Wed Mar 19 10:45:16 2008:
Well said, and also Federico's reply blog was interesting. Reminds me of the little jwz nugget about the <A href="http://jwz.livejournal.com/154529.html">CADT Model</a>.

It's tragic that Bonobo should become extinct. Perhaps with that choice of name it was always an endangered species.

A lot of work has gone into Bonobo and I don't believe it's problems are unfixable, but (as mentioned in the link) now the momentum is with D-Bus, which does a slightly different thing, but is easier to use, and pleases the delicate tastes of the KDE developers.

OK D-Bus is better, but don't throw the baby out with the bath water!

Name:


E-mail:


URL:


Add 5 and 4 (required):


Comment: