There are main online presence statuses:
available, away and busy.
The first is obvious, the second should hopefully also be managed automatically by the software, and the third one...
The third one is at least a little bit controversial, but i think we can sum its purpose this way: you have for whatever reason your client and connection loaded (it does automatically starts on login or whatever), but you don't want to be bothered
Programs should shield the user from having to manage manually these things, so they shouldn't care about the implementation difference in these...
Unfortunately, due to technical limitations in the library or political decision from the companies managing the serves, not every service may supply all the relevant statuses...
Let's look at the purpose of the statuses:
Available: you want to let all the other contacts that may need/want to address you that you're online
Away: you want to warn all the contacts that you may not be able to answer because you are right away
Busy: you want to let everybody know that you don't want to be contacted right now (except maybe for VERY important reasons, the ones that tipically require that you shouldn't rely on a IM service to deliver), and if you're online shouldn't matter to them.
Right now, empathy as a problem concerning the busy status: when the user selects this status, his priority is clearly that of NOT being contacted, but instead, if the service doesn't support a busy status (i'm thinking of facebook right now) he's displayed as available (and he doesn't even know about it, because the GUI doesn't tell you that!)
This means that it's instead very likely that he will we contacted, and that's the thing the user didn't want on the first place...
To solve this, by giving more importance to the untraceability of the user i think we should change our fallbacks and, when we know that a service won't support a certain presence status (busy in this case) we should fallback to:
busy
|→invisible ...the others won't be able to contact you... too bad, but that's a lesser evil than the other way around
|→→→offline ...if invisible isn't supported either, not being able to see the others that are online is again way less important than displaying yourself as available (another problem is that you'll have to wait 2 seconds to connect again when you'll want to be available again, but this is really an issue of meager importance)
Obviously the fallback should act on a per-protocol basis, and if (but i doubt ) it's needed, a config flag in the preferences could be added to revert the behaviour to the old default
This may be seen as a limitation of facebook, but originally it made sense: facebook chat was available only on the web site... and if you were "socializing" on the web site, you were expected to be available (or momentarily away) for others...
Obviously now, with the xmpp service available to IM client that are always running in the background, this has become an issue, and even if it could be considered a facebook issue, it's still a defect we can fix
Binary package hint: empathy
There are main online presence statuses:
available, away and busy.
The first is obvious, the second should hopefully also be managed automatically by the software, and the third one...
The third one is at least a little bit controversial, but i think we can sum its purpose this way: you have for whatever reason your client and connection loaded (it does automatically starts on login or whatever), but you don't want to be bothered
Programs should shield the user from having to manage manually these things, so they shouldn't care about the implementation difference in these...
Unfortunately, due to technical limitations in the library or political decision from the companies managing the serves, not every service may supply all the relevant statuses...
Let's look at the purpose of the statuses:
Available: you want to let all the other contacts that may need/want to address you that you're online
Away: you want to warn all the contacts that you may not be able to answer because you are right away
Busy: you want to let everybody know that you don't want to be contacted right now (except maybe for VERY important reasons, the ones that tipically require that you shouldn't rely on a IM service to deliver), and if you're online shouldn't matter to them.
Right now, empathy as a problem concerning the busy status: when the user selects this status, his priority is clearly that of NOT being contacted, but instead, if the service doesn't support a busy status (i'm thinking of facebook right now) he's displayed as available (and he doesn't even know about it, because the GUI doesn't tell you that!)
This means that it's instead very likely that he will we contacted, and that's the thing the user didn't want on the first place...
To solve this, by giving more importance to the untraceability of the user i think we should change our fallbacks and, when we know that a service won't support a certain presence status (busy in this case) we should fallback to:
busy
|→invisible ...the others won't be able to contact you... too bad, but that's a lesser evil than the other way around
|→→→offline ...if invisible isn't supported either, not being able to see the others that are online is again way less important than displaying yourself as available (another problem is that you'll have to wait 2 seconds to connect again when you'll want to be available again, but this is really an issue of meager importance)
Obviously the fallback should act on a per-protocol basis, and if (but i doubt ) it's needed, a config flag in the preferences could be added to revert the behaviour to the old default
This may be seen as a limitation of facebook, but originally it made sense: facebook chat was available only on the web site... and if you were "socializing" on the web site, you were expected to be available (or momentarily away) for others...
Obviously now, with the xmpp service available to IM client that are always running in the background, this has become an issue, and even if it could be considered a facebook issue, it's still a defect we can fix
ProblemType: Bug ature: Ubuntu 2.6.35- 22.35-generic 2.6.35.4 dules: wl
DistroRelease: Ubuntu 10.10
Package: empathy 2.32.0-0ubuntu2
ProcVersionSign
Uname: Linux 2.6.35-22-generic x86_64
NonfreeKernelMo
Architecture: amd64
Date: Sat Oct 30 19:45:12 2010
InstallationMedia: Ubuntu 10.04 LTS "Lucid Lynx" - Release amd64 (20100429)
ProcEnviron:
PATH=(custom, user)
LANG=it_IT.utf8
SHELL=/bin/bash
SourcePackage: empathy