Thunderbird + Ubuntu One Integration: Prior Art and RDF

Mike Conley mconley at
Mon Mar 21 17:31:42 UTC 2011


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.


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