XUL application

Florian Quze --
FOSDEM 2011, Sunday, February, 6th

Good morning everybody.

My name is Florian Quze, I'm going to talk to you about Instantbird, an instant messaging application using Mozilla technologies.

I'll first say a few words about me so that you know who you are listening to, then about instant messaging: what it is, why it's important, what we don't like about it, what we would like, what we are doing about it, and how you can help.

Short bio

Ok, so... a few words about me. I'm French, as you may have already heard in my accent.

I've studied computer science.

You may remember me from some Firefox work I did, mostly in the Page Info dialog on which I worked for a few years, including as part of a summer of code project in 2006. I've also been intern at Mozilla for 3 months, working on Firefox 3.

Short bio (off topic)

And, some off-topic points about me:

I'm interested in Human Computer Interaction research, in psychology, etc... I'm currently studying sociology...

I love some old French cars and I'm the owner of a car that is almost twice as old as I am.

Instant messaging

So. Instant messaging. It's a very simple technology. Basically, it's just sending text messages and having presence information to know if your contact is likely to reply soon.

But it's probably an important component of your online life...

... actually, according to a comScore study, it's the number one online activity people spend time on in France! (The link is clickable and I'll post the slides online, so you can click if you are interested in the details of the study.)


Around 1998:

Here is an instant messaging tool you may have used over ten years ago. Or maybe you used ICQ at the time.

It's very basic, nothing fancy about it.

Those tools have evolved...


Currently (Yahoo! Messenger):

... now lots of people use tools like this. Here is Yahoo! Messenger. Much more colorful, with blinking ads, and lot of stuff you probably do not want.


Currently (Windows Live Messenger):

...and here is Windows Live Messenger, used a lot in Europe. Here again, very colorful, lot of useless stuff, blinking ads, ...

Actually, you probably don't use that, but many people do.


Web based:

What about your data?

There are also web based tools, for example. Or Facebook. Or Gmail. You may use them. That's convenient, but what about your data, your privacy? Do we know what those company do about your data? I don't think so. Well, I don't like this, and some of you probably don't like this either.

Our dream (1)

An instant messaging application that respects the user:

So, here is what we would like - our dream.

We would like an instant messaging application that respects the user.

That means it should respect the user's data and privacy,

but also the user's freedom to customize it. You should be able to change it, to "make it your own". So for you, that may be grab the source code and patch it, for average people that's more likely being able to change themes, colors, ...

The application should also respect the users' train of thoughts. That means it shouldn't interrupt or distract you with pointless things like popups, modal dialogs, blinking ads... or crashes... (people laughing in the room). Yeah, crashes are pointless in our use case.

Our dream (2)

Usable for all:

The second part of our dream is: it should be for all, it should be usable by anybody.

For that it should connect to all networks, so that you can reach all your friends with a single application.

It should work on all common OSes (Windows, Linux, Mac, and maybe Android someday).

It should be accessible.

And last but not least, it should be very easy to use. It should have a simple UI. That means the complicated features should not be in the way, and should probably be moved to add-ons that people can install if they want.

Ok, this is our dream, now...

What we are doing about it


... this is what we are actually doing about it: Instantbird.

Instantbird is a XUL application, so using Mozilla technologies.

It's extensible, with the same extensibility we love in Firefox.

It can easily be updated.

And we can use Mozilla crash reporting tools to improve its stability.

It's multi-protocol, for that we use the same library as Pidgin, so that you can connect to AIM, Yahoo, Google talk, ...

Instantbird - history

A bit of history.

The very first version of Instantbird, Instantbird 0.1, was released in 2007. With it you could have conversations, and see who was online. As you can see on the screenshot, the UI was mostly a draft... and in addition to that, it was a crashy draft. But...

it was downloaded over one hundred thousand times in a little more than a month. It showed us people were interested, there was a real need.

That motivated us to continue working on it. We released 3 minor versions with very badly needed features and fixes.

Instantbird - history

More recently, in 2010, we released Instantbird 0.2.

Most of the UI was redesigned or improved. The tabs in conversation windows are inspired from Firefox tabs and work exactly in the same way.

The content of conversations uses the same message theme system as Adium (we created our own themes though). It's a lot nicer, more colorful. There are emoticons.

The status selector at the top of the buddy list was new too, and we redesigned the account manager.

That version was customizable, especially in conversations. It was the first version with a preference window, so that people can adjust settings.

It was also the first localized version, with 5 locales at the time of the release.

Instantbird - next

Next, we plan to release Instantbird 0.3 in 2011.

The thing we have currently spent the most time on is JavaScript protocol plugins. The goal was to make it very easy to create protocol plugins, so that people with some JavaScript knowledge could create add-ons for the small networks they use but that we don't know anything about, so that they can really have all their IM networks in a single application. We want to make it very simple.

We recently implemented Twitter in JavaScript. It's available in current nightlies, it's been there for only a few days. It will be in Instantbird 0.3 alpha 1 that we plan to release early next week. The whole Twitter implementation is around 400 lines. That's very short.

The other thing we want to spend time on for 0.3 is contacts. If you can reach a person using several networks, we want that contact to appear as a single item in the list of contacts. We also want to redesign most of the contacts window.

Instantbird - usage

Usage evolution:

I explained briefly the history of the project, now let's see how it looks on our user base.

As you can see, our user count fluctuated a bit but mostly stagnated during the 0.1.* releases, we have a big jump at the time of the 0.2 release, and it continues to grow. What's especially interesting is it continues to grow even though we don't really communicate about it, we just posted a few blog posts at the time of the 0.2 release.

Behind the scene


I talked about the application you can download, now let's look at what's behind the scene.

For people to enjoy Instantbird and its extensibility, we need to provide an add-on website. It looks mostly like the Mozilla add-ons website, of course we took the code and adapted it.

We also need an update server so that you can benefit from easy updates.

We produce nightly builds, so we had to install buildbot, and we have build machines.

We also have a bugzilla so that you can report the bugs you find, and suggest enhancements...

... a wiki to discuss our future plans...

and a tool to analyze the crash reports we receive.

Behind the scene


All those services require servers.

We have to administrate them.

And they have costs, we need to pay for them.

Behind the scene


I talked about services and servers, there's another very important part that's not very visible: people!

First, most importantly, there are users. The project would be pointless without them.

There are also testers: people who test the nightlies, who report bugs...

The translators or localization teams. We have around 12 localizations in progress.

And code contributors, the people who write patches. And they start to do reviews too!

Challenges ahead

The challenges we have ahead of us:

We need to go from a project centered on one man (it's never really been a one man project, there were friends involved from the very beginning) to a project in the hands of a real team. This is a process that takes a lot of time. It needs time so that people join and learn the culture of the project.

Currently, we have about 25 people who come everyday in our IRC channel. We nearly have coverage at all times of the day if people ask support questions.

We have three frequent code contributors plus me, and they start to know enough about our code to give useful review comments.

Three people have already posted on our blog. That means when you get some information about the project from our blog, it no longer always comes from me.

And we have several localizations that have started or are ready. About a dozen locales.

That's great... but... not enough!

We need more.

Challenges ahead

We need...

We need to grow.

For that, we need to open every part of the project where some information may not be publicly available yet. If you notice that something is not public, please tell us about it.

And we need... YOU!

Get involved. It's very easy. You can just try it. Or talk about it. If you find something wrong, file bugs. If you would like to change something, you can create add-ons, or even send us patches if the change is useful for everybody.

But please, don't forget to have fun while doing it. That's very important for you to stay around.

Challenges ahead

Get revenue to:

Another challenge we have is we need to get revenue out of the project.

So that we no longer have to pay things like the servers "from our own pocket".

Or even to hire people to work on the project, to be paid for the time they spend on the project. I believe there are some things that really need to have people paid to do them, like fixing the servers as soon as possible at 3am if there was an issue that appeared in the middle of the night...




Ok, that's it for a quick overview of the project.

Now is the right time to ask questions.

Someone asked if one needs to download XULRunner separately to use Instantbird. The answer was no on Windows and Mac. On Windows you just download the installer (around 10 MB) and install it, like you would for Firefox. It doesn't use XULRunner, it's just a XUL application like Firefox or Thunderbird. On Linux, when using the package from the distribution, it will use the xulrunner installed on the system. If downloading a linux binary from our website, the mozilla toolkit will be included in the download, like on Windows.

Someone else asked: 1. If file transfer is supported (the answer was: no, not yet. File transfer is frustrating because it's unreliable, it very rarely works as soon as proxies and firewall are involved, and we don't want to put something in the UI if it's unlikely to work. Before supporting file transfer, we would like to implement a fallback to an HTTP service where the file could be uploaded, to guarantee it will always work.) 2. If Skype is supported (the answer was: no, Skype is a completely closed protocol, and no open source application supports it without having to run the Skype application in the background. Someone in the room offered to help by giving us a contact who could likely help us get an SDK.) 3. If we are building a business around the project (the answer was: yes, but with the business model I would like, we would need at least a million users for it to work. We will never put ads in the product or do things that don't respect the user. An alternative possibility that I don't like as much would be to say we are experts about Instantbird and sell our services to companies that would like to customize it.

I think another question was asked, but I don't remember what it was.

If you want to ask questions later, you can join us on IRC, or email our mailing list, or if it's personal, well, just email me.

Thanks for your attention!

2011 Florian Quze <>