Archive for the ‘Thunderbird’ Category.

Scratchpad ported to Thunderbird. Kinda.

Firefox has a sweet suite of developer tools. If you haven’t used them, you’re seriously missing out.

Thunderbird, on the other hand, has very little in the way of developer tools. We used to have ChromeBug, but then that project went by the wayside when the Firebug developers decided to focus more on, well, Firebug.

And ever since, debugging and fiddling around in Thunderbird has been a pain.

So a few folks on the TB team decided to take a crack at porting one of Firefox’s tools to Thunderbird. We chose Scratchpad (or rather, its earlier incarnation, “Workspace”), because being able to execute snippets of script on the fly is super-useful for trying stuff out.

So without further ado, here it is – Workspace for Thunderbird.

Install that, and a new Workspace menuitem appears under Tools. This will open up Workspace. Make sure to switch your Context to Chrome for superpowers.

1 person likes this post.

A Slight Redirection

Last week, I wrote a post about a plan to extend the up-and-coming B2G Contacts App into the next iteration of Thunderbird’s address book.

After careful consideration, we’re going to redirect that effort a little bit.

Instead of working on the Gaia Contacts App, I’ll instead be focusing on making the underlying Contacts API work on desktop (at least for Thunderbird).

We will then design an address book for Thunderbird, distinct from the Gaia Contacts app, to operate on top of the Contacts API.

I’m really sorry about the confusion. I made a mistake, and misinterpreted a few lines in an email, got excited, and then put up a blog post about it. My bad, and I’m sorry.  Here’s a puppy:

http://www.mylot.com/w/image/2397146.aspx

Ultimately, this is likely a good direction; extending a mobile application like the Contacts app to be a fully functional desktop address book was, in hindsight, a bit of a long-shot.

Anyhow, this is all implementation detail. The good news is that Thunderbird will be getting a new address book, and now we have full-reign to design the user experience and interface ourselves!

10 people like this post.

Hey, what about Thunderbird’s new address book?

UPDATE (May 7th, 2012): Some of the information in this post is now out of date / inaccurate.  See this post for more information.

This happens every couple of months – I go total heads down on a project, and I don’t blog. That’s no good for people who are interested in what I’m doing.

Filelink

So lately, I’ve been busy helping to get Filelink ready for its Thunderbird 13 debut. Filelink is a feature that allows users to upload attachments to Dropbox and YouSendIt (and more, soon), and then insert links into the emails instead of the whole attachments.

That’s a good thing. Every time you send a large attachment through e-mail, Tim Berners-Lee cries.

The Filelink work is almost done, which leads me to…

Address book

I went to some lengths last year to extend and improve the Thunderbird address book, and it’s still in pretty rough shape. For a while now, I’ve wanted to redesign it from the ground up – but some other project usually gets in the way before I can really tackle it.

With Filelink out of the way, I think I might get some time to hack on this.

But…I think I’m going to be taking a round-about route. Before I go into this, I’m going to need to mention The Kilimanjaro Event…

The Kilimanjaro Event

Damon Sicore is the VP of Engineering at Mozilla, and he recently posted about a new initiative at Mozilla, called The Kilimanjaro Event.

Salient point:

The Kilimanjaro Event is the point in time (not a release) when we realize a tightly integrated set of products that enables users to use the ID of their choice to find and install Web apps from HTML5 App marketplaces–including one created by Mozilla–and have those apps and appropriate data synchronized amongst devices.  It is important to point out that the Kilimanjaro Event is not a single release.  It is an incremental effort where we deliver a series of releases and features to each of our products that result in and enable an end-to-end user experience across these efforts.

One of the key components involved in reaching The Kilimanjaro Event is the mobile operating system that Mozilla is working on, code-named Boot2Gecko (or B2G).

Boot2Gecko (B2G)

Put simply, B2G runs web apps. Period. The B2G dialer?  Web app. The settings manager? Web app. The lock screen? Web app.

The contacts manager?

You guessed it.

The Contacts App

B2G will ship with a series of apps (Gaia) – and among those will be an app for managing your contacts. I’ve gotten myself involved there, and have started getting my hands dirty in Gaia code.

So what’s the plan? How does this affect Thunderbird?

My idea is to work on this app for B2G, get it shipped, and then attempt to bring it over to Thunderbird, expanding it and specializing it where necessary.

This offers a number of advantages:

  1. The Contacts app for B2G will be entirely HTML5/JS/CSS based, meaning a lower barrier to entry for hacking on
  2. The Contacts app makes use of the Contacts API, which allows us to add an arbitrary number of email addresses, phone numbers, and all the other goodness that you’d normally expect from a modern address book
  3. Part of the Kilimanjaro Event is to have “apps and appropriate data synchronized amongst devices”. This includes contact data. This means that if we can get Firefox Sync brought over to Thunderbird, and rely on the Contacts API for contact storage, we can likely get contact synchronization pretty cheaply.  That means that your Thunderbird contacts will be synchronized with your B2G phone (or whichever device is running the Contacts app).  Not bad!
  4. Synchronizing with services like Facebook, Google Contacts, LinkedIn, etc – this is something that’s on the eventual roadmap for the Contacts app.  Thunderbird can ride that wave too.
  5. Importing from services like those listed above are a pretty high priority, and will likely be supported sooner rather than later.

Now, a couple of things that worry me a little:

  1. I don’t want to fork the Contacts app, meaning that I want the core to remain the same as it exists in Gaia. Instead, I want to layer more code on top of the app in order to make it make sense in the context of a desktop application. Possible? Sure. Tricky? Almost certainly.
  2. The Contacts API isn’t currently supported for desktop right now – the WebAPI team is working hard on getting it working right for mobile first.  Desktop is a distant goal.
  3. Also, the Contacts API is defined as an interface for accessing the device address book.  For a phone, it’s obvious what that is.  For a desktop, it means the OS address book.  This means that, unless I’m misunderstanding, TB contacts will be going directly into the OSX address book, Windows Contacts, what-have-you.  If no such service exists in the OS, Gecko puts together a fallback database for you.

Papercuts

Along with this contacts work, there are a bunch of long-standing Thunderbird papercuts that I want to smash through. Here’s a partial list of them.

I’m hoping to drop that list to close to zero for TB 15.  Fingers crossed!

Anyhow, this appears to be my current trajectory, until further notice.

6 people like this post.

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.

My Thunderbird / Firefox wallet – one of a kind

My friend Joel Beck is kind of a badass.

When he’s not designing / building reactors for Atlantic Hydrogen in New Brunswick, he’s learning all sorts of cool skills.

Skills like leather-working.

Look what he gave me as an early Xmas gift:

A hand-made leather wallet by my friend Joel Beck
A hand-made leather wallet by my friend Joel Beck10-Dec-2011 22:44, google Nexus S, 2.6, 3.43mm, 0.017 sec, ISO 50
Thunderbird!
Thunderbird!10-Dec-2011 22:44, google Nexus S, 2.6, 3.43mm, 0.008 sec, ISO 50
Firefox!
Firefox!10-Dec-2011 22:44, google Nexus S, 2.6, 3.43mm, 0.008 sec, ISO 100
10-Dec-2011 22:45, google Nexus S, 2.6, 3.43mm, 0.008 sec, ISO 100
10-Dec-2011 22:45, google Nexus S, 2.6, 3.43mm, 0.008 sec, ISO 50
Just look at that detail.
Just look at that detail.10-Dec-2011 22:45, google Nexus S, 2.6, 3.43mm, 0.003 sec, ISO 50
Mind = blown.
Mind = blown.10-Dec-2011 22:45, google Nexus S, 2.6, 3.43mm, 0.004 sec, ISO 50

This is a one-of-a-kind, hand-made leather wallet, made by my good friend Joel Beck.

Thanks Joel.

2 people like this post.

Build Thunderbird Faster on Windows

There’s no denying it: the vast majority of Thunderbird users are using some flavour of Windows.

So it’s a bit strange that I do most of my development on Linux, and use Thunderbird most regularly on Mac OSX.

Therefore, I’ve recently gotten a hold of a new, super-powerful Windows 7 box.  Furthermore, in an effort to better understand what my users go through and experience, I’ll also be using Thunderbird on Windows as my primary mechanism for reading my mail.

So that’s all good, but there’s one problem:  building Thunderbird on Windows takes forever.

But it doesn’t have to.

So the Simple Build Instructions for Thunderbird instructs developers to get the MozillaBuild package, which includes a bunch of the tools you need to get Mozilla stuff up and building on Windows.  One of those tools is “make“, which is a tool that originates from the world of UNIX and Linux.

The problem with the make included with MozillaBuild is that it doesn’t take advantage of multiple processor cores on Windows.  So even if you have a crazy-powerful 8-core machine, when you just use the vanilla “make -f client.mk” command, you’re only going to be using one of your cores.

Enter pymake.  Pymake is a Mozilla-maintained mostly-compatible implementation of make in Python.  The advantage?  On Windows, we can finally use all of our cores.

So here’s how to set that up.

  1. I assume you’ve followed the instructions for setting up your Windows build environment, laid out here.
  2. I also assume you’ve checked out a copy of comm-central, have set up your .mozconfig, and have run “python client.py checkout” to grab Gecko, etc.
  3. If your Windows username has a space in it, like “Mike Conley”, you might want to create a new Windows account for the stuff we’re about to do.  I use “mconley”.
  4. You’re going to want to alias pymake – open up an editor, and create a file called .profile under C:/Users/[username]/  (I assume you’re on the C drive anyhow, and are using Windows 7)
  5. In that .profile file, put in the following line:   alias pymake=/c/Users/[username]/[path to comm-central]/mozilla/build/pymake/make.py
  6. Restart your shell, and ensure there are no errors in the first couple of lines that spring up at the top.  If you type pymake, it should say towards the bottom “No makefile found”.
  7. Go to the parent of your comm-central directory, and create a new directory for your obj-dir (where your binaries and executable will eventually end up).\
  8. In that directory, run the command:  “../comm-central/configure” – so we’re invoking the configure within the comm-central directory, but within the obj-dir folder we created
  9. The configure might fail while looking for the compiler.  Just try it again until it works.  *sigh*.
  10. Once the configure command is done, within your obj-dir folder, type:   pymake -sj4 (or 8, if you have 8 cores)

And blam, now you’re cookin’!

I can get a debug build done, from scratch, in about 22 minutes.  Woo!

5 people like this post.

Still Alive

Once again, I’ve let my blog gather dust.  And the comments have been piling up.  And the emails have been rolling in.  And I’ve been silent.

Sorry about that!

I’ve been pretty heads-down lately – here’s what’s going on:

  1. The address book work I was talking about has been put on a tiny bit of a backburner as I deal with two more pressing Thunderbird projects, namely, finishing up the Account Provisioner (a service that offers you email addresses if you don’t already have one) and Tabs on top (a part of the general UX refresh that Thunderbird is working towards)
  2. A few weeks ago, I was knee-deep in sound design for a show called FIREraisers being put up by the red light district.
  3. UCOSP has been going strong, and our Review Board students have been pluggin’ away.

About the address book – I’ve received a bunch of email making suggestions and asking for things.  That’s great!  I’ll comment on that shortly – I just need a little more time to clear Account Provisioner and Tabs on Top off my plate.

More soon.

5 people like this post.

Creating a new Thunderbird Address Book: the feature page, and some literature…

So my dream of redesigning / rebuilding the Thunderbird address book is moving forward.  Here’s the draft feature page.

I also got the Contacts add-on from Labs working (limping, rather) in Thunderbird.  Some very interesting ideas in that add-on.

I’ve also started reading some related work.  Here’s what I’ve been gazing at for the past few days:

  1. Bug 674720 (WebContacts or Contacts+)
  2. The W3C Contacts API draft spec
  3. The PortableContacts draft spec
  4. The vCard spec
  5. The Firefox Sync development documents

So, basically, I’m exposing myself to as much current work in this problem space as possible.  Is there anything else I should be reading?

39 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?

17 people like this post.