Category Archives: Technology

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.

This is my last “goodbye school” post, I swear.

So a few days ago, my official grades for my M. Sc. rolled in.  That same day, I went to the Bahen Centre, turned in my desk keys, got my keycard authorization revoked, and scheduled my computer for erasure.

It felt like some pretty big steps.  There was a palpable sense of finality.  I was out.  It was over.

The University has played a big role in my development, and despite all of my moaning and complaining over the years, I’m glad I went, and I’d do it again.

But not right now.

Graduate school almost didn’t happen for me, and I have two very important people to thank for making that happen:  Karen Reid and Greg Wilson.

I still fondly remember when you cornered me during that codesprint in 2009, and convinced me to try graduate school.  I don’t regret it.  It was the right decision.  So thank you both so much for convincing me, and giving me the chance, and thank you Greg for supervising, and guiding me through.

I learned lots.  I had fun.  🙂

Shakespeare wrote that brevity is the soul of wit.  Well, I

Starting Work on Mozilla Thunderbird

With the Winter holidays drawing to a close, I’m really looking forward to starting the next chapter of my life – namely, my new job at Mozilla Messaging working on the Thunderbird e-mail client.

In just a little under a week, I’ll be knee-deep in a code-base larger than any I’ve ever worked on before.  And I’ll be working with some of the best software developers in the world.

I’m pretty stoked.

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.

My job is to get Thunderbird to use the global menu bar properly.  Click here to read more about Ubuntu Unity’s global menu bar.

The Messaging Menu

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 Messaging Menu

It’s up to messaging application developers to leverage this feature in Unity, and that’s where I come in.  I’ll be getting Thunderbird to work nicely with this messaging menu.  Click here to read more about Ubuntu Unity’s messaging menu.

The Task List

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:

Unity Launcher Introduction from Canonical Design on Vimeo.

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.

The Wisdom of Peers: A Motive for Exploring Peer Code Review in the Classroom

A major part of my Master’s degree requirements was my research paper.  If you heard me lament over the past year or so about my “thesis”, I was referring to this research paper.

Anyhow, after lots of hard work, my research paper was finally signed off by my supervisor, Dr. Greg Wilson, and second reader Dr. Yuri Takhteyev.  A huge thanks to both of them!

Here’s the abstract, followed by a download link for the PDF.  Enjoy!

Abstract

Peer code review is commonly used in the software development industry to identify and fix problems during the development process. An additional benefit is that it seems to help spread knowledge and expertise around the team conducting the review. So is it possible to leverage peer code review as a learning tool? Our experiment results show that peer code review seems to cause a performance boost in students. They also show that the average total peer mark generated by students seems to be similar to the total mark that a graduate-level teaching assistant might give. We found that students agree that peer code review teaches them something – however, we also found they do not enjoy grading their peers’ work. We are encouraged by these results, and feel that they are a strong motive for further research in this area.

Click here to download my research paper