Weekly Meeting: October 31, 2011

At the weekly meeting held on October 31, 2011 plans for Instantbird 1.2 were discussed as well as a summary of what’s happened since the 1.1 release. (Full chatlogs are also available, as well as the Etherpad timelime.)

Weekly meetings are held every Monday at 4pm UTC (that’s 6pm for people in France, and 9am for people in San Francisco) in #instantbird on irc.mozilla.org.

What’s Happened Since the 1.1 Release:

  • Lots of patches have been reviewed and some new features are in (or soon to be in) the nightly builds.
    • Tab complete is now smart about case sensitivity.
    • You can now change your status from the tray icon.
    • You can now copy the link directly to a tweet.
  • Some major changes have been made to the repository to pave the way for large improvements. If you have the code checked out, you should update!

What’s Being Worked On:

Active participants are highlighted in color.

Active participants are highlighted in color.

  • Only show colors of participants who have participated, allowing you to quickly see who’s active! This first patch will keep participants gray until they’ve talked once, look for it in a nightly soon!
  • Cleaning up and renaming of the interfaces to make them easier to work with. This is paving stone to making libpurple optional (and only loading protocols when they’re needed).
  • Integration work of the JavaScript IRC code into the Instantbird source has started (instead of using it as an extension).
  • Florian will be attending MozCamp Berlin, from November 12th to November 13th, and will be giving a talk on Instantbird, go say “Hi!” if you’ll be attending!
  • Lots of user interface (in particular, when using Twitter) “paper cut” bugs! Those annoying bugs that you can live with, but get in your way? Yeah, we don’t like those either.

Ways You Help Out:

There’s a few tasks that we could use help with, if you’re interested in any of these, please contact us.  (And if there’s something else you’re interested, let us know about that too!)

  • A QA/testing team would help to find regressions and bugs quickly
  • Help is needed in organizing the localization effort and keeping them up to date with information.
  • Someone to work on making the add-on experience more enjoyable would be appreciated.

Stop by at our next meeting on November 7, 2011 at 6:00 PM France time in #instantbird on irc.mozilla.org!  And as always, please file any bugs you see in our bug tracker.

Weekly Meeting: October 17, 2011

Weekly meetings are held every Monday at 4pm UTC (that’s 6pm for people in France, and 9am for people in San Francisco) in #instantbird on irc.mozilla.org.

The second weekly meeting discussed some final details for the 1.1 release, which happened on October 18, 2011! Read the blog post about the release. In addition, some plans for Instantbird 1.2 were discussed.

Development Issues Discussed:

  • Instantbird 1.1:
    • SSL Issues with GTalk
    • Focus issues on the buddy list
    • Release candidates for all localization prepared
  • Instantbird 1.2:
    • Check in the backlog patches that have been reviewed
    • Update to Mozilla 8 or Mozilla 9
    • Integrate JavaScript protocols: clokep’s JS-IRC and XMPP from our GSoC student
    • Strive toward making libpurple optional

Non-Development Issues Discussed:

Ways to Help Out:

  • A QA/testing team would help to find regressions and bugs quickly
  • Help is needed in organizing the localization effort and keeping them up to date with information

Stop by at our next meeting on October 24, 2011 at 6:00 PM France time. Oh, and try out Instantbird 1.1 if you haven’t (and tell your friends)!

(Full chat logs are available, as well as the Etherpad timelime.)

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?

The Interruptions Manager

For Instantbird 1.1, which will be released soon, we realized a weak spot in our API was the ability to control whether events should be shown to a user or cancelled under certain conditions.  This fits in as part of our mission about giving control of instant messaging to the user: the user should only be interrupted by events that deserve their attention.  If you’re wondering how this is useful; extensions now have great control over how Instantbird is allowed to interact with the user.  For example, extensions could: keep conversations from opening (i.e. spam guards), quiet sounds during a full screen video, or even stop new conversations from opening if the user has set their status as Unavailable.

Extensions are able to simply register themselves with the interruptions manager and they will automatically be notified if certain events happen, including when Instantbird wants to: get your attention (e.g. flash the task bar), open a new conversation, play a sound or show a message notification.

The API is really easy to use and we’ve created some example add-ons that use it!  We have created an an add-on to not allow the NickServ from IRC accounts to open (source), an update of NickServKiller. Additionally there is an add-on to force auto-joined chats to be held on the buddy list (source), allowing you to give them your attention when you want to.  Another example of a great add-on is the Do Not Disturb add-on, which does not allow Instantbird to disturb the user while their status is set to Unavailable, really allowing you to concentrate on something more important (source).

There’s also a skeleton for an anti-spam add-on (an often requested feature!) that is just waiting to be finished!  Contact us on #instantbird on irc.mozilla.org if you’re interested in helping out.  And don’t worry, these extensions will be available on addons.instantbird.org soon!

We think this is a great addition for add-on developers working on Instantbird and can’t wait to see what exciting ideas people come up with!

Weekly Meeting: October 10, 2011

Weekly meetings are held every Monday at 4pm UTC (that’s 6pm for people in France, and 9am for people in San Francisco.)

The first weekly status meeting, which everyone is encouraged to attend, was held on #instantbird (irc.mozilla.org) and flo, clokep and aleth lead the discussions. (Full chat logs are available, as well as the Etherpad timelime.)

The meeting’s primary focus was about the pending 1.1 release (if you’re reading this before 1.1 goes gold, nightlies are available at http://ftp.instantbird.com/instantbird/nightly/latest-trunk/ and testing is always appreciated!)

Development Issues Discussed:

  • SSL issue. Fixed
  • Translations not yet 1.1 compliant. Fixed

Non-Development Issues Discussed:

  • Establishment of the non-profit foundation to support Instantbird
    • Specifically the creation of a bank account for funds and starting ideas to generate capital
    • We are still seeking suggestions for good web-based systems to let the non-profit receive donations (ideally with minimal transaction charges and must be accepting of most international currencies)
    • Thinking about ways to get more people to use Instantbird’s Amazon-affiliate code when making purchases
  • New WordPress-powered blog is launched, letting more Instantbird developers share in the blog’s upkeep and helping to expand its audience
  • Florian Quèze will be attending the Google Summer of Code Mentor Summit, so say hi if you are attending

If you read this full post, here is an extra sneak peak for you: Check out the full list of new features in 1.1! More details on them are on the way, that’s why this is just a sneak peek.

Feedback received

Following the release of Instantbird 1.0, we’ve received a variety of great feedback (if you haven’t read some of our other posts: we love to receive feedback, although we might not always agree) via our contact email address, our IRC channel, our bug tracker, Twitter and what ever other ways there are to communicate with us. We’d like to take some time to respond to some of the popular requests we’ve got (or at the very least, point you to the bug where you can follow any progress).

File transfer support: something we definitely want, but we also want to give a good user experience. Unfortunately most protocols do not transfer files efficiently or quickly (and many times they break when behind firewalls, etc.), thus we wish to offer an alternative to using the protocol file transfer before providing support for it: see bug 9.

Grouping buddies first by protocol then by group: this has been requested by multiple individuals, but we don’t feel it would fit well into Instantbird. Instantbird is a multi-protocol instant messaging client that aims to integrate all of your accounts together (therefore it doesn’t make sense to separate your accounts on the contact list).

For example, is your “Friend” not your friend whether it’s your MSN account, your AIM account or your Facebook account? Of course they still are! But perhaps you have different groups of friends on MSN than on AIM (maybe one is your online gaming buddies and one is your high school friends); well our suggestion is to move them to tags that make more sense (i.e. make an “Online Gaming Buddies” tag for all your MSN friends and a “School Friends” tag for all your AIM friends, in this example).

When asking people why they want this, the response usually is “that’s what <another IM client> does”. Well, ok but we wish that you take more of a ‘contact level view’ of people: Combine your contacts that are the same person and group them according to how you know them. (You can even put them in multiple tags, if someone is your online gaming buddy AND from school!)

If there’s a usecase that we’re not covering here, please let us know! (And don’t forget that Instantbird is fully extensible, so you could certainly write an extension to display the contacts grouped first by protocol if you really need that feature.)

Blocking buddies at the protocol level: unfortunately support for this isn’t great depending on the protocol, but libpurple does support it. We have two bugs on file; one is to block individual users and another to block all buddies not on your buddy list, which might not be supported by all protocols.

Blocking spam: although this is similar to blocking buddies, it’s different in that you do not wish to block ALL people not on your buddy list, but of course you still want to ignore the obvious spam messages! See bug 288 and bug 887 for two ideas on how to implement this.

Start with the operating system: many people expect an IM client to start with their operating system and although most operating systems provide a way to manually make a program start on boot, it would be convenient for Instantbird to provide an option to do this. This was requested in bug 376.

Facebook “Not Authorized” error: we added the solution to the FAQ.

Voice/video: we’d love to support voice/video too! But libpurple does not yet support voice/video on Windows or Mac, you can see bug 568 for some information on how we could support it in JavaScript protocols.

OTR (off the record messaging): private messaging is something we believe is useful, but it needs to be convenient and transparent to the users (after authentication, of course!). Encrypted chat is not a trivial task, especially when the protocols don’t support it, but there’s a library (called Off the Record) which handles this for us, we have a bug about integrating it: bug 877.

People want 64-bit Linux versions: we actually currently supply unsupported 64-bit builds, and there’s a bug about making them official (bug 395).

Instantbird interrupts you: if you receive a new IM window Instantbird rudely pops to the front, this is mostly noticeable when using another application as a fullscreen window (bug 926). Luckily for now, there’s currently an easy workaround: keep a conversation window opened and minimized, so that a new conversation appears in a tab of the existing window instead of a new window.

Being able to search/filter the contacts would be helpful: we agree! In fact we filed a bug about it: bug 631.

System tray issues:
Persist the tray icon: the system tray icon should stay visible even when the buddy list is restored, see bug 749.
Single click to restore the tray icon: an extension was created to support this and by default the next version of Instantbird will use single click on Linux and double click on Windows (see bug 870).
Expand the system tray context menu to change the status: this would be helpful and would match what was added to the jumplists for Windows 7, see bug 750 about any work on this.
We’ve heard that some protocols are having problems:
QQ does not work: we’ve had reports of QQ not connecting (QQ was actually dropped from Pidgin and spun off into a separate project (libqq), which we intend to include.
ICQ does not connect with default settings: we have begun to investigate this in bug 894, but it seems that SSL is broken for now.
Twitter has a variety of issues and needs more work, including: retweeting and replying to messages, direct messaging and showing a list of who you follow and who follows you.
A few suggestions to replace the libpurple MSN with msn-pecan: we actually have still not updated to the newest MSN code from libpurple 2.9.0 (as it was causing crashes for one of our developers), see bug 907 for the details.
People want more protocols:
IBM Lotus Sametime: we’ve actually added support for this in the nightly builds and it’ll be included in the next version!
Bonjour: this should be fairly easy to add on Mac, but Windows and Linux would require an extra library from Apple to support Bonjour. If you’re interested in adding it, see bug 944.
SIPE (Microsoft Office Communicator): one of our developers has started working on this in bug 976.
Skype: supporting Skype is non-trivial and requires Skype to be running in the background, use of (the non-free) SkypeKit or reverse engineering the protocol, see bug 563 for some ideas.

Lots of positive feedback! Including that Instantbird works great with screen readers! We’ve received TONS of other great feedback as well, this is just a summary of the popular feedback we’ve received.

Please remember that one of the team’s goals is to keep Instantbird as light as possible, and for that reason, we are trying to encourage the idea of creating add-ons for things that may not seem as a core necessity for the larger audience.

Development of Instantbird 1.1 is already well underway. We have a tentative roadmap for it. We definitely plan to release faster than we used to do before Instantbird 1.0. Our current target date for the next release is the end of September!

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!