Posts tagged ‘contacts’

Sync Thunderbird with your Google Contacts

There are a bunch of add-ons out there to help you sync Thunderbird with your Google Contacts.

I want to share my favourite one with you.

Simply named, “Google Contacts”, this add-on automatically detects if you have a GMail account in your profile, and does the rest of the heavy lifting for you.

Honestly, it’s as easy as falling off a bike.

Get it here.

So a big thank you to the add-on developer, H. Ogi!

4 people like this post.

Whoops – I forgot I was a scientist

So yesterday I posted some mock-ups for a new Thunderbird address book design, and I got a bunch of really awesome, useful feedback.

Probably what rang out loudest for me was that I don’t really have any data on how real users actually use Thunderbird’s address book.  I know how I use it, but that’s about it.  In fact, I talked a Thunderbird user the other day who didn’t even know that the Thunderbird address book existed.  Go figure.

And here I went and jumped the gun, and tossed together some mock-ups.

If there’s anything that my grad supervisor Greg Wilson taught me, it’s not to jump to conclusions (or mock-ups) when we don’t have any data to back it up.  I’m a scientist, damn it, and that’s just how we roll.

Credit: http://cowbirdsinlove.com/46

 

Firefox has this great add-on called Test Pilot that lets Firefox users volunteer to have data periodically collected from them.  Work to get Test Pilot working for Thunderbird is underway, and I think that’d be an awesome tool for gathering feedback about how users use the address book.

Some questions I’d want answered, right off the top of my dome, in no particular order:

  1. Does anybody actually use Thunderbird’s address book?
  2. When someone is using the address book, what are they likely doing?
    1. Looking for a contact?
    2. Sorting and organizing their contacts?
    3. Creating or editing contacts?
    4. Other?
  3. Do people use mailing lists?  If so, how many do they tend to have?
  4. How many address books do people tend to have?
  5. How many address books do people want to have?
  6. How many contacts to people tend to have in their address books?
  7. Is it important for people to be able to group their contacts into sets, like “Family”, “Friends”, “Acquaintances”, “Employees”, “Co-workers”, etc?
  8. Given several address books, where each address book has some large number of contacts, how quickly can an individual contact be found?
  9. How much switching back and forth from mouse and keyboard is required to create a new contact, or to edit an old contact?
  10. How important is it for Thunderbird’s contacts to be synchronized with other contact services, like Google Contacts or the OSX address book?
    1. Or is it sufficient just to import them?
  11. How important is it for Thunderbird’s contacts to be synchronized with user’s mobile devices?
  12. On average, how long does it take to create a new contact?
  13. On average, how long does it take to edit a contact?
  14. On average, how much time are users spending in the address book?
  15. What fields do most users want to associate with a contact?
  16. What are the top 10 complaints about Thunderbird’s address book?
  17. What are the top 10 best things about Thunderbird’s address book?

What are some other questions I should try to get answered?

UPDATE (Aug 29 – 10:00EST)

I’ve gotten some awesome feedback on this post, and some new questions to add to my list.  Here they are, in no particular order:

  1. What is the main way in which Thunderbird users use and manipulate their address books?
    1. Through the main address book interface
    2. Through the contacts sidebar in the compose window
    3. Through the inline contact editor within a message header
    4. Other?
  2. If the answer to the above is anything other than 1, is it possible that the address book manager is not needed?  Or does not need to be as complicated as it already is?
  3. How many duplicate contacts does the average user possess (where a duplicate contact is a contact with the same e-mail address, or possibly the same name)
  4. How frustrating is it to add a contact in Thunderbird?
  5. How frustrating is it to edit a contact in Thunderbird?
  6. How frustrating is it to search for a contact in Thunderbird?
  7. How often do users want to create a contact based on a pre-existing one?  Example – creating co-workers, with similar fields for work addresses, etc, but different names, phones, etc.
2 people like this post.

Fiddling with designs for a future Thunderbird address book

State of the current Thunderbird address book

While I was hacking away on my EDS Contacts Integration add-on, I got pretty familiar with the Thunderbird address book.

And as it stands, it’s adequate – but adequate like a pickle is adequate for dinner if it’s the only thing left in the fridge.

The address book interface hasn’t even really changed that much since it was part of Netscape Communicator.  Check it out:

Before:

Here's a screenshot of the address book from Netscape Communicator

After:

Here's a shot of the Thunderbird address book on Ubuntu Oneiric

Verdict: the Thunderbird address book is still stuck in the 90′s.  It still assumes that your contacts only have one or two email addresses.  It doesn’t have any notion of Twitter accounts, Facebook accounts, LinkedIn Profiles, or anything that we would associate with a modern online contact identity.  It’s not flexible in the type and quantity of fields that can be associated with a contact.

We can do better.

Some designs I’ve been fiddling with

I should start by saying that the following are just ideas that I’ve been tossing around, and it’s still very very early in the design process.  This is just a starting point. Feedback is encouraged!

Ok, enough disclaimer.  Here we go:

The first thing to notice is that the address book is now contained in a tab, as opposed to a separate pop-up window.

Next, notice that he tree of “address books” on the left is now gone.  I always found it strange to open up the Thunderbird address book, and see that there were…address books inside of the address book.  What I imagine instead is that the Thunderbird address book will know about “contact providers”, like Google Contacts, the OSX address book, the Evolution Data Server contacts database, etc.  Thunderbird will copy all of those contacts locally for fast searching and processing, and synchronize changes both ways.  It’ll also merge contacts that it realizes are the same person. (that’s a ton of work already…).

“But wait!”, I hear you cry.  “I don’t want my Google Contacts to be mixed with the contacts from my OSX address book!”.

No problem – the new address book could have a notion of contact groups.  Contacts imported from the OSX address book will belong to the OSX address book.  Contacts imported from Google Contacts will belong to the Google Contacts group.

And contacts that were common between the two contact providers, and merged, will belong to both groups.  Think of it like Google Plus’s Circles – a user can belong to one-or-several contact groups.

And if you want to view the contacts in a particular group, you could just choose that group from the contact group dropdown:

If we select a contact, we could view it like so:

 

And then we could edit it by clicking the “Edit” button towards the top right:

When we’re editing a contact, the contact list slides away, and we get the full space of the address book to edit the contact.  I haven’t exactly figured out what the various editing tools will look like on a contact (especially considering a merged contact where some elements of the contact exist in one contact provider, but cannot exist in another…ugh).

So one thing that we’re missing in that last screenshot is a “Cancel” button.  Notice that we have those back/forward navigation buttons in the top left.  I’m not sure if those are sufficient / clear enough for the job…but suppose the user could just click “back” to return to viewing the contact without having saved it.

But what about selecting multiple contacts within the contact list?  That might look like this:

So I’ve selected a few contacts here, and I can do various things with this selection – like removing the contacts from my address book, or printing them, etc.  I can also assign these contacts to contact groups en masse.

Highlighting Barry Addison, Bruce Botrill and Phil Cassidy, I can see that all three belong to my “Friends” and “Clients” groups.  Notice that the “Baseball Team” group checkbox looks a bit funny – it’s half filled in, which means that only some of my selection belongs to this group.

From here, I can just click on the various groups I want to assign these three contacts to.  If I click on “Baseball Team”, the half-filled checkbox turns into a check – meaning that all of the contacts I’ve selected will be assigned to that group.  Clicking it again would clear the check, meaning that all of the contacts I’ve selected will not be assigned to that group (and will be un-assigned if that already were assigned).  And if I were to click that checkbox one more time, then it’d go back to it’s half-filled state, meaning that I’ll just keep the contacts that are assigned to “Baseball Team” where they are, and won’t add or remove any contacts from that group.  It’s a tri-state checkbox.  Kinda funky, but it’s my current solution.

Some other ideas worth mentioning:

Asynchronous

Currently, many operations conducted by the address book are synchronous, meaning that the user interface can feel sluggish while it’s waiting for certain events to occur (like writing contact data to a database).  These events should really happen in the background so that the address book stays nice and snappy, and the user can go about their work.

Undo / Redo

This is a big one – any edit or delete events should be un-doable and re-doable.  No exceptions.

So that’s what I’ve been thinking about.

Feedback?

16 people like this post.

EDS Contacts Integration for Thunderbird – So What?

Some of you might be wondering what the advantage is of having Thunderbird share address books with Evolution.  I mean, what’s the point?  A user will most likely use Thunderbird or Evolution – but rarely both.  Why is sharing contacts between the two interesting at all?

So, the answer lies in how Evolution stores contacts.  If you’re running Evolution, you’re actually running two pieces of software – the Evolution client, and the Evolution Data Server (EDS).  The client is what most users think of as Evolution – it’s the program with the GUI that allows users to access and manipulate their mail, contacts, calendar, etc.

But the heavy lifting is really being done by the Evolution Data Server.  The EDS is the program communicating with the e-mail servers to get and store your mail.  It’s the program communicating with your various address books (local or remote, like Google Contacts).  It’s the program that’s communicating with all of your calendars and task lists.

Essentially, if your Evolution experience was a restaurant, then the Evolution Data Server is the kitchen.  The Evolution client is just your waiter.  The waiter takes your orders and passes them off to the kitchen, the kitchen does all of the cooking, and then the waiter brings you the tasty results.

The fact that GNOME has split Evolution like this is really handy.  It means that alternative clients can access Evolution’s mail, contacts and calendars.  Essentially, the user could uninstall the Evolution client, but keep EDS installed, and still have access to all of their mail, contacts and calendars.

To stretch the restaurant analogy a little bit, what I’m saying is that the GNOME developers made it possible for you to order take out from the Evolution restaurant via a third-party.

So what’s the advantage of that?

Well, for one thing, Evolution Data Server talks to some services that Thunderbird doesn’t – for example, Google Contacts (although, this extension suggests that Google Contacts integration for Thunderbird is possible without EDS).

The other big one is Ubuntu One contacts sync.  Ubuntu One contacts are stored in CouchDB address books that are accessed through EDS.  Now that Thunderbird can read your EDS address books, it means that you get your Ubuntu One contacts as well (at least, it will be able to, once Ubuntu One contacts sync starts working in Oneiric).

Not bad, eh?

5 people like this post.

Introducing EDS Contacts Integration for Thunderbird (or “Coming up for air”)

Holy smokes, what a pair of months.  Remember when I told you that I was hauling ass on getting an EDS contact integration add-on up and running for Ubuntu Oneiric?  It didn’t stop – I’ve been continuing to haul ass ever since.

And now I’ve got something to show for my efforts!

Here’s a demonstration of my add-on in action:

 

Visit the project page here.

If you’re using Thunderbird on Oneiric, I’d love for you to try the add-on.  All feedback welcome in this Google Groups thread!

Over the next few days, I’m going to write a few posts on what I did, how I did it, and what kind of difficulties I ran into along the way.

Until then, stay tuned!

4 people like this post.

An update on my Thunderbird work…

It’s been a really long time since I posted any updates about what I’ve been doing with Thunderbird.

There’s a good reason – I’ve been hauling ass. My Unity Launcher and Messaging Menu extensions have gone through several iterations, and are shaping up well.  The plan is to bundle those extensions with the latest Thunderbird 5.0 beta to get some more user feedback.

The majority of my work lately has been on a project called EDS Contacts Integration.  Do you remember when I talked about Ubuntu One contacts sync, and how I wanted to integrate that with Thunderbird’s address book?  Well, I went to UDS a few weeks back, and I learned that a bigger / better goal would be to integrate with EDS (Evolution Data Server), which acts like the global address book, task list, calendar, etc for Ubuntu.  If I integrate here, then *all* Evolution address books (including the Ubuntu One address book and Google Contacts address books) should be available in Thunderbird.  So it’s a pretty big win.

So, like the Unity Launcher and Messaging Menu integration, this integration is currently being implemented as a Thunderbird add-on.

Currently, this add-on has basic read-only.  I can view EDS address books, contacts and mailing lists.  EDS contacts appear in the auto-complete when I start typing an e-mail address.  They’re searchable.  I can view the photos of EDS contacts.  There are some edge cases that I haven’t addressed yet (reading address books that require authentication, for example).  That’ll be coming soon.

Here’s a screenshot.

I’ve also started work on write capabilities.  I can now add and remove addresses on a mailing list, and set whether or not I want e-mail addresses to be hidden when I send mail to the list.

So, in short, I’m making pretty decent progress.  Not bad for a month’s work.

But I can’t just fork over the add-on for you to play with, because this work has several other moving parts.  The first moving part is the core address book de-RDF’ing work I started a few months backThe patch for this is landing in Thunderbird’s trunk shortly, which I’ve very excited about.  And the second moving part:  a patch in trunk where I’ve made a few slight modifications to the address book infrastructure.  This makes it easier for add-ons (like my EDS integration add-on) to extend the behaviour of the address book.  This will also, hopefully, be landing shortly once I’ve polished it up, and gotten it through review.

Once those patches land, my add-on should work properly on trunk.  And not long after that, the patches will land in an Early Bird release for you all to try!

More blogging soon.  And more screenshots.  And maybe a video.  Stay tuned.

5 people like this post.

Getting the RDF Out

As I mentioned last time, I want to extend the Thunderbird address book to support Ubuntu One contacts synchronization.

But there’s a problem:  currently, the address book relies on something called RDF, which prevents me from extending the address books outside of C++.

“So why not just write it in C++?”, I hear you cry!

The answer:  because Thunderbird has been trying to shake RDF like a bad cold.  A developer named Joey Minta officially declared war on RDF in March of 2008.  The campaign to rid Thunderbird of RDF is almost complete.

So I’d hate to damage the war effort by adding more RDF code to Thunderbird.

The solution?  I have to finish what Joey Minta started – at least for the address book.  I have to replace all RDF-dependant code with something better – something extendable.

Then I can get down to work on the Ubuntu One sync.

So saddle up.  We have to hunt this RDF bum down.  For justice.

2 people like this post.

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 any 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:

  1. Part of RDFResource is not scriptable, which means it’d need to be implemented in C++.  So much for leveraging Bindwood / Hedera / Funambol.
  2. 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.

4 people like this post.

My Campaign to get Thunderbird Integrated into Ubuntu Natty Narwhal Continues…

I’ve been silent about my work for a few weeks, which is a shame, because one of the top reasons why I accepted a job with Mozilla Messaging was because I was free to talk about what I was doing.

I’ve been neglecting that right, but only because I’ve been holy shit busy.  I’ve been blitzing my Ubuntu Unity integration work like a MoFo, and have gotten two Thunderbird extensions up on Mozilla Labs:

  1. Messaging Menu integration
  2. Unity Launcher integration

So what’s next?

Ubuntu One

Ubuntu One is a service that allows you to sync things like files, bookmarks and contacts between different computers.  (Incidentally, Mozilla has their own service called Sync to do something similar with bookmarks and passwords.)

That’s a pretty cool idea.  Imagine it – you get a brand new computer, hook it up to Ubuntu One, and blam:  all of your bookmarks and contacts are already there waiting for you.

Currently, however, Thunderbird does not support sharing contacts via Ubuntu One.

And that’s what I’m tackling next.

Ubuntu One Contacts Integration

At this point, my goal is to write an extension that will add a new address book to Thunderbird.  Any contacts that are currently stored and shared via Ubuntu One will appear in that address book.

I’ll deal with adding new contacts later – for now, I’ll just do read-only, to keep the complexity down.

So stay tuned.  Ubuntu One Contacts integration is coming…

23 people like this post.