iChat and Jabber
Update: Just a note that this article refers to 10.4.0 and is out of date. If you came here from a search, you probably want the FAQ.
Introduction
One of the most important features Mac OS X 10.4 Tiger has from my perspective is Jabber support. iChat now features support for Jabber/XMPP, so many people might be wondering how complete iChat’s support is. Let’s give its problems a quick rundown.
Registering an Account
As far as I’m aware, iChat does not feature functionality allowing for new account creation. Typically in corporate settings the accounts are all pre-created anyway. I hope to help get Use Jabber up and running rather soon. New users will be able to register a new account using a web form there.
Connecting to XMPP Servers
It seems that Apple’s iChat Server is simply jabberd 1.4 repackaged. This is somewhat unfortunate as it appears the iChat team didn’t do much testing against the actual XMPP specifications. iChat has issues connecting to XMPP-compliant servers using SSL. This means that if your company actually deploys an XMPP-compliant server, as opposed to something like jabberd 1.4, you may not be able to use iChat for the time being. I could certainly see this one being fixed and removed from my list sooner rather than later.
XHTML-IM
iChat’s
Let me repeat: iChat uses the element and claims it’s compliant with XHTML-IM. Disgusting.
Avatars
iChat does not implement Avatars as per any of the existing proposed JEPs. Instead, it is sticking the avatars in a vCard and adding extra information to a presence packet. This was one of the early methods discussed for implementing avatars, but it was turned down in favor of a publication/subscription-based model. Unfortunately, since pub/sub still isn’t primetime, it seems Apple chose to implement their own protocol. I doubt it will change anytime soon, so if people want to see avatars and set avatars that iChat users can see, we’re all going to have to implement iChat’s protocol.
vCards
iChat does not have a method for editing vCards or viewing vCards, despite sticking avatars in there and recently adding support to edit AIM profiles.
A/V
The packets iChat sends to negotiate an A/V connection are not at all Jabber-like. They seem to basically be an IQ packet containing Base64′d data. Which someone somewhere is going to have to reverse-engineer and implement.
Multi-User Chats
iChat does not display users in Multi-User Chats using their preferred nicknames as specified in the protocol. Instead, in non-anonymous chats, iChat will display Full JIDs. This can be quite annoying.
Gateways
iChat does not support registering with Gateways. I do not particularly fault the iChat team on this one, since Gateways aren’t really all that great. I’m being serious here, not sarcastic—gateways implement very little of the protocols they translate to, and even then they are very questionable things for server administrators to be running.
Wrap-up
All of these issues (when they appeared to be issues and not design choices) have been reported to Apple. Unfortunately, now that iChat is out, it’s likely that some of these will remain for the long-run for backwards-compatibility.
All said and done, I’m glad iChat has Jabber support now. The iChat developers lived up to (I might even say exceeded) my request that client developers should make Jabber look good by presenting us with an absolutely spectacular Jabber icon:![]()
They tie all of this into a wonderfully simple interface which works quite well, despite the protocol issues I have with it. I’m sure that Jabber will soon get quite an influx of Mac users. I have posted an FAQ for Mac users who are now interested in Jabber.
I did a quick form to register an account on the fritalk.com Jabber server :
http://fritalk.com/register/
It’s still very experimental and hacky, but it can help if you need it.
[…] « Grüsse nach Mexiko iChats Jabber Support Julian hat sich den Jabber-Support von iChat näher angesehen - was für eine Enttäusc […]
What we’ve been using for account registration is a Webmessenger:
http://linux.mty.itesm.mx/jabber/chat/
There are many others Webmessengers in TFW for other Jabber servers.
It enables iChat users (and everyone else) to create an account and setup the transports from the web. After one login, the contacts are authorized and the roster is set up, so iChat can take the token from there on.
Also, James Bunton (author of the MSN transport) has released today a PHP script that does the transport registration. More info here:
http://modevia.com/pipermail/py-transports/2005-May/000415.html
So far, it’s the Jabber community setting things up for the iChat users; I wonder when are the Mac users going to do all those cool web pages and support for fellow iChat users. :)
These comments about registration are probably better placed under the FAQ. I hope you do realize that regular users aren’t going to understand very much of what I said in this article, while they will understand at least a bit of the FAQ.
[…] or of Gabber and Gabber2 for Linux, my favorite Jabber client for Linux in the early days) Blog describing the basics behind iChat XMPP implementation. The article is great to […]
Another issue I noticed with iChat is that it doesn’t sync your roster when you add a contact from another resource that’s logged into the same account.
Jabber Australia has always offered web based registration and we are going to add James’ PHP script.
Hopefully the iChat team will be as responsive as the Safari team was when it was first released. I remember Mark of DiveIntoMark.org pointing out numerous issues in Safari and they were pretty quickly taken care of.
Perhaps this is a foundational element of getting a campaign going like SpreadFirefox. I think getting some of the registration and public server issues cleared up (like, which one to use?!?!) will need to be fixed first…. but it’s nice to have one really well integrated client that almost anyone using OS X will (soon) have.
In response to my list of protocol inadequecies in iChat, Peter Saint-Andre comes to iChat’s defense. […]
[…] . How can I set my profile or view other users’ profiles? Unfortunately, Apple has not implemented those features. […]
[…] did perform actual research using iChat and Gabber’s interfaces. While I have openly criticized some aspects of iChat, I really do […]
Interesting points. Some of these reflect the pre-beta state in which I left iChat’s Jabber support when we switched over to AIM in late 2001. It’s too bad they didn’t get fixed when Jabber got resurrected in Tiger! Others were intentional, at least back in the days when I was implementing Jabber in iChat.
The following is all my personal opinion, nothing to do with today’s iChat team or Apple, OK?
Registering — I had this, though it wasn’t very polished. I’m guessing it’s not in Tiger primarily because the Jabber server in OS X Server integrates with the other user-management features.
XHTML-IM — I guess this one’s my fault for originally writing the NSAttributedString-to-HTML translator to generate old-school layout like font tags. (That’s required for AIM compatibility anyway. Off-topic, if bad HTML disgusts you, don’t ever look at what AOL’s AIM clients generate!) I understand about font tags not being part of the XHTML spec, but is it really a big issue in real life? I would imagine that most all HTML parsers know about font tags because they’re so ubiquitous on the web.
Avatars — That’s definitely the protocol I made up way back when (and discussed with the Jabber community). I have trouble feeling too bad about this shipping: if Jabber was unable to come up with a lightweight scheme for this in the intervening four years, it’s still better for iChat to have nonstandard avatar/buddy-icon support than none. To me, buddy icons are a mandatory feature. I love Jabber pub/sub, but it seems to have become one of those things that’ so complex it won’t really be used, which is sad.
VCards — that’s too bad, considering how much use we make of VCards and address book integration. I hope that can be added.
A/V — Yup, I think that’s just SIP data being jammed into packets. :(
Multi-user chats — Blame me for this. I think nicknames are stupid, and I actually went to a fair bit of trouble to look up all the JIDs and display those instead. The only use I can see of nicks is if you don’t have any real identity system (as in IRC), or if you have no other way to encode status info then by jamming it into the nick, a la “jens_lunch” (again, as in IRC). Their presence in Jabber just seems to be some evolutionary hold-over like the coccyx.
Gateways — I agree with you: this is not a compelling feature, and besides being really awkward for the user to configure, requires them to give out their AIM/MSN/etc password to be stored on the gateway server, which makes my blood run cold, and gives credence to AOL/MS’s FUD about 3rd party clients causing “security breaches”.
iChat and Jabber
Comments about iChat’s Jabber support, including discussion of a way to create a list of frequently visited Jabber conference rooms using the aim: URI…
I’m glad you could answer some of my questions, Jens!
The thing you’re forgetting re: XHTML-IM is that not all clients are desktop clients using full HTML parsers—there are quite a few lightweight clients and the goal is always to be able to have cell phone and palm clients. When you’re paying for bandwidth at a packet level, or when your bandwidth is limited to single or double GPRS, receiving all that extra junk for every message you receive from an iChat user suddenly does become something which affects the end user. Even worse would be when your client supports minimal XHTML-IM (say, a lightweight Palm client), and you’re receiving XHTML-IM from iChat but you can’t see the styles because your client doesn’t have a full old school HTML parser.
I really honestly believe that the XHTML-IM thing is a bigger deal than you think as soon as you start thinking about clients which aren’t on Windows, Linux, or Mac OS X. There are a lot of people out there building their own mini XHTML-IM parsers, in part because we took great efforts in trying to slim down the required elements to a minimum.
I have arguments against some of your other points, but I don’t think it would be particularly productive to continue with them… a lot of it just stems from the fact that I feel a Jabber client which is going to be very popular really should be a bit stricter in its interpretations of the standards, because we’re going to end up with a mess when no one from Apple is even trying to standardize these things they’re doing now. If you were still working on this, I have no doubt that the protocol choices which were made would be argued with the JSF. But since you aren’t, and it doesn’t seem that anyone from Apple has taken an interest in getting iChat and the rest of the Jabber world in sync, these things bother me.
It’s quite interesting that things haven’t changed much since when you left it…
[…] y 2005 at 12:20. Some people in the Jabber community seem to be confused about my criticisms of iChat’s Jabber support. I’d like to […]
[…] o server on linux Apple’s iChat server is jabberd repackaged. This thread details some iChat details, as well as an MSN transport implementation. It seems that […]
So…….. How is http://www.usejabber.com/ coming along?
Slowly.. my involvement is on hold over the summer, and temas seems busy with other things.
[…] Much to my surprise, it seems that in 10.4.2 iChat’s XHTML-IM support has been fixed to comply with the specification. Awesome. That gets rid of my largest complaint. […]
Jabber Australia now offers a tutorial on signing up to Jabber with our server. Even though it was mainly intended for Australians and I usually recommend using a local server if you can, it is already popular with mac users around the world. Though most people do seem to be primarily interested in it for the MSN functionality more than anything. See:
http://www.jabber.org.au/ichat
We on Jabber.CD.Chalmers.Se provide features such as account registration and transport activation (MSN and ICQ) only by using our homepage (which for now only exists in swedish). We have many Apple iChat users connected to our server every day, and it seems to work great!
What’s the difference between Jabber and Trillian ?
Trillian is an instant messaging client. Jabber is an instant messaging protocol. Trillian can speak AIM, MSN, Yahoo!, Jabber, and other protocols.
There are also other clients which can speak Jabber.
Do you know if a kind of “msn light” exists ?
Can I use Trillian instead msn for example ?
I’d like to try find some of the technical details of iChat AV. Data rates for video conferences, protocols & use with the AIM messenger would be very beneficial - I read your paper on the Interfaces, and I’d like to right one on the technologies used behind the interface - any links for a technical spec of iChat AV 3?
Thanks
Firas
Another issue I noticed with iChat is that it doesn’t sync your roster when you add a contact from another resource that’s logged into the same account.