iChat and Jabber

Sunday, May 8, 2005 by darco
Posted in

iChat I was quite pleasantly suprised when I installed MacOS X 10.4 the other day and found out that iChat now supported Jabber! This is something that has been on my wish-list since iChat was introduced.

For those of you who are not in the know, Jabber is a decentralized instant messaging protocol that does not rely on big corporate conglomerates to operate. It actually operates in a fasion similar to that on email--you connect to your jabber server, and the jabber servers connect to each other. Jabber ID's look like email addresses. (FYI: My jabber ID and email address are exactly the same)

What you can also so is set up transports to other IM networks, so that you can use them transparently with Jabber. There are transports for most all of the major IM networks, including AIM, MSN, Yahoo, and ICQ. There are even transports for non-im like systems, such as IRC.

ichat_irc_jabber

I got into jabber a long time ago, but a server crash crushed my dreams and I never got around to putting the jabber server back up. Now that iChat has jabber support, I am now into it again. My jabber server is now back up and running, with transports for all the major networks and a few IRC networks too. If you would like an account on it, just drop me a line and I'll consider it.

So I am now using MSN, ICQ, YahooIM, and IRC via iChat, which is wicked cool. However, one thing that is rather clumsy is joining a group chat. Any time you want to join a group chat, you have to manually enter in the full jabber address for the group chat--it doesn't keep a list of commonly visited channels. However, after some tinkering, I have found a way to do this.

NOTE: A much better way to do this can now be found here!

You've seen the aim: URL before. Well, the following bastardization of it will open the jdev conference at jabber.org:

aim:gochat?service=Jabber&roomname=jdev@conference.jabber.org

Doing this makes me cringe, because it is so obviously dependent on a quirk of iChat--it won't work for other platforms. However, if all you want to do is make a list of commonly visited jabber chatrooms on your mac, then it's OK. Just create a bookmark in Safari for each chat room you visit frequently. Add a "Chatrooms" folder to your bookmarks bar to make it easy to get to.

Keep in mind that if the room has any characters like '#', '+', or '%', you will need to escape them appropriately. For example, if I wanted to join #applegeeks@irc.aniverse.com, I would have to use the following URL:

aim:gochat?service=Jabber&roomname=%23applegeeks@irc.aniverse.com

iChat really should just be using the xmpp: URI format, as specified by draft-xmpp-uri or even JEP-0147. But alas, it doesn't. At least not yet.

A side note to those people trying to set up their own jabber servers for iChat use: The latest version of the yahoo-transport will not work. I have a fix for this which I will release a patch for soon. Drop me a line if you want more info.

EDIT2: Here is an excellent tutorial on using Jabber with iChat, including setting up transports and stuff.


Trackback from your own site.

6 Comments for “iChat and Jabber”

  1. Thomas Bohn Says:

    About the URI format, iChat shouldn't support xmpp: but im: like it is mentioned in the RFC about XMPP-IM. But it doesn't support IM either.

    Thomas

  2. Nick Nick Says:

    please, please, please, please, please post the yahoo transport patch somewhere! I am going completely insane trying to find the patch to let iChat users see what is actually being sent to them! It seems like a dozen people have independently figured out what to change, but none of them have actually shared that knowledge with the rest of the world. Come on! Help a brother out!

  3. darco darco* Says:

    Open up yahoo-message.c and look at the body for yahoo_send_jabber_message(). Remove the line that looks like this:

    xmlnode_insert_cdata (xmlnode_insert_tag (x, "id"), "ABCD", 4);

    This line is a violation of the message event JEP anyway.

    OR... you could just use the xmpppy yahoo transport. (which is what I now use)

  4. skweek Says:

    is this fake?

  5. Blargo Zonto Says:

    No, this is not a fake.

Comment on this post

* required

(or just Login »)


Type these numbers into the given field. This is how to make sure you aren't a computer.