Thunderbird + Ubuntu One Integration: Prior Art and RDF

Dan Mosedale dmose at
Mon Mar 21 22:53:59 UTC 2011

Ah, you're quite right.  I skimmed that message a little too quickly.


On Mon Mar 21 10:31:42 2011, Mike Conley wrote:
> Dan:
> Good question.  From what I gather, I think the answer is no - since
> we'd need to be in script in order to invoke jsctypes.  Perhaps I
> misunderstood your question, though.
> -Mike
> On Thu, Mar 17, 2011 at 4:45 PM, Dan Mosedale<dmose at>  wrote:
>> Would it be possible to use js-ctypes to get around the lack of
>> scriptability?
>> Dan
>> On 3/17/11 11:21 AM, Mike Conley wrote:
>>> All:
>>> 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
>>> claims.)
>>> ## 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
>>> profiles).
>>> 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
>>> services.
>>> 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
>>> BFD.
>>> * 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
>>> integration.
>>> 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
>>> yet), and implement the Ubuntu One integration all in Javascript?
>>> 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
>>> information.
>>> 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 /
>>> Funambol.
>>> * 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
>>> months.
>>> 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

More information about the tb-planning mailing list