Introducing Time Bubbles

Instantbird 0.2 was released with Bubbles as its default message theme:

default message themes of Instantbird 0.2

The most common feedback we received from users that quickly switched back to Simple (the previous default) or another theme was that the lack of timestamp for each message made the theme unusable.

Some users have really passionate opinions about whether these timestamps should be shown or not. On one hand, people think it’s a useful piece of information that should always be visible, but on the other hand, people think it’s a waste of space on their limited screens. The common “solution” to this problem is to include a “show timestamp” preference, allowing each user to decide for themselves which of the two behaviors is the least inconvenient.

I don’t think that making the user responsible for choosing between two not-so-good options which one is best is a good way to address this issue. So soon after the 0.2 release, I started searching for better solutions.

I tried to identify what the information provided by message timestamps was used for, so that we could hopefully find something appropriate for the actual needs.

The starting points of my reflection were that:

  • timestamps, when visible, are most of the time ignored.
  • when they are actually read, the information they provide is rarely the information really desired, but only an indirect way to answer a valid question.

So then, I tried to identify which questions users who wanted to have their timestamps visible all the time had to answer. Here are the questions I found, and what I’ve implemented to provide human friendly answers to these questions:

1. How much time has passed between 2 messages?

That’s actually still an indirect answer to another question: has that person talking to me actually read what I said and thought about it before replying? Sometimes when receiving an answer that doesn’t seem to take into account what has just been said, it’s just that the message wasn’t read yet at the time the reply was written.

I believe having to read and compare mentally 2 timestamps to get that information is overly complicated and we can convey this information visually:

screenshot with 2 bubbles touching each other, and 2 bubbles with some space between them

The vertical space between Bubbles is used to show how much time separates messages. If 2 people talked at the same second, their bubbles will almost touch each other. If there’s been a pause between the messages, there will be some space between the bubbles.

In order to not waste too much space when 2 messages are separated by a long time, I decided that the first few seconds would cause a much bigger increase of the space than the next seconds and minutes (for the readers who care about the details: it’s a logarithmic representation of the time).

This makes it easy to see a difference in time just after a message was received (the very few seconds that make the difference between a likely-read message and a most-likely-not-read-yet message), but makes it hard to evaluate time intervals of several minutes. To address that, when messages are separated by over 5 minutes, the exact time is displayed between the bubbles in gray text:

screenshot of 2 messages with over 5 minutes of interval

2. Is this message old?

This question is especially interesting when returning to the computer after being away, and having several conversations with new messages, to decide which one to answer to first. If a message has already been waiting there for an hour or so, the person has probably moved on already, and is most likely not actively waiting for your answer. However, if a message was sent only a few seconds or minutes ago, it’s reasonable to expect that the person is still at the other end and still remembers what was discussed.

To answer this question, my proposition is to make the space between the latest message and the text input box vary exactly like the space between 2 bubbles. Unlike the time between 2 bubbles which doesn’t change, the time between the last message and now changes continuously, so displaying this time requires an animation: messages will “scroll away” as they get old. If a message is older than 5 minutes, the time since it appeared will be written (omitting seconds, so that the text displayed doesn’t change continuously).

Just arrived message: screenshot of the area at the bottom of the conversation without space

Message arrived a while ago: screenshot of the area at the bottom of the conversation with a lot of space and the time displayed

3. When did I say that?

This question occurs occasionally when looking for something in the backlog (typically using the findbar). In this case, the time is actually the desired information, but seconds are irrelevant, so only the hour and minutes need to be displayed. For this case, I decided to display the time of the first message of a bubble when the bubbles is hovered:

hovered bubble

4. What was the time of a specific message?

This rather rare question was already addressed with a little known feature of the existing bubble theme: when hovering a message, a tooltip appears showing a timestamp for that specific message.

5. When quoting messages (to paste in emails for example), I need the messages to have some time information associated with them in plain text!

While this is a valid concern, it’s out of the scope of the message theme design, as Instantbird 0.2 already supported a nice feature that we called “magic copy”: when a selection inside a conversation is copied into the clipboard, Instantbird will detect which messages are selected, and “prettyprint” them so that whatever message theme is currently in used doesn’t change the appearance of quoted messages.

the input box with a copy of some selected messages

Conclusion

I have experimented with all of these suggestions for over a year already with a modified version of the Bubble theme, called “Time Bubbles” which was in an add-on. As the results of the experiment were satisfying, the “Time Bubbles” feature is now part of the Bubbles theme which is used by default in Instantbird. You can try it in current nightly builds, and it will be in Instantbird 0.3 beta 1 which we plan to release very soon. We look forward to your feedback on this!

Status Update: April 2011 - May 2011

A lot has been going on for Instantbird as the pace has been picking up as we approach the release of 0.3. Below we’ve highlighted some of the exciting new features that have become available since our last update. Some of these are currently available in 0.3 alpha 2, and the rest are available in the nightly builds! They’ll of course be included in 0.3 beta 1 (and the final release of 0.3).

Instantbird is participating in Google Summer of Code 2011 with one student project. Mozilla has been gracious enough to allow us to participate this year as part of their mentoring organization. The project includes an implementation of the XMPP protocol in JavaScript as an Instantbird extension. The XMPP implementation will be extensible to allow Instantbird extension developers to easily implement extra parts of the XMPP protocol beyond what will be included by default, some examples of this include collaborative editors and drawing boards. Details of the project proposal, as well as code and a blog are available to track this project.

Done:

  • 0.3 alpha 2 released! Give it a try and let us know what you think!
  • Contacts now show the list of the buddies they contain (as well as their online status) in the tooltip.
  • Windows (and Linux) users can now minimize to the system tray (we’ve integrated the popular MinTrayR add-on). Note that by default Instantbird will minimize to tray when the “x” is clicked, to quit the application choose “Quit” from the File menu or right click on the system tray icon and choose “Quit”. This behavior can be changed from the preferences window.
  • Alphabetical sorting of group names (bug 366) and contacts (bug 343).
  • You can now quickly jump to the n-th tab using <modifier>+<n> in the conversation window (bug 496), where <modifier> is ctrl on Windows/Linux and Command on Mac.
  • The conversation tabs styling has been updating to match Firefox 4 (bug 768), although we’re still working on getting some of the Aero glass effects in. Screenshot of a work in progress Screenshot of the ongoing work on the Windows Aero theme, but also showing the already finished new conversation and contacts list UI.
  • Users can now set their buddy icon and the display name of their accounts right on the contacts list (bug 334).
  • The Conversation UI has received a major overhaul to show the buddy icon, display name and current status of your contact. In addition, you can switch the buddy you’re talking to by clicking on the protocol icon (bug 744).
  • Message themes can also properly show the user’s own icon, go check one out!
  • A help command (‘/help’) was added to quickly and easily see which commands are available for the current conversation (bug 691).

For Developers:

  • An ‘icon-changed’ notification was added for when the user updates their buddy icon.
  • The UI code has been moved into the ‘content’ directory inside of omnijar (this will affect developers who have been unzipping omnijar to edit code).

Known Issues with Nightly Builds (0.3a3pre)

  • Commands do not work in protocol overrides (i.e. GTalk, Facebook) (bug 697).
  • Twitter dumps too much information to the error console (bug 681).
  • The user icon may not appear anymore on some protocols (ICQ/AIM/?) after restarting the application (bug 783).

Instantbird 0.3 alpha 2 released

We are pleased to announce that Instantbird 0.3 alpha 2 has just been released.

This release contains the first visible changes on the road to making Instantbird 0.3 awesome:

  • Contacts: If you talk to the same person on multiple IM networks you can now combine the buddies from each network into a single contact. Just drag and drop one onto the other and they will be merged!
  • Tags: Tags have replaced groups in the buddy list. Even though our tag system isn’t fully implemented yet, there are already some new features. For example, a tag can be hidden by clicking the “x” on the right side of the buddy list, all buddies from this tag will then show in an “Other Contacts” tag automatically, which is shown at the bottom of the buddy list.
  • Windows (and Linux) users will appreciate the minimize to system tray feature, for which we borrowed some code from the popular MinTrayR add-on. By default Instantbird will minimize to tray when the “x” is clicked, to quit the application choose “Quit” from the File menu or right click on the system tray icon and choose “Quit”. This behavior can be changed from the preferences window.
  • On Mac it’s now possible to close the Contacts window without quitting the application. A click on the dock will reopen it.

This release also contains very significant invisible changes, including the ability to create JavaScript protocol plugins and the upgrade to the Mozilla 2.0 platform (which Firefox 4.0 is based on). Add-on developers will like this, especially because of the new ability to create restartless add-ons.

Download or learn more about Instantbird 0.3 alpha 2.

Status Update: February 2011 - March 2011

Done:

  • Contact merging (bug 698).  If you talk to the same person on multiple IM networks you can now combine the buddies from each network into a single contact.  When opening a new chat the buddy that is online will be chosen automatically and the conversation window will automatically change to another buddy if they switch to a different IM network.
  • Tags have begun to be implemented (to replace the groups concept in the current buddy list).  Tags can be hidden by clicking the “x” on the right side of the buddy list, all buddies from this tag will go into an “Other Contacts” tag automatically, which is shown at the bottom of the buddy list.
  • The buddy list can now be closed on Mac without Instantbird quitting (bug 24). It can be reopened from the Dock.
  • Offline contacts vs. unknown contacts are now differentiated with icons.
  • Instantbird has been upgraded from libpurple 2.7.9 to 2.7.11. Changes of note include a fix for adding buddies in MSN (see all changes at their change log).
  • Dark variant of the “Simple” skin (bug 710).
  • For Developers:
    • Extensions are now able to register commands (bug 118).
    • A general JavaScript socket object has been included (bug 673).
    • Instantbird 0.3a2pre nightlies are now based on the mozilla-2.0 branch instead of the mozilla-central trunk (commit). This is the version of the Mozilla source that is used in Firefox 4.x.

Known Issues with Nightly Builds (0.3a2pre):

  • No feedback when an extension fails to install (bug 712).
  • Sounds do not work when the buddy list is closed on Mac (bug 731).
  • Commands do not work in protocol overrides (i.e. GTalk, Facebook) (bug 697).
  • Twitter dumps too much information to the error console (bug 681).

Mailing list publicly readable

We used to handle most support requests received from the contact AT instantbird DOT org email address on a mailing list which was private. This was inefficient as we replied to the same questions over and over and people couldn’t benefit from old replies. New posts to the mailing list will now be publicly readable so that anybody in the community can help users with support requests (see our guidelines describing how we have answered emails up to now), answer questions, or just read the feedback we receive.

Anybody can subscribe to the Google group used: http://groups.google.com/group/instantbird-contact

We have also created another mailing list for all bug changes, so that people interested in knowing what’s changed in our bugzilla can get the information without requesting us to add them as globalwatchers on bugzilla. See http://groups.google.com/group/instantbird-bugs

Note: if you don’t have or don’t want to use a Google account, you can subscribe by email using the [Groupname]+subscribe@googlegroups.com address.

Instantbird 0.3 alpha 1 released

Instantbird 0.3 alpha 1 has just been released.

This release contains very significant changes, including the ability to create JavaScript protocol plugins and the upgrade to the Mozilla 2.0 platform. Most of the changes are not yet visible in the user interface, so we would not advise current users of the 0.2 version to update.

However, it includes basic support for Twitter and is already quite stable; so it will please early adopters and testers who don’t go as far as to use nightly builds (which update themselves everyday with the newest code). Add-on developers will also be interested, especially because of the new ability to create restartless add-ons.

Instantbird talk at FOSDEM

I (Florian) was in Brussels this week-end for the FOSDEM conference. As every time I went to FOSDEM, it was great to meet again several Mozillians I hadn’t seen for a long time.

I gave a talk early on Sunday morning about Instantbird. I would like to thank all the people who attended the session, asked interesting questions and gave great feedback at the end of the talk and during the rest of the day: thank you!

For those of you who would have liked to be there but couldn’t because of the time (too early, especially after the great dinner and bowling event Saturday evening) or location (not everybody lives in Europe!), I put the slides of my presentation online (and even wrote down what I said!).