Status Update: November 2010 - January 2011

It’s been over two months from our last status update and a lot of changes and updates have occurred (from changeset to changeset). Below we list changes for the nightly trunk builds of Instantbird (0.3a1pre).

Done:

  • Basic support for Twitter was added (bug 598). When the twitter account is connected, a timeline conversation automatically opens. If the conversation is closed by the user, it’s reopened automatically when new messages arrive. The user should disconnect the account from the account manager to prevent new messages from being displayed. There’s a “track” advanced option that allows to specify keywords to track. This is a comma separated list of keywords. Comma means OR, space inside a keyword means AND.
  • The conversation UI has received a slight update: On Mac the splitter between the conversation and input boxes was reduced. For all operating systems, the status bar of the conversation window is now automatically hidden when the window is made small.
  • After quite a lot of debate, the wording of the option for when to create a new conversation window was updated (bug 387).
  • An old regression where the new JavaScript logger used *nix style line breaks on all systems was fixed so Windows logs can be viewed in Notepad (bug 473).
  • The conversation window can now be minimized with the ESC key (bug 441).
  • Support for Windows CE was dropped.
  • The themes preference pane now shows if themes are disabled or incompatible (bug 364).
  • Multi-user chats now show an disconnected icon when offline or after leaving a room (bug 520).
  • libpurple has been updated to 2.7.9 (from 2.7.3)
  • Localized strings with a keyboard accelerator were not localized properly in the ‘Join Chat’ dialog (bug 655).
  • For Developers:

IRC in Javascript - a contributor’s work

A short time after Instantbird 0.2 was released the js-proto branch was merged into the main development tree. This was the branch where the backend of Instantbird was prepared to support protocol plugins written entirely in Javascript. Not long after that, Patrick Cloke, an active contributor of the project, started working on an implementation of the IRC protocol plugin in Javascript.

Now he has written a long and detailed posting on his blog about the hows and whys, as well as the current status of his work. It’s spiced with lots of references to both Instantbird and specifications of the protocol. So if you’re interested in the technical aspects of Instantbird and how to extend Instantbird with a protocol plugin written in JS then you definitely should go and read it at his blog.

ICQ connection error

Recently users started to get an error (“Error: Unknown reason”) while attempting to connect to ICQ. This is being tracked in bug 582. This will occur using Instantbird 0.2 or 0.3a1pre nightly builds, if you are not seeing this error then the rest of this post can be disregarded.

Luckily there is an easy work around for now:

  1. Open the account manager (“Tools” > “Accounts”)
  2. Select your ICQ account and click “Properties”
  3. On the “Advanced Options” tab
    • change the “Server” to “login.icq.com”
    • deselect “Use SSL
    • deselect “Use clientLogin”

Other third party instant messaging clients using one of the “old” login servers were also affected.

Status update

It’s been three weeks now since the last status update and here’s a short summary of things that have been done in the meantime.

Some contributors are getting more closely involved with the project lately. Subsequently some tasks, such as posting status updates, will occasionally be performed by people besides Florian, in fact this entry was written by Benedikt P.

Done:

  • Making the buddy list ready for the future: the buddy list backend mentioned in the last update has been finished, debugged and finally landed two weeks ago.

  • The Mozilla framework has supported CSS transitions for a while now and we decided to ditch our old animation code in favour of this state-of-the-art technology. Changing the display- and hide-animations on the buddy list is part of bug 504. Along with the change to the buddy list backend it greatly increased the speed when switching on the display of offline buddies. There should no longer be any noticeable delay, even when there are many buddies on the list.

  • If you ever tried to *emphasize* words in a plain text chat, be happy: we are displaying plain text formatting now, such as *bold*, /italics/, underline and |code| (bug 543).

  • We made conversation tabs look more native on Mac, taking advantage of a suggestion from Markus Stange:

    The old flat look:

    Cropped screenshot of the old look of the unified toolbar on Mac

    Now with a nice gradient in the title bar:

    Cropped screenshot of the new look of the unified toolbar on Mac

    If you have any other ideas how to make Instantbird more awesome, feel free to contact us or to file an enhancement request on our bugtracker.

  • Stuff for devs, stuff that matters: we’re using Services.jsm now and were able to reduce the number of lines used to get XPCOM services by 2/3.

  • Brainstorming: some brainstorming about completion of nicknames (among other things) happened on our IRC channel, summarized results and ideas can be found in the wiki.

Status update

It’s time again to give an overview of what we’ve been doing in the last few weeks and what we plan to do next.

Done:

  • The rewrite of the buddy list backend is going well. The new implementation, is almost usable (as long as you don’t need to add, remove or rename a contact). I can’t wait to land this in our nightly builds! (This will occur as soon as everything is re-implemented so there is no feature-loss). Bug 555 tracks this work.
  • I’ve spent some time analyzing the crash reports we have received after the libpurple update. I emailed the Pidgin developers mailing list to share my findings. The feedback received allowed us to fix a whole class of Windows-only crashes by applying a Glib fix.
  • On Mac, the mozilla-central switch from ppc/i386 universal builds to i386/x64 universal builds caused some breakage in our nightly builds.
    • For now, we have reverted to producing ppc/i386 builds, following the direction taken on comm-central.
    • However, we are aware that current nightly builds are pretty broken when run on a PPC machine.
    • We will switch to i386/x64 universal builds as soon as we have a new Mac build machine that can run Mac OS X 10.6 (the current nightly builds are compiled on a PowerMac G5).
  • I wasted a disappointingly large amount of time trying to buy a recent used Mac Mini on ebay, dealing with the confusing messages of an inexperienced seller. Transaction finally canceled today, back to square one :(.
  • Some time spent trying to understand issues with the update system, with our servers, and our buildbot slaves. No exciting details to report about this.
  • Various fixes:
    • Emoticons will no longer annoyingly appear in URLs. This was fixed in bug 207.
    • The issue mentioned previously about message themes installed with the new add-on manager is fixed.
    • The ‘themes’ icon in the preferences dialog has changed (bug 484).

Nightlies fixed and with upgraded libpurple

  • We have nightly builds again on all 3 OSes.
    • We have had issues on the physical machine that hosts our Windows and Linux compilation virtual machines. Even has been hard at work to get them back online as quickly as possible.
    • Additionally, our Windows builds failed with the obscure gklayout.lib : fatal error LNK1106: invalid file or disk full: cannot seek to 0x2000D93C error message. No, the disk wasn’t full, that would be too easy to understand… After a lot of wasted effort trying to figure out what had changed in the configuration of that machine or in the code, we finally got the solution on IRC from khuey and ted (thanks!): reboot with the /3GB switch to extend the address space.
  • The add-ons manager is usable again on nightlies. We got tired of bug 591801 and pushed for Instantbird a partial backout of the patch from bug 562797. (I haven’t attached it in the bug because this is clearly not a fix, but if other xulrunner application developers want to use it, it’s here. I know Daniel was very happy to have it for BlueGriffon.)
  • Known issue: Message Styles currently don’t work without being unpacked in the profile folder. This means that even though the add-on manager now works, if you install Message Styles with it in your new nightly, they won’t work. Message Styles that were already installed will continue to work even if you upgrade your nightly.
  • We have upgraded libpurple from version 2.6.6 to 2.7.3:
    • No big disaster has been reported, so nightly testers probably don’t need to fear the update.
    • We are tracking the crash reports: we have seen some new reports related to the MSN protocol; we will investigate soon.
    • The Gadu-Gadu protocol support has improved, but is not as fixed as we hoped it would be. We will see if we can find ways to fix it.
    • Our translators may be interested in taking strings from translation files generated based on this new version to help them in the process of upgrading their locale. These new converted files are available here.
  • The patches for minor issues that had been waiting in bugzilla for quite a bit of time (because we didn’t want to land them just before releasing 0.2 or in the middle of the js-proto and mozilla2 branch merges) have landed.
  • We have welcomed translators for two new locales: Chinese and Hebrew! :)
  • We have created an experiments mercurial repository where contributors from our community are enthusiastically experimenting with projects that we look forward to integrating in the default Instantbird code base once they are ready:
    • Mic is working on adapting Firefox Sync to work with Instantbird.
    • clokep is working on a readable implementation of the IRC protocols in JavaScript, leveraging the work that has been done in the last few months on the js-proto branch.
  • I plan to start rewriting the backend of our buddy list next week. The goals of this work are to simplify the code, make it work correctly with protocol plugins implemented in JavaScript, and give us the necessary APIs to implement the contact and tag features we plan add for the 0.3 release.

As always, don’t hesitate to file bugs if you come across them! You are also welcome to join us on IRC (in #instantbird, where we have been more than 20 a few times this week!)

Nightly builds now based on mozilla-central

In late July, I started working on making Instantbird use the Mozilla 2.0 platform (which the recently released Firefox 4 betas are based on). This work, which started in a branch, has recently reached a point where we believe it could benefit from wider testing. The mozilla2 branch was merged Friday, September 10th, 2010.

This didn’t happen as smoothly as I would have hoped, but after 10 (!) bustage fixes, yesterday we were able to provide the first set of Instantbird nightly builds based on Mozilla 2.0. Our slowly growing community on #instantbird has jumped on them, and quickly reported a few significant issues. Thanks to their awesome help, those are fixed, and today we have a new set of nightly builds.

Additional help to test these new builds (Windows and Linux, Mac), will be greatly appreciated.

Known issues of this set of builds:

  • The ‘Show Logs’ menuitems don’t work (already fixed and will work tomorrow).
  • The Add-ons manager is broken. This is bug 591801.
  • The ‘Instantbird’ checkbox in the ‘Update’ pane of the ‘Advanced’ panel of the preference Window is disabled (already fixed and will work tomorrow).