Invisible presence: support to be removed from ejabberd
The support for the non-standard “invisible presence” will be removed in the incoming ejabberd 3.x release line.
The XMPP/Jabber server ejabberd has been supporting the “invisible presence” for a long time (XEP-0018: Invisible Presence, Rejected). Although this “insivible presence” is non-standard, it has been supported because a lot of users asked for it in the past, and some old clients used to support it.
Invisible presence
This is thus a call to client developers, to remove their support of “Invisible presence”. Your client should not send anymore presence stanzas of this type:
<presence type="invisible"/>
<presence type="visible"/>
<presence to="joe@foo.com" type="invisible"/>
<presence to="joe@foo.com" type="visible"/>
Invisibility
Instead, you client should support either “Invisibility” (XEP-0126: Invisibility, Informational), or no such feature at all. Invisibility makes use of “Privacy lists” (XEP-0016: Privacy Lists). Here is a short example, extracted from the XEP. Basically ot blocks all presences from going out to contacts.
Setup a privacy list:
<iq from='bilbo@tolkien.lit/shire' type='set' id='inv1'>
<query xmlns='jabber:iq:privacy'>
<list name='invisible'>
<item action='deny' order='1'>
<presence-out/>
</item>
</list>
</query>
</iq>
Make that privacy list active:
<iq from='bilbo@tolkien.lit/shire' type='set' id='active1'>
<query xmlns='jabber:iq:privacy'>
<active name='invisible'/>
</query>
</iq>
The server should answer these iq. Then the client can send a presence:
<presence>
<status>I'm not really here, you understand!</status></presence>
Later the client can become selectively visibile or invisible to some or all contacts.
The “Invisible presence” support removal will be effective in version 3.0 or 3.1. The timeframe is not completely clear at this point, but the goal for 3.0 beta series is in the next weeks.