iChat has several key files scattered in obscure places of the OS. strings reveals several interesting items in /System/Library/PrivateFrameworks/InstantMessaging.framework/iChatAgent.app/Contents/MacOS/iChatAgent, which is the file that does all the communicating. iChat is only a frontend to that daemon.

  • Various references to "the %@ service", suggesting multiple-service support
  • jabberConnection:rosterReceived:
  • jabberConnection:presenceSubscriptionRequest:
  • jabberConnection:presenceStatusReceived:
  • SubNet %@: P2PJabber connection opened, sending %i pending message(s)...
SubNet appears to be the Rendezvous service, which in turn appears to be based on Jabber. Real Jabber support could then be added at a later date, much easier.

iChat also has some key issues with AIM protocol support on my machine. Occasionally, on joining chats, the program barfs to console.log about the room already being registered, requiring you to quit the program to join chats. Considering there's only been one update since Jaguar came out, I'm not surprised. Also, when I recieve bogus messages from programs designed to crash Windows AIM, iChatAgent will crash 1 out of 10 times, leaving an error saying that iChat lost connection to the Agent. Quit, relaunch.