How to use XMPP with PSYC

Three ways in

First of all we must distinguish the three access ports for XMPP. Although the protocol should permit it, the XMPP architecture cannot handle clients and servers on the same access port. That's why psyced requires to listen on 5222 for client access and 5269 for interserver traffic (what a port number ;)). 5223 may still be available for direct TLS/SSL access, but you're not supposed to use that anymore.

Can I install psyced together with an other XMPP server?

On the same IP you mean? The dialback and addressing schemes of XMPP (the proposed standard protocol of XMPP) do not permit to provide the service on other ports without using SRV-DNS records. So you first have to get familiar with SRV. Other than that it should work.

How do I address XMPP entities from PSYC?

You can address them by prepending "xmpp:" as in "xmpp:alice.cooper@example.com". Unfortunately there is no way to distinguish a person from a room or a service alone by its name, so you will have to figure that out for yourself. Chatrooms typically have "conference" in their hostname, but that is just a convention.

How do I address PSYC entities from the XMPP network?

Again since there is no way to distinguish people from rooms and services we had to make them up. First we did it the typical XMPP way which is to allocate a "conference.domain" hostname for chat groups, but we soon realized that this inhibits any ad hoc usage of the protocol even further as every conference server needs to be defined in the DNS domain before being even able to play around with it. We figured out a way to do it which is neither encouraged nor discouraged by the specifications:

We defined that rooms are always prefixed with the '*' character. If you want to address a person from XMPP, use <user>@<host> from the PSYC network uniform. Subobjects cannot be addressed. Places have the address *<place>@<host>. So if you want to meet us, *welcome@psyced.org is what you need to tell your XMPP client. Any other objects and services are currently not addressable from XMPP.

Using XMPP groupchat from PSYC

You can enter XMPP MUCs from PSYC by prefixing their JIDs with "xmpp:" as in "xmpp:jabber@conference.jabber.org". This is suboptimal, as it circumvents PSYC's multicasting, but it is better than no MUC support at all.

Using PSYC for XMPP groupchat

It could be a good idea to host your XMPP groupchat rooms on a PSYC server rather than on a XMPP conference server. PSYC will provide regular multicasting, so you won't need any cloud-based or proprietary solutions to achieve scalability. It also gives you fully programmable conference control. The stable implementation of the IRC access protocol will make it useful to more people than just XMPP users.

The MUC implementation in psyced however acts a bit differently from other MUCs. In regular MUCs users cannot be shown by their real address, as this would trigger spoofing protection. They are shown pseudo-anonymously as a nickname of the room. Consequently you cannot exchange messages with them directly. Instead you are given the "/msg" command which sends your private message to the room as only the room can resolve the recipient's nickname and forward the message to the final destination.

We have chosen not to support this practice, as it breaches your privacy. A person may decide to run a MUC server and invite all her friends in, and while they may keep some secret conversation behind her back, like the gift they are planning to buy for her birthday, she could modify her server to show her all "/msg" conversation not intended for her.

When using PSYC from XMPP you are encouraged to always use direct messaging to the person, not send your private conversation through the room server. Please also use end-to-end encryption.

Another feature we are not planning to support is having multiple people chat with nicknames that differ only in upper/lower case. It's confusing, not useful.

Using psyced with XMPP clients

psyced is usable with a XMPP client, although this access method is neither feature-complete nor a priority for development. So this is still a bit experimental, but it has some advantages:

One is, you have the complete PSYC command set available if you prefix PSYC commands with a '+' or whatever character you have defined as a command character, although you need to use a trick to transmit commands to your PSYC identity. When the manual speaks of commands like /sub you will have to enter a room and send the commands to the room, at least apparently (prefixed by a '+' instead of the usual '/').

Two is, we managed to not confront you with a special new syntax to address people on the two chat network systems. All you do is insert the typical XMPP notation of user@host into your client, and the server will be smart enough to figure out if the person is still on XMPP or already on PSYC.