Word has just come down from Canonical: Thunderbird will be the default e-mail client in Ubuntu Oneiric!
Woo! And there was much rejoicing!
Now, you might think this news is a bit late. Thunderbird has been set as the default e-mail client on the past two Oneiric alphas. Isn’t this old news?
Well, kinda, yeah. But the thing is, those first alphas were just to get a sense of how Thunderbird would work as the default client, and to gather feedback. At a moments notice, Canonical could have backed it out and switched it back to Evolution.
But they’ve given their thumbs up, and they’re fully on board.
So, at the risk of repeating myself: come early October, Thunderbird will be shipped by default!Woop!
UPDATE (Aug 10, 2:41PM EST)
I forgot to mention that this would not have been possible without the enormous efforts of both Chris Coulson and Andreas Nilsson! You’re both awesome!
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.
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).
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.
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 back. The 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.
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:
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…
So, what exactly will I be doing for Thunderbird? What project will I be starting my work with? I’m so glad you asked…
Thunderbird + Unity = Badass
Ok, that’s not technically the code-name for the project, but I think it more or less conveys my feelings about the whole thing.
So here’s the story in a nutshell:
Ubuntu Linux is one of several operating systems that Thunderbird runs on (the other big ones being Mac OSX and the various flavours of Microsoft Windows). I use Ubuntu as my primary operating system – I’m comfortable with it, and I like it.
In the coming months, there will be a tectonic shift of sorts in Ubuntu. The graphical user interface that most Ubuntu users are used to (the GNOME Shell) will no longer be the default. Instead, Canonical, the makers of Ubuntu, have created their own user interface to run on top of GNOME. That interface is called Unity, and will be made default in the Natty Narwhal release (due to come out on or around April 28th of this year).
Just to make sure we’re clear on this: Ubuntu is not dropping GNOME. The GNOME Shell is the icing on the whole GNOME Stack. Canonical has just decided to put their own icing on the cake.
So, anyhow, my job is to make Thunderbird work nicely with Unity in time for the April 28th release.
And by “work nicely”, I mean the following:
The Global Menu Bar
If you’ve never used Mac OSX, it’s likely that you don’t know what a global menu bar is. Here’s the idea: in Windows and Ubuntu, each window tends to have its own menu bar (File, Edit, etc…).
In Mac OSX, and the upcoming Unity shell, instead of having these individual menu bars, we have a single, overarching menu bar. This menu bar changes itself every time you switch application focus.
Here’s some guy demonstrating the global menu in Ubuntu Linux:
Currently, Thunderbird doesn’t “play nice” with Unity’s global menu bar, and just displays the menu within the Thunderbird window as it always has.
Ubuntu Unity also sports a shiny new messaging menu. The messaging menu aggregates all sorts of message-related information – and that includes e-mail messages, chat messages, social networking messages, etc. It tosses all of these into a nice, clean, simple notification interface, like this:
Ubuntu Unity also sports a new application launcher. The launcher is a panel that stretches down the left-hand side of the screen, and allows users to quickly find and execute their applications. It also lets users know which applications are already open. In a way, it is very similar to the Mac OSX dock.
Here is a Canonical designer demonstrating the new launcher:
Right-clicking on an item in the launcher brings up a context-menu for the selected application. For Thunderbird, we’ll probably want the context menu to allow users to do some common operations, such as fetching mail, and composing a new message. We’ll probably also want to display the number of unread messages. So that’s what I’m going to be looking into there.
I’m looking forward to tackling these problems! I’ll keep you posted on my progress.
I can’t honestly say I’ve been doing much test-driven development on Review Board. Django is a really cool web-framework, but I miss all of the nice testing tools from the Rails ecosystem.
Anyhow, today, I decided to run the tests, and BAM – Segmentation Fault:
Testing Perforce binary diff parsing … SKIP: perforce/p4python is not installed
Testing PerforceTool.get_changeset … SKIP: perforce/p4python is not installed
Testing Perforce empty and normal diff parsing … SKIP: perforce/p4python is not installed
Testing Perforce empty diff parsing … SKIP: perforce/p4python is not installed
Testing PerforceTool.get_file … SKIP: perforce/p4python is not installed
Testing parsing SVN diff with binary file … ok
Testing SVNTool.get_file … Segmentation Fault
Yikes. Getting a segfault in Python is unusual, and a little jarring. However, it did let me narrow down the problem a bit: it must have to do with the pysvn bindings that Review Board uses to talk to Subversion, because those are written in C++ (which can certainly segfault).
The machine I was using had Ubuntu Hardy on it, and the Hardy packages have pysvn 1.5.2-1. Taking a look at the pysvn homepage, the most recent version is actually 1.7.2.