Instantbird 1.1 released!

Exactly 4 years after the very early 0.1 preview, Instantbird 1.1 has just been released today in 13 locales (Swedish and Estonian are new)!

In addition to several stability fixes and a dramatic reduction of resource consumption in some cases, this new release will make Twitter and IRC much more usable in Instantbird:

  • On Twitter, it’s now possible from the context menu to retweet, to reply to a tweet (or simply double click on the tweet to start a reply). The context menu also lets you follow or unfollow the author of the tweet.
  • Tab completion of usernames (starting with an @ character on twitter) or nicknames (in IRC channels) will also be very appreciated.

All these changes have been commonly requested, so no surprise here. But there’s one last feature I would like to talk about before offering you a download link: Instantbird 1.1 brings support for putting conversation on hold. This means you can now close conversation tabs without leaving the conversation, the conversation will sit at the top of the Contacts window until you reopen it or someone talks to you. While this may seem like a small change, it’s exceptionally useful for IRC users who tend to idle in lots of channels because they want to “be there just in case” but don’t interact much with the conversation.

Enough talk! Time to go download Instantbird 1.1 (or read the more detailed release notes).

As always, your feedback is welcome! And if you like Instantbird, maybe you will want to share the good news with your friends on Facebook or twitter?

Why should I switch from Pidgin?”

This is a question people keep asking us. With some variations (“Why should I switch from Adium?”), or sometimes without the question mark (“There’s nothing more than Pidgin”).

We are not competing…

I think people ask us this question because they perceive us as competing with Pidgin/Adium/[insert the name of your favorite open source IM client]. But there’s no good answer to that question, because we are not competing, here is why:

  • we share values. We believe that instant messaging technologies should be freely accessible and open: people should not be locked in closed systems.
  • we share a technology stand point: we think that to empower people to increasingly use the open IM technologies that we like, we need to offer people a tool that makes it easy to access both promising open technologies and legacy networks.
  • we share code. Instantbird, like Adium, relies on libpurple, which is at the heart of Pidgin, to connect to legacy networks. We take this code, but we also give back: several changes made to libpurple to improve its reliability in Instantbird are now part of Pidgin. We are working together, and Instantbird developers are definitely part of the Pidgin developer community.

… but we offer an alternative

I can easily understand why people think we compete though, as we do provide an alternative. I assume people who ask the previously mentioned question actually wanted the answer to another question: How is Instantbird different from Pidgin? Now, this is a question we can answer!

I will actually provide several different answers: the first will satisfy technically oriented people, the others should be understandable by everybody. Most of my points compares Instantbird to Pidgin, but are still applicable when comparing Instantbird to other IM clients.

Technical differences

The biggest technical difference between Pidgin and Instantbird is that Pidgin uses GTK+ and Instantbird uses the Mozilla XUL platform to display its user interface.

The Mozilla platform has advantages compared to GTK+:

  • The Mozilla platform is well known for its awesome extensibility. Add-ons can modify almost anything that is part of the Instantbird user interface, and the skills required to build add-ons are similar to the skills required to create a website, as the technologies are basically the same: HTML, CSS, JavaScript, XML, … Instantbird add-ons are easy to install, some can even be installed without restarting the application! (To be fair, Pidgin also supports plugins, but writing them in C requires much more programming knowledge and to compile them for each platform. Pidgin also has Python (via D-Bus) and Perl scripting APIs, but I’m not sure they are actually usable on Windows.)
  • While a GTK+ user interface is native on some Linux desktop operating systems (typically those based on Gnome or XFCE), a XUL user interface also acts native on Windows (we even included some Aero Glass effects for Windows 7) and Mac OS X where GTK may not fit as well.
  • Thanks to the Mozilla accessibility effort, the XUL platform is very accessible and we have received a lot of enthusiastic feedback from users of assistive technologies who love Instantbird.

Developing on top of Mozilla also has some (perceived) downsides:

  • We need to ship the whole Mozilla toolkit, which makes us package megabytes of compiled code we didn’t write. This means for example that the Instantbird installer for Windows weights 9.9MB. Some people (especially some Miranda fans) seem to think this is huge, but while I like to find ways to reduce the size of the installer we ship, I tend to think at this point it is mostly a non-issue. Just for comparison, the Pidgin installer weights 9.5MB without GTK, and 32.4MB with all its dependencies included.
  • The Mozilla platform has the reputation of using more resources than other browsers/toolkits. The good news is, some bright people are currently making a huge effort to reduce the memory usage, so this will be mitigated in future releases. Plus the situation is not as bad as some people pretend it to be: the memory usage measurements we see in comments about Instantbird aren’t that scary, some people start to complain when an application uses 40MB of memory. Hey come on, we are in 2011, new machines have been shipping with gigabytes of memory for years already…
  • I heard from some Linux packagers that the Mozilla build system is not easy to work with for them. While there may be some pain points here, it doesn’t really affect the end user.

We make Instantbird for you!

Some developers make their programs the best for themselves and share it with you, for free. These programs are the result of people’s hard work which they offer you as a gift, and so these people deserve respect for that! Unfortunately, it is not unusual that if somehow the product doesn’t work out for you, it’s your problem, not theirs, and you are free: to fix it, to report the issue and hope someone will fix it, or to look for a greener pasture. Your comments are valued if they help developers make their program better for everybody, for example if it helps fixing bugs that lots of people suffer from. Your opinions and wishes may not be taken into account, however, unless you intend to actually start working on them: patches are welcome, not additional work (people are busy already).

We work to make Instantbird the best for you. We look forward to gathering your feedback and acting upon it to make Instantbird even better, for you. We assume that when someone takes the trouble to come and talk with us to complain about something, there’s a valid concern. Even when it’s well hidden behind factually inexact assertions that we can’t agree with. If people cannot express themselves clearly, there’s a reason why they are confused, and if a confusion is common, we should find its cause and fix it.

As this difference may be a bit theoretical, I’m going to give a concrete example in the next point: the way we deal with stability issues.

Stability

Crash reports

Let’s see what happens in the unfortunate event of the user being hit by a bug resulting in a crash of the application:

If you are using Pidgin and want to help get the bug fixed, you need to get a backtrace (on Unix systems) or to have installed the debug symbols before the crash so that a crash report could be dumped to the disk (on Windows). Then you need to open a ticket on trac and give all the info you have. As this process may be a bit scary for most end-users, I’m afraid valuable feedback could get lost.

If the same issue happens with Instantbird, first we apologize:

Instantbird crash reporter

Then all you have to do to send us the technical information about the crash is a single click in this crash reporter dialog. We collect all these crash reports and analyze them to improve the stability of the next version of Instantbird.

Nightly testing

In addition to collecting crash reports, another thing we do to maintain a high stability level for Instantbird is that we encourage early adopters to run with nightly builds of Instantbird which are updated almost daily with the very latest version of our source code. Therefore, if something we changed degrades the stability, we receive crash reports way before the defective change ends up in a release you may use.

If some change feels a bit risky to us, we push it to our testers at least a week before releasing, or we delay it so that it gets appropriate testing before being included in the next release.

Just as a comparison, Pidgin’s currently in development code is tested only by developers and others people are discouraged from attempting to use it.

Learn more about our stability efforts.

Changing

We keep seeing comments of people (who have not actually tried Instantbird) who think we should go improve Pidgin instead of “wasting time” on Instantbird.

In the page of our website where we explain why we create Instantbird, we conclude:

It’s time to bring back innovation!

To do this, we need to be able to change things easily. As Instantbird is still a young project, we can change fast.

Pidgin on the other hand is already a mature project with policies about when it’s acceptable to change APIs or when they are frozen: it’s basically impossible to change an API in Pidgin until a new major version is released (so after the Pidgin 2.0.0 release, the API changes have to wait until Pidgin 3.0.0 comes out to be included: currently Pidgin 2.0.0 was released over four years ago!). This is a good thing to ensure the plugins stay compatible, but it slows down the changes to the application.

Different feature sets

This is my last point even though most people would expect to see it first. Instantbird and Pidgin have different feature sets.

On one hand, Pidgin has some features that Instantbird doesn’t have. Some that we will have in the future. Some that we don’t want to have. I’m not going to give a full list here because I don’t actually have a list of all Pidgin features to compare and check what we have and what we don’t have. We are neither trying to copy Pidgin nor to directly compete against it, so such a list would be irrelevant anyway.

On the other hand, Instantbird has some features that Pidgin doesn’t have (message themes, automatic updates, inline search, …) and even some unique features (for two examples, see my blog posts introducing Time Bubbles and Magic copy).

Conclusion

So, should you switch to Instantbird? If I were you, I would. But I’m not you. Deciding which IM client you use is your choice, based on your taste, your needs, your feelings. It’s your decision, really!

If you like what you currently have and see nothing you like in what Instantbird offers, just keep using what you like.

If you love Instantbird, then, obviously you should use it.

If you are in the middle and like Instantbird but for some reason can’t use it because something you really need is missing or doesn’t work, please tell us about it, we are eager to receive your feedback! And maybe there’s already an add-on to customize Instantbird to do what you wanted that we can point you to.

In any case, we are not going to try to force you to switch from Pidgin or whatever IM client you may be using right now to Instantbird. We respect your freedom, we respect your choices, we love you!

Instantbird 1.0 release, 3 days later

Servers load

Instantbird 1.0 has been very quickly downloaded over ten thousand of times. In fact, it happened so fast (especially immediately after we have been featured on lifehacker) that our server couldn’t handle the load.

We have very quickly been able to mirror our main website on another server, which allowed people to keep discovering and downloading Instantbird 1.0, but we had to close the add-ons website for a while as the load it couldn’t handle was also putting down other services that we really needed to keep online, especially our bug database.

We have tried to re-open the add-ons website at a quieter time, but the server was unresponsive again within half an hour. This morning we tried to improve the website’s performance by adding some caching mechanism and reopened again (at a time when most Americans are asleep) for a try. Again it fall down.

Some people very kindly offered help and proposed to host the website on their server, but it’s difficult to trust someone we barely know to host a website that requires our SSL certificate.

As the add-ons website had been closed for almost 2 days already (sorry for the inconvenience!) and extensibility is a key differentiator of Instantbird compared to other similar IM clients, we decided that this situation couldn’t last any longer and we solved the problem by throwing money at it: we ordered a beefier server (Quad Core CPU, 16GB of RAM) and migrated the add-ons website to it as quickly as we could. The website reopened this afternoon, and our testing confirmed that the new server can easily handle the load, even with more visitors than we had when the previous server stopped responding. It’s ready for a lot more people coming! Don’t hesitate to tell your friends to try Instantbird :).

Feedback

We have received a massive amount of feedback since the release. Most was positive or extremely positive. We received lots of encouragements. We even received some love letters!

Some of the feedback showed there was some confusion, for example about how we are different from Pidgin (which we will be the subject of another post to clarify things). We also received constructive criticism, good bug reports. The most common request is an easy way to retweet or to reply to a tweet. We will work on that soon :). Tab completion of nick names is also commonly requested, but even though it’s clear we need to have this by default in the future, we can usually satisfy the reporter by pointing to the great (restartless!) Tab Complete add-on.

Updates

As no alarming issue has been reported in Instantbird 1.0 which is already widely used, we have decided to turn on major updates from Instantbird 0.2 to Instantbird 1.0.

Users of Instantbird 0.2 will be offered an update shortly with an update prompt looking like this:

Dialog offering a major update to Instantbird 1.0

Users of our 0.3pre nightly builds will be offered an update to a nightly build numbered 1.1a1pre in the next few days.

Conclusion

All in all, it’s been a great release and the last few days have been exciting (even though they were also exhausting). We look forward to continue hearing your feedback (and to actually act upon it!). Don’t hesitate to share Instantbird with your friends. Our servers are ready!

Version number change

The current system

Since the beginning of the Instantbird project, we have released versions numbered 0.x.y.z:

  • 0. indicates that the initial goals of the project haven’t been reached yet.
  • x is the major version number. For example, Instantbird 0.2 was a major version for which we made very significant changes.
  • y is the minor version number, incremented when a release is very similar to the previous one, but with some new features. We released Instantbird 0.1.1, 0.1.2 and 0.1.3 which were minor new versions.
  • z was used only for emergency bugfix releases. For example we released 0.1.2.1 a day after 0.1.2 because of a very common crash on Windows with some MSN accounts (not those we used during our testing of course). We also released Instantbird 0.1.3.1 when Instantbird 0.1.3 was no longer able to connect to the ICQ network.

This version numbering scheme made a lot of sense when the project was initially a “XUL UI for Pidgin” and the goal was to reach “feature parity” with Pidgin for Instantbird 1.0. We have, however, supported features that Pidgin doesn’t have for a long time, thus defining the completion of Instantbird 1.0 as a comparison with Pidgin doesn’t make sense any more. Actually, our roadmap has stated for a long time already that the 1.0 goal is a “Simple, usable and extensible user interface.”

In addition to the 0.x.y.z version number, we are using “aN” and “bN” suffixes for alpha and beta releases (0.3b1 for example), so the version number in itself has nothing to do with stability (actually, our testers report that even our nightly builds are stable!). 0.<something> only means that we haven’t reached our initial goals, not that the version isn’t stable.

Received feedback

While linux enthusiasts are used to have great software with a not-yet-1.0 version number, on Windows a 0.* version number was a bit misleading and we received mostly 2 kinds of feedback about the version number:

  • Wow, I can’t believe it’s so stable and featureful with such a low version number!” (user who has downloaded and tested it)
  • Oh, it looks cool, but with such a low version number, it’s a pre-alpha, it can’t be stable, I’ll give it a try when it reaches 1.0.”

Disappointing, isn’t it? ;-)

User icons

Another very visible change between Instantbird 0.2 and 0.3 is the possibility to set a user icon and a display name.

screenshot of the contact list with a place holder icon

You will see a place holder icon at the top of the buddy list, just click it (this will open a file picker) to set an icon. The icon will be automatically resized and converted to fit the various size and format requirements of the IM networks you use.

Similarly, click the “Display name” place holder to edit it. This name will be visible in your contacts’ buddy lists (unfortunately this currently works only for MSN).

Here you go, your friends will now easily recognize you:

screenshot of the contact list with an icon and a display name

Conversation windows have also been changed to display your contacts’ icons and some more information (display name, status message, …):

conversation with an info bar showing the user icon

I can already hear some comments about how much space this new information bar takes (or wastes) in all conversation windows. Yes, this takes a lot of space, we know. People tend to use big or very big windows for chatting (sometimes even full screen!) but if you like the ability to chat in small windows, don’t worry, we love you too! Just resize the window and this information bar will shrink to ensure you still see the actual content of the conversation:

conversation with a smaller info bar

And for very small conversation windows, the bar will completely disappear, leaving only the strictly necessary user interface:

small conversation without the info bar

Better contact list

The contact list was identified as a weak area of Instantbird 0.2. It has been dramatically improved for Instantbird 0.3 which we plan to release next week.

Tags

Goodbye groups

Like most IM clients, Instantbird 0.2 had each contact placed in a group, leading users to organize contacts a bit like files are placed in folders on the disk.

While this seems ok at first, placing contacts inside groups doesn’t work well when thinking of the contact as a person. Don’t you have a friend (group ‘friend’) who is also a coworker (group ‘colleagues’)?

For this reason, with Instantbird 0.3 we replaced the notion of “Groups” with the notion of “Tags” throughout the user interface. While groups used to be containers for your contacts (it was possible to move a contact from one group into another), tags are additional data attached to the contact (you can add or remove tags on a contact, but no longer ‘move’ a contact) and thus a single contact can have multiple tags. To change the tags attached to a contact, use the “Tags…” context menu item of the contact; it shows a list of the existing tags with a check mark next to the tags attached to the selected contact. Checking/unchecking a tag in this list will attach/detach a tag from the contact.

Tags menu

Hidden tags

It’s pretty common when using several accounts of different protocols on a multi-protocol client for the first time to have contacts scattered around in lots of meaningless tags. These contacts are typically those that have never been moved before and are still in whatever the default group of the various previous clients were.

As moving each of these contacts out of these meaningless groups is not really an interesting task, and sometimes is even impossible (if the server doesn’t allow us to move it), we have designed a more efficient way to forget the annoyance caused by the pointless resulting tags: when hovering a tag in the contact list, you will see an [x] icon. Clicking it will hide the tag (after showing an explanation the first time).

Hide tag icon

It’s possible to manage the list of visible tags (to unhide a tag) from the “Visible tags…” context menu item.

Contacts which haven’t been associated with a visible tag will be displayed in a special “Other Contacts” tag, always at the bottom of the contact list.

Grouped contacts

If several networks are usable to IM the same person, you will no longer be annoyed by seeing that person listed several times in your contact list. Just drag and drop one of these contacts onto another and Instantbird will know they are both ways to contact the same person.

During future conversations, if your contact suddenly starts talking to you from a different network, the conversation will continue in the same tab. A system message will be displayed in the conversation to unobtrusively notify you of this change.

If you want to start talking to a different account of your contact, you can do so easily with a click on the protocol icon at the top right of the conversation UI:

Talk using a different network

When starting a conversation from the contact list, Instantbird will automatically select the best way to reach your contact, based on availability information and your preference with regard to the various ways to contact this person. You can change this preference by expanding a contact (with the down arrow icon) and then using drag and drop to reorder the accounts.

Expanded contact

Other noticable changes

  • The contact list is now sorted: both tags and contacts inside a tag appear alphabetically sorted.
  • Changes in the displayed information are smoothly animated, making them at the same time easier to understand and less interrupting.
  • Closing the contact list window, which is not needed all the time, will no longer close Instantbird. On Windows and Linux it will be minimized to the system tray (this behavior can be customized in the Preference dialog); on Mac it can be easily reopened from the menubar.

Introducing magic copy

The surprise and enthusiasm of a few people about the “magic copy” feature I mentioned briefly at the end of my previous post introducing time bubbles reminded me that we forgot to introduce this feature when it landed for Instantbird 0.2 as part of our implementation of the Adium message theme system.

We decided to use this theme system because it seemed nice overall and was already used by a few other clients as well. However there was something we really didn’t like: using a customized message theme could make copied data from the conversation really hard to read, to the point that it would be unsuitable for sending a quote via email.

As this may not be very clear yet, let me give an example:

Copying from a conversation without the 'magic copy' feature

This is the text we get when copying the selection to the clipboard and pasting it. This is without our “magic copy” feature of course.

I should also note that the Bubbles theme used for this screenshot is not the worst in this regards. I’ve seen in the description of some themes (not designed for Instantbird) that they were “clipboard friendly”, which indicates the theme author took this problem into account and probably had to make some trade-offs between the visual appearance and the usability of copied conversations.

As we were not satisfied with this situation (which either makes copying from the conversation poorly usable or restricts theme authors’ creativity), we developed a different system that instead of serializing the selected HTML attempts to detect which messages are selected, and to “prettyprint” them based on what Instantbird knows about the message, rather than what is visible and selected.

This is the result:

Same conversation copied with magic copy

If only a part of a single message was selected, the username and timestamp won’t be added to the copied strings, it will behave like a normal text copy:

Copying a part of a single message

As we detect which messages are selected and even know if each message was fully selected or only in part, we can nicely add an ellipsis when a message was cut:

Ellipsis are added where messages are cut

This even works when using multiple-selections (press Ctrl on Windows/Linux, and Command on Mac to do this):

Copying parts of multiple messages

A few technical details: the template used to serialize copied messages is both localizable and customizable from about:config, it’s also possible to completely turn off this feature in case it ever causes some trouble (look for the messenger.conversations.selections.* family of preferences in about:config).

This feature has been turned on by default in Instantbird for over a year and nobody complained about it. Actually, it’s one of the features that is barely noticed because it just works, but it is something that is really missed if using another IM client after using Instantbird for a while.