Protocols: AIM, ICQ, IRC, MSN, MYSPACE, XMPP, Yahoo!
To design the privacy subsystem from ground up, following protocol specific information needs to be considered:
AIM
Has two lists: block list and allow list, and has the following five options for the privacy settings:
- Allow all users to contact me
- Allow only users on my buddy list
- Allow only the users on the allow list
- Block all users
- Block only the users on the block list
Blocking here refers to stopping messages as well as presence information. We also support being invisible to everyone irrespective of the above settings.
ICQ
ICQ has three lists: visible list, invisible list and block list. Whereas visible and invisible lists deal with controlling the presence information, the block list deals with messages. An ICQ UIN can has following settings:
- Visible (same as not choosing any setting ?)– receives both messages and presence
- Invisible – receives messages, but not presence
- Visible + Block – receives presence, but not messages
- Invisible + Block -- doesn't receive messages or presence
ICQ also supports being invisible to everyone irrespective of above settings, accepting messages only from the contacts and sharing presence with ICQ and web users.
IRC
No server side features, hence can't block presence, only messages can be blocked that too dropping after being received by the client. Simple ignore list client side implementation.
MSN
Has two lists in context of privacy: Allow list (AL) and Block List (BL). There is a meta contact “all others” that can be placed either in AL or in BL. Default action is to include all the buddies in the AL and include all others in BL. Messages as well notifications are blocked.
Being invisible to everyone is supported irrespective of above settings.
MYSPACE
The protocol has not been completely reverse engineered yet, the following features are probably supported:
- Show presence to anyone or people on the contact list
- Receive messages from anyone or people on the contact list
- Accept list and Block list – (both presence and messages ??)
XMPP
Privacy features are handled by XMPP extension XEP-0016, but it has been deemed too complex for implementation. Other extensions like Simple Communications Blocking, XEP-0191 has at least partially been implemented recently in Pidgin. For invisibility XEP-0186 has come to be the most favoured extension that doesn’t break the core XMPP rules, but I am not sure if Pidgin developers want to implement it just yet.
-- I'd like to see the XEP advance to Draft before any implementation is merged into im.pidgin.pidgin; I'm also unaware of any server implementations. darkrain42
From XEP-0191:
The requirements for simple communications blocking are straightforward:
- A user must be able to block communications with a specific contact.
- A user should be able to determine which contacts are blocked.
- A user should be able to unblock communications with a specific contact.
The default privacy list will be equivalent to the blocklist. Duration of the block is unlimited and applies across the sessions. The blocked contact doesn’t receive any presence information, and is unable to send any XML stanzas to the user. So the presence and messages are stopped both ways.
Yahoo!
Yahoo only has one Block list. Presence and messages are both blocked, and the protocol forces us to remove the contact from the buddy list before adding to the block list. Block list is always active.
There is an option to “ignore everyone not on list”, which is implemented client side, and messages and other requests are dropped by the client.
There is also “appear permanently offline list”, which lists the contacts to whom only the presence information is blocked.
While in an invisible session, we can create “appear online” list by individually sending presence to specific contacts. But that is only valid for the session, or till we go un-invisible again.