Like most things proprietary, OpenSource people have written their own InstantMessenger, called Jabber. Jabber is built on a robust model, similar to SMTP and HTTP - and completely unlike IRC's unscalable mess :) It is based on a core XML router with small plugin modules handling all the various parts of the InstantMessaging. It supports "Transports" which allow a Jabber user to talk to users of other InstantMessenger networks such as AIM, MSN, ICQ, YahooMessenger, SMTP, IRC, IMAP and many others. It has clients for MicrosoftWindows, Linux, various PDA's and other machines/devices.
You may want a nice simple introduction to SettingUpJabber?. PerryLorier has also written a JabberWiki.
Having trouble getting the Jabber server under Debian working? Here are some hints.
Debian commented out the mod_auth_plain module from their sample config, presumably to pressure users into using secure authentication methods. While this is a worthy goal, they overlooked that creating new users uses mod_auth_plain. If you uncomment this module it will work.
Your jabber server will have a list of transports you can use. These will provide communications with other services, such as multiuser conferencing, ICQ, AIM, Yahoo, MSN, IRC, or even SMTP (ie, standard email). Normally they have descriptive names like 'icq.jabber.org' so are easy to guess, but it pays to have a lot at the transports available.
There are two main implementations of this around the place. ICQ and AIM actually use the same protocol, so the AIM-t transport can be used as an ICQ transport as well. There is also a JIT transport which handles ICQ and ICQ-SMS a lot better than the AIM-t transport.
If your jabber server uses the AIM-t transport, you should subscribe to the icq.jabber.domain.whatever agent, using your ICQ username and password, and then you can add contacts of the form icqid@icq.jabber.domain.whatever. You can send SMS's by sending something like
SEND-SMS:+cellphonenumber:<message>
to any ICQ recipient on your jabber list.
If your jabber server uses the JIT transport, then use it instead of AIM-t. Its a lot nicer, supports user searching correctly, handles SMS better, so on.
Subscribe as above (check what the agent is actually called first!).
You can add contacts of the form icqid@jit.jabber.domain.whatever, for icq, or phonenumber@sms.jabber.domain.whatever for sms.
NOTE: all server names mentioned above are guides only, make sure you get the correct DNS name of the transport for your jabber server!
No other page links to JabberInstantMessaging yet.