Thunderbird + Ubuntu One Integration: Prior Art and RDF
dmose at mozilla.org
Thu Mar 17 20:45:57 UTC 2011
Would it be possible to use js-ctypes to get around the lack of
On 3/17/11 11:21 AM, Mike Conley wrote:
> I posted this on my blog earlier today, and Andrew Sutherland
> suggested I copy-paste it here on tb-planning. So here goes!
> (originally posted here:
> # Thunderbird and Ubuntu One: First Thoughts, First Roadblock (or
> Prior Art and RDF’d)
> Remember my quest to integrate Ubuntu One contacts into Thunderbird?
> So I spent a chunk of time over the last day or so looking at prior
> art – the efforts of others to solve the same problem. (I’m using
> “prior art” pretty loosely. I’m not by and means filing patent
> ## Prior Art Round-up
> ### The Hedera Project
> Hedera is a Thunderbird extension, and probably the most direct
> solution to the Thunderbird and Ubuntu One integration problem. With
> Hedera, all contacts in all address books are sent off to Ubuntu One,
> with metadata to keep the contacts in the right address books.
> Metadata is also included to keep contacts distinct from one
> Thunderbird profile to the next (if you’re one of the rare users of
> As of late, the extension has gotten a bit dusty – the author, James
> Tait, is currently working at Canonical, and hasn’t had much time to
> maintain it.
> Despite that, it still does the job pretty well. I was successfully
> able to synchronize my contacts to Ubuntu One, which made me
> fist-pump. Great work, James!
> However, after examining the code, I have a few concerns:
> * The first one that jumps out at me is the reliance upon a shell
> script to determine the DesktopCouch server port, as well as obtain
> access credentials. While effective, I think a more direct approach
> would be more appropriate. Perhaps I could develop a DesktopCouch
> XPCOM service that returns these values?
> * Contacts that are not branded with “Thunderbird” metadata are
> ignored. This means that contacts created from the Ubuntu One web
> interface are not brought into Thunderbird, unless the metadata can
> somehow be added there. I didn’t immediately see a way to do this.
> This also means that contacts from other applications (I’m looking at
> you, Evolution) don’t get brought into Thunderbird.
> * Since the contacts are also given profile metadata, it means that I
> only get those contacts if I share the same profile. This is
> problematic if I drop my computer in the river, get a new one, and
> fire up a copy of Thunderbird: my profile will be different, so my
> contacts won’t come in. They’ll still exist in Ubuntu One’s storage,
> but won’t come into my Thunderbird profile, unless I modify my profile
> string to match my old one.
> ### Funambol Mozilla Sync Client
> Funambol develops open-source mobile communications sync software, and
> it looks like Canonical is using Funambol to power their mobile sync
> Users install the Funambol Mozilla Sync Client, which then syncs
> contacts with Ubuntu One over the mobile sync service.
> It’s not a bad solution, and is the one advocated by the Ubuntu Support pages.
> Here are my concerns:
> * According to the support pages, only Thunderbird 2.x is currently
> supported. Thunderbird 3.1.9 is the current version in the Ubuntu
> packages, and the Mozilla Messaging team is working like crazy people
> on 3.3 (where did 3.2 go? long story). Supporting Thunderbird 3 is a
> * This approach assumes that you’ve got the $3.99 US per month mobile
> Ubuntu One service.
> Now, with respect to that last point, I’m not against paying for
> stuff. Money lets companies like Canonical, Funambol (and Mozilla
> Messaging, for that matter) survive. But I do think it’s a little
> silly that Thunderbird needs to pretend to be a mobile phone, and
> communicate through the mobile sync service. That’s why I said Hedera
> was the more direct solution.
> If I got any of that wrong, I’m sure someone from Funambol will
> comment and correct me. :)
> ### Bindwood
> Bindwood is an extension that allows Mozilla Firefox to synchronize
> bookmarks via Ubuntu One. The reason I’m putting this up, is because
> a lot of good code has been written here to communicate with the
> DesktopCouch service. If I resolve a few licensing issues, it might
> be possible for me to leverage some of that code to make the
> Thunderbird + Ubuntu One project move faster.
> ### Evolution
> Evolution currently has Ubuntu One support built in, thanks to the
> Evolution-CouchDB project.
> Evolution-CouchDB creates a new address book called “Ubuntu One” for
> every user. Any contacts that go into that address book are sync’d
> with Ubuntu One, and any contacts that get added to Ubuntu One get
> loaded into that address book.
> It’s an elegant solution, and addresses the issues I brought up with Hedera.
> If I were to implement a similar solution for Thunderbird, it would
> mean that contacts between Evolution would be seamlessly imported into
> Thunderbird. The behaviour would be exactly the same. Consistency is
> good. Consistency means happy users.
> Unless I hear compelling argument for something else, I think this the
> behaviour I’m going to implement.
> ### Mac OSX’s Address Book
> Mac OSX has it’s own internal address book, and many Mac-based
> Thunderbird users were crying out for integration. A developer named
> Peter Van der Beken karate-kicked the bug (and may have collected a
> bug bounty on it…unsure), and now we have OSX address book
> The OSX address book integration is very similar to Evolution’s
> behaviour: it creates a new address book within Thunderbird, and all
> contacts from the OSX native address book appear there.
> As it stands, this integration is read-only.
> Since we’re dealing with OSX, it means Objective-C is the name of the
> game. Here’s the code.
> Ugh. Wouldn’t it be awesome to leverage some of the work from
> Bindwood, Hedera (and maybe Funambol…I haven’t examined their code
> Yes! That’d be lovely!
> Except for one thing.
> ## RDF
> I spent most of yesterday examining this one, and I think I’ve got my
> head wrapped around it.
> So, RDF stands for Resource Description Framework, and it’s a way of
> representing information in a way so that machines can make useful
> inferences and queries about that information. That’s a
> super-simplified definition. Here’s something a little more robust.
> What does this have to do with Thunderbird and Ubuntu One?
> Well, it turns out that the Thunderbird address book interface uses
> RDF to query / know about the address books that are available. So,
> when you pop open the address book manager in Thunderbird, and it
> populates the list of address books, it’s using RDF to get that
> So what’s wrong with that? Well, it means that if I want to add a
> special “Ubuntu One” address book, it has to register itself with the
> RDF service as an RDFResource.
> There’s two issues there:
> * Part of RDFResource is not scriptable, which means it’d need to be
> implemented in C++. So much for leveraging Bindwood / Hedera /
> * The Thunderbird team knows about the limitations of RDF and are
> trying to remove it’s usage from Thunderbird. I’d hate to implement
> all that RDFResource stuff just so it can get tossed out in a few
> So I might have to really start pushing on RDF removal from the
> address book. If I go that route, it means that Ubuntu One
> synchronization would not be available for anything earlier than
> Thunderbird 3.3. Ugh.
> Sounds like it’s time for me to discuss this with my superiors. I’ll
> let you know what I find out.
> tb-planning mailing list
> tb-planning at mozilla.org
More information about the tb-planning