On Status

Something that comes up often about Instantbird is why we only support three statuses: Available, Unavailable and Offline.  (We do actually support a fourth one too, Idle, but that is set automatically, not chosen by the user.)  Frequently this discussion is in the context of wanting an “Invisible” status, but I’ll get to that later…

Many users have talked to us on IRC, email or via bugs and complained about wanting an “Away” status or a “Do Not Disturb” status.  There’s a few issues with this:

  1. What’s really the difference between “Unavailable”, “Away” and “Do Not Disturb”?  Do you really need to choose them individually? (Other things that fit into here: “Not at my desk”, “on the phone”, “busy”, “stepped out”.  It is amazing how some protocols have so many ways to describe being unavailable!)
  2. A technical issue that we often run into is trying to shoehorn different protocol implementations into our abstract protocol interface.  (We already have some fairly complicated interfaces around joining chat rooms, creating different account, etc. because of this.)
  3. Setting yourself as “Away” or “Invisible” is a lie.  Perhaps this is me being overly idealistic, but why would you set yourself as “Away”?  It seems that this is something that should be done automatically (when you lock your display, perhaps?).  You can’t be “Away” and using your computer at the same time! Again, perhaps being idealistic, but what is the point of the “Invisible” status?  If you wish to be hidden from someone (everyone?) why not just block those users.  Or ignore them when they send you a message.  If you are busy, set yourself to “Unavailable” and people should understand that they should not talk to you…if they don’t, well…do you really want them talking to you ever?  (Are they really your friend?  I guess you don’t get to choose your co-workers, but still.)  Now, perhaps this is just my opinion as being someone who never really hard an “Invisible” status (I actually remember it being added to the AIM client at some point).

At this point you probably don’t believe me that there’s really that many different protocol statuses out there, so I figured I’d illustrate a few protocols in a matrix.  Note that this isn’t meant to be exhaustive, just to show how complicated of a situation this really is. All protocols can obviously be “offline” as well, but that’s not shown in the table.

  Available Unavailable Phone Invisible
Oscar (AIM/ICQ) Online Away   Invisible
IRC Online Away    
Microsoft Lync Online
  • Busy
  • Away
  • In a meeting
In a call  
Yahoo! Messenger Available
  • Busy
  • Stepped out
  • Be right back
  • Not at my desk
On the phone  
Windows Live Messenger Online
  • Busy
  • Away
  • Be Right Back
  • Out to lunch
On the phone Appear offline
XMPP (e.g. Google Talk) Available Busy