Getting started using IRC with psyced

The psyced is among other things capable of supporting IRC clients. Additionally there are gateways to IRC networks which allow you to communicate with regular IRC network users from PSYC.

PSYC only looks like IRC, but it isn't

Once again - PSYC isn't just yet another IRC network and psyced isn't yet another ircd. In fact it is a completely new technology which has been retrofitted with IRC compatibility. So you can still use your favorite IRC client, but you can just as well replace it whenever you find something else to suit you better, like a PSYC or -huh, why not- even a MUD client. Your configuration will be saved and managed by psyced anyway.

The other command prefix.

I presume you are used to commands which are prefixed with a '/'. PSYC has many new commands that IRC does not have. The programmers of a room (a channel in IRCspeak) can even define commands for their specific room. So the amount of extra commands varies for each room and PSYC server. Some IRC commands even have become unnecessary in PSYC. Smart IRC clients forward unknown commands to the server, but most of them don't. Because of this, PSYC comes with an extra command prefix (which is filtered out from IRC's so-called PRIVMSGs, if you're a techie and know what I mean). The command prefix is told as you log in:
*** Beware, "+" is configured as your command character.
You can change it into something else, if plus doesn't suit you. Let's change it into tilde as an example:
+set commandcharacter ~
Same thing in short:
+set cmdchar ~
*** Ok. Variable "commandcharacter" is "~" now.
Now you can execute each server-side command with that prefix, or whatever prefix command character you'd like to use. This may look a little strange at first, because your client still thinks you are talking to a channel or user, but in fact these inputs are never treated as regular chat. You must take care not to type those commands into a status window, if your client has one. If there is no 'channel' or 'query' associated to a window, your input will not go anywhere. This is impractical since clients often put psyced output messages into the status window. In the case of irssi you can however simply use the regular '/' instead, as it will send unknown commands through to the server. The rest of this tutorial assumes that '+' is your command prefix.

Remote channels and people

One fundamental difference between PSYC and IRC is that PSYC servers allow people to talk across servers without having to be linked in advance, therefore being connected to a PSYC server usually means you can talk to everyone else using PSYC in the world, given you know their addresses and channels. In order to meet remote people you just join a channel with a PSYC uniform, as in
/join #psyc://psyced.org/@welcome
Notice the slash because this is an actual IRC command and notice how a '#' is prepended to the actual URL to trick IRC clients into doing the right thing. Similarely, you can have private conversation with remote users like this
/msg psyc://example.int/~user Hello!
In the case of XMPP users this would look like
/msg xmpp:user@example.int Hello!
Also you can define server-side aliases, so that remote users (PSYC, XMPP or other) appear using local nicknames. Look up the psyced manual for details on the +alias and +unalias commands, or just try them out. In future, servers will do this automatically for you.

Language

You are seeing german messages by mistake? No problem, the server is multi-lingual. Just switch to english using
+set language en
Feel invited to add more languages!

The welcome room

Once you connect to a psyced you are automatically "joined" into a welcome room. Don't be afraid! This is only for newbies: everyone without a PSYC identity. We wanted to make sure you meet someone to talk to, rightaway. You may also find it unfamiliar that some rooms keep a +history of what has been said recently. This is technically the same as a person's +lastlog (the same code in fact). Because of this you'll see the last lines of the discussion in the room you join. This will happen only in special public rooms, which may also be integrated in some websites. This is an enhancement for public rooms and certainly won't spy on you in private rooms. It's up to the room's programmer to enable or disable room history. (In fact you are normally also given the +histclear command to delete lines from the history in case you think you have been talking too many private things and would like to revert that).

Creating your identity

psyced saves the rooms you are in as soon as you're registered, even if it is on a different server than your identity (UNI) This room could even be a perl script. Only registered users are allowed to send private messages, this helps prevent spam messaging and even some unnecessary vulgarities. Being a newbie or guest is like being "restricted" on IRC. We don't make guesses about your credibility by looking at your IP address. You build up your own credibility with the time you use your identity. So get yourself one. It's easy:
+register <yourPassword>
You don't even need to login again. Maybe we're going to make this more complicated one day. The internet is malicious, sometimes. But currently it's that easy. However, the registration of a PSYC identity does not mean that you are giving away anything about your real identity. This only ensures that no one else uses your address. You may be just as anonymous as long as you don't do something reprehensible. For IRCers this might be something new. On IRC it's being frowned upon to be anonymous. Instead we made good experiences with that. It's wrong to think that only troublemakers want to stay anonymous. Should your nickname already be taken on this server, why don't you just take an other one or install yourself a psyced.

Passwords

Passwords are not kept in encrypted form. This is necessary for access methods such as PSYC or XMPP which prefer hashed passwords rather then plain text ones. Registering is currently the same as setting your password, so the following command does the same as +register in the paragraph above.
+set password <yourPassword>
or simply +reg(ister). The server will behave like a password protected IRC server after that. Try:
/server <yourPsyced> 6667 <yourPassword>
or change the connect options of your IRC client. Here's a snapshot on how to set up your password using the mIRC client. If you're using irssi instead, try something like
/server add -ircnet psyc <yourPsyced> 6667 <yourPassword>
and /save. For TLS-encrypted IRC protocol use port 9999.

Changing your nickname

is a problem. Has to do with the way nickname changes are done in the IRC protocol which is completely unlike any other system: When you change your nickname in IRC, you change your identity but keep the presence of the other people in your channels. In PSYC and other systems this doesn't make sense. If you change your identity, you may not be in the same places and know the same people. You may even have a different namespace of nicknames. PSYC has two other kinds of nickname change, but they are both incompatible with IRC clients, so they won't work for you.
  1. You can change your nickname using +nick in specific rooms for fun (with 'masquerading' enabled). The new nicknames are only valid for the specific room then, but only people without IRC clients can see them. How ironic.
  2. If you really want to change identity, +connect would be the appropriate command. IRC clients however need to be disconnected from the server to understand that the old nicknames are no longer valid, so this command is useless for you, too.
So if you really want to change your nickname, the only way to do it so the client understands what is happening is to disconnect from the server, change the name, then reconnect.

Presence

The
/away
command exists and works, but PSYC actually has a richer presence model with a whole choice of new commands like
+busy
or even
+vacation off to sicily.

Bouncers

You don't really need them anymore. The PSYC server saves messages during your absence anyway.
*** No new messages.
That's what you see when there are none. It only depends on how your IRC client deals with it. You can leave messages to offline people. They are logged and delivered to the person as soon as she connects. Some PSYC servers even deliver the message by electronic mail, if your email-address is set up properly using
+set email <addr@ss>
or just try the +edit command. Then again, some people decide to stay connected non-stop so they don't miss out on those types of messages, that would not be forwarded to them otherwise.

Ignore

Sometimes you just have to ignore someone. You can also just forbid messages from strangers (you can call that "whitelisting". see the manual for details). Both is managed by the server rather than the client, which is more effective. Just type:
+ig nick
and the server replies:
*** You won't be seeing a word from "nick".
To remove the entry try:
+unig nick
and you'll get:
*** Regular display restored for "nick".
You could aswell use +display but to make it simpler we have a whole series of un-something commands matching the something commands.

Friends instead of notify

Friends existed already before the invention of ICQ. On IRC you usually ask every minute if your friends are online. That's not efficient at all. psyced tells you, when your friends are online. It also tells you when they leave. This isn't achieved with some big brotherish watching plan technically, but rather every person is itself a "multicast room" that you join when you become friends. So whenever the person has a change in presence status it is sent down the multicast tree to every friend efficiently. In case you didn't understand the technical bits, don't worry - just think of it as working better than any other messaging or chat system you have used before. You can tell nick that you want to be on his friends-list (and vice versa) with
+friend nick
(he has to confirm this with
+friend yourNick
).
You will see who of your friends are avaiable on connect:
Friends online: xx [00:30], yy[05:32]
and their idle time. You will also receive a notice as soon as a friend joins:
*** Notification: <nick> enters the world.
and this is how to make new friends...
*** <nick> kindly asks for your friendship.
*** Accepting friendship with <nick>.
You can remove a status of friendship using:
+fr -nick

Subscribing rooms vs autojoin

The usual way on IRC is to join a channel everytime you connect (autojoin). That's not the way to PSYC it. Your PSYC identity remembers your subscriptions of rooms, especially useful for receiving news headlines.
How does it work?:
+sub roomname
or
+subscribe roomname
to subscribe. To unsubscribe it's:
+unsub roomname
or
+unsubscribe roomname
You must not prefix the room with a "#". Channels in PSYC do not need a prefix. The ircd emulation only prefixes everything with a "#" so that every IRC client can deal with it. Furthermore, unlike IRC it also says nothing about a room's features or behaviour. Every PSYC room is special in its behaviour anyway, so geeky channel prefixes wouldn't do anyway.

We want you to talk this way..

This is just a style aspect of PSYC. Since the inventor of PSYC is the same guy that came up with the /me command, it's a rather obvious consequence that actions are an integral part of the PSYC protocol, not limited to certain message types. In short, whatever you say or do, you can do it in your own action style. For general talking you can set up a so-called speakaction.
+set speakaction <verb>
This produces something like:
*** Ok. Variable "speakaction" is "exclaims" now.
and whenever you say something, it will show as:
<yourNick> exclaims: hey there!
In fact you won't see this yourself, because IRC clients tend to echo your inputs themselves automatically (which defeats the nice PSYC remote echoing feature, but you can't have everything anyway). Questions are automatically shown as "<nick> asks: <question>". This is all perfectly in line with PSYC culture and its client technologies, but if your IRC client does an ugly rendition of this, you can turn it off using
+set visiblespeakaction off
After that PSYC will look like harmless IRC again. :)

No trouble with unicode

Does your client transmit special characters encoded as UTF-8? No problem, simply let the server know by issueing
+set charset <charset>
with the charset currently being either ISO-8859-1 or UTF-8. Unfortunately there is no IRC negotiation protocol to let the server find out automatically, but then again psyced seems to be the only IRC server out there which can convert charsets between its users at all. As stupid as this may sound. psyced also remembers this setting, so if you change client or access form you may have to fix this again.

Other things psyced is capable of.

psyced comes with a command manual on its builtin webserver, or you can use our public site for that purpose with the obvious name of http://help.pages.de/.

Features of psyced you won't need.

Some of the IRC client functionality is also implemented again within the psyced. This is because telnet, web chat and similar access forms do not provide those on the user interface side. In the case of the +query command this would be confusing, so we turned that off for IRCers, but in the cast of +log (or +lastlog) it can be quite convenient that the server is remembering a certain amount of your last messages. You can delete that storage anytime using +logclear.

Feel blissed

... that you will see notices such as this one only if you operate a gateway to a legacy IRC network: Server is currently in split-mode. You will NOT get channel operator status on new channels. Any DoS-kid can decide not to let you chat properly for as long as he likes. That's history from now on! Someone attacking somebody else you are completely unrelated to will not disrupt your communications. Only if a denial of service attack is run against your server because you are the target of the attack, then the problem is still all yours. This may sound like a detail but in fact it makes the PSYC network much safer than IRC.

Appendix: Wishlist for IRC client coders

If you are the developer of an IRC client, here are a few suggestions how to make your client more PSYC-friendly!
  1. Ensure you already allow for @ in nicknames (see paragraph above)
  2. Please allow for passwords to be entered interactively like ircII does. This means the 464 message code (ERR_PASSWDMISMATCH) should somehow prompt the user to input his password. This will not conflict with "server passwords" as used by regular IRC networks. You could of course limit such password prompts or pop-ups to just one per server connection, to ensure the server is not trying to attack you (but if your home server is not your friend, why don't you use an other?).
  3. Please allow for unknown user commands to be passed on transparently to the server, like when the user types /subscribe simply send subscribe to the server. Other IRC server developers will appreciate this change, too.
  4. Please allow for echoing of user input to be switched off, ideally as soon as you find out you are connecting to a PSYC server. By issueing SET ECHO ON you can make the server send you echoes of your messages as soon as they have reached the destination, which makes them much more useful. In many cases they will also reflect the order in which the other group members have received the message, making group conversation more consistent.
  5. Feel welcome to extend your menues and buttons to support the psyced commands as defined in the psyced user manual. You don't have to implement a native PSYC client to already be a lot more PSYC-friendly.
  6. Please consider supporting the PSYC PRESENCE notices and commands, especially if you keep contacts in an extra list or view. The way PSYC handles presence is much more consistent and efficient than IRC's ISON. Also PSYC will give you the ability to get presence information from people anywhere on PSYC and networks which are gatewayed to PSYC such as XMPP. You may want to help your users put together the uniforms for such "remote" users, and manage the server-side namespace using the ALIAS command.
  7. If you have support for irc-URLs you may also want to support psyc: and xmpp: URLs, now that you have an identity which permits you to talk to any such uniform when the user clicks it. We would particularely be enchanted if your users are empowered to click on a psyc:-link on a webpage in their browser, and *zing* find themselves talking to the recipient. Consider that PSYC is the only chat and communications protocol which was designed with web integration in mind - psyc: URLs allow you to deliver the same complex amount of information with a single click as http-URLs do when issued from a form or similar. This can lead to a whole new breed of communications-aware web-applications.
  8. PSYC servers will not send you any IRC PING requests. That's because PING reimplements what TCP already provides with SO_KEEPALIVE, with the difference that IRC PING is not dialup-router-compatible. Let me explain: A good dialup router will let you keep your applications open and connected to the internet even if your dialup line goes down to save money. As soon as something happens on the TCP link the connection will be fired up again. This works for an ircII client in a remote screen(1), but it doesn't work for a local IRC client and a remote IRC server. Even if you think hardly anyone uses such dialup lines today, PING is still the ugly redo of something which TCP already supports itself. If you agree with us, simply disable the creation of PINGs in your client. If you think PINGs are useful for timing the reaction speed of the server, remember you have to initiate them.
  9. PINGing remote entities on the PSYC network is not supported. That may even be useful one day, although the remote echoes already provide a way to find out if there is a problem reaching the other side. It's also easier to use, just chat and you get echoes. ;)
How to figure out whether you are connected to the PSYC (you only need one server connection to PSYC in most cases) isn't easy to figure out yet. For now you can tell by spotting the space seperated word PSYC in the 001 greeting message from the server. You know we are avoiding to add our own codes to a protocol which is already plagued by uncontrolled growth. Should you run into any problems with the way the psyced sends you information, especially recognizing new message types, let us know so we can think of a way to handle this. We may have to introduce at least one PSYC numeric, or by sending us SET PSYC ON you can let us know that we can use extended IRC protocol rather than strictly RFC. Then again, maybe it's not so bad to implement a PSYC parser after all, since some protocol features are still only available in native PSYC.

Thank you for supporting PSYC. It will reward you with a better chat life. :)