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:

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.

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.

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

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!

Ensure you already allow for @ in nicknames (see paragraph above)

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?).

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.

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.

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.

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.

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.

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.

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. :)