Apple's inclusion of iChat in Mac OS X managed to convince me of the utility of instant messaging, something no other instant messaging program had managed to do. The difference was simple ubiquity; suddenly most of the people I wanted to communicate with also had iChat installed. Thanks to iChat, the TidBITS production process, which involves trading various drafts of the issue among Jeff Carlson, Geoff Duncan, and myself, didn't require nearly as many phone calls on Monday. It hasn't eliminated them entirely, and in fact, we often use iChat as a way of checking to see if it's a good time to talk on the phone. Many chats also evolve into phone conversations as one of us gets tired of typing; we usually announce such an event by dialing the other person's number and typing "ring" into iChat. (It was funny the first time or two; now it's become habit, so much so that when someone else started an iChat with Jeff Carlson by typing "ring" recently, Jeff assumed it was me.)
As an aside, you might ask why we don't use iChat AV's voice or video chat capabilities. The simple reason is that the iSight camera Apple sent me for review stopped working reliably at some point, and I became tired of troubleshooting it every time I wanted to use it. The issues I raised with Apple PR fell through the cracks at some point, and I never found the time to bring them back up. One of these days...
Despite its undeniable utility, I retain a love-hate relationship with iChat, and after much consideration, I've realized that it has almost nothing to do with actually using the program, but with the limited ways that the program lets me manage my availability with different groups of people.
Status Quo -- To refresh your memory, iChat has four states inherited from AOL Instant Messenger (the network iChat uses): Offline, Away, Available, and Idle. When you're Offline, no one can see you or start a chat, and more annoyingly, you can't see anyone else or start any chats either. In contrast, when you're Away, Available, or Idle, others can see your status and originate chats. With one exception, the difference between Away and Available is purely cosmetic (a red square versus a green ball, or red and green colored spheres if you don't want to see the shapes). However, that exception is significant: when you're Available but haven't touched your keyboard or mouse in 5 or 10 minutes, iChat can optionally change your state to Idle (if you don't allow people to see that you're idle, iChat instead switches to Away state after some period of time). In both Away and Available states, you can customize the message people see; in the Idle state, iChat reports only how long you've been idle.
The custom messages are important, since they let you refine the basic states... but only for other iChat users, since users of other instant messaging programs may not see them. Nonetheless, for those who do see your messages, there's a big difference between "Don't Bug Me!" in Away state and "Reading email" in Available state. Of course, using programs like iChatStatus, you can have a variety of automatic messages appear instead, but as amusing as they are, they don't help manage your availability states.
These four states are augmented by a number of privacy features. You can allow anyone, anyone in your Buddy List, or specific people to see when you're online (which also lets them initiate chats). You can also block everyone or only specific people. Unfortunately, these privacy options don't extend to the groups you can create in iChat, which would be highly welcome. If you don't want others to see that you're slacking, or if you're concerned about advertising that your Mac is unattended (and thus vulnerable to theft), you can set an option that blocks others from seeing when you're in the Idle state.
Understanding Status -- I can't speak to whether or not this approach to advertising one's status works for teenagers and those using chat for social purposes. I can say with some assurance, though, that it drives me absolutely batty, because it in no way matches the way I wish to make my availability known.
At this point in my life, I don't use my Mac idly. Even assuming I didn't always have something to write or edit (which I do; darn those weekly TidBITS deadlines!), my Eudora In box constantly mocks me with its ever-expanding girth (closing in on 1,200 messages at the moment). So if I'm at the computer, I'm working, and I'd like to be able to set my availability based on the level to which I mind being interrupted, and by whom. If I'm just reading email for the day, an iChat interruption with a friend isn't much of a bother, and I can often maintain the chat while going through email. If I'm writing or editing, though, interruptions aren't at all welcome, unless they're from someone who's working with me on the same project. For instance, on Mondays, I spend most of the day editing and writing up last-minute articles, and interruptions are welcome only from TidBITS staffers and any external authors whose articles we're editing.
I'm sure others have different modes of working, and a number of people shared them on TidBITS Talk in a pair of threads I started to see what others thought. But the fact that's become clear from those discussions and from talking to some of the people I do chat with regularly is that the current Offline/Available/Away/Idle states are rather confused.
For starters, Offline reflects both the state of iChat (if it's not running for whatever reason, you're Offline) and a working state in which you can brook no interruptions at all. Unfortunately, if you switch into the Offline state manually, you also lose the capability to see the state of people in your Buddy List. That's annoying, since, for instance, I'll often check someone's state in iChat before calling them, but I can't do that without going online. Since iChat can alert others to changes in your status, just connecting can result in an unwelcome chat.
Available and Away are even more problematic. First off, Away doesn't actually mean that you're away from your Mac, and it doesn't block messages or return a pre-defined message to the person attempting to initiate a chat (as an answering machine does when you're away from your phone). And the one way of knowing that someone really is away from her Mac - the Idle state - won't appear if you're in the Away state. So Available ends up meaning that you're available to chat, unless you're actually away from your Mac and in Idle state. And Away means that you might be away from your Mac, but you might also be available to chat. Pfeh!
Altered States -- With some modification, iChat's states could make significantly more sense and more closely match the way many people use instant messaging. Consider the following:
Offline. An offline state is necessary, but it should reflect only iChat's state. If iChat (or some appropriate listener daemon) isn't active, you're Offline. Obviously, if your Mac is sleeping, or turned off, or not connected to the Internet, you'd also be in Offline mode. In an ideal world, you'd be able to set a message that would be displayed with your name in the Buddy Lists of others so you could relay appropriate information, such as "Flying to Chicago on US Air #763." If iChat can cache a buddy's icon and display that when he's Offline, it should be able to cache and display a custom message. Since this caching happens only on the client side, the message might not be accurate if both copies of iChat weren't online at the same time.
Away. In contrast to how things are now, Away should be a true Away, responding automatically to incoming messages with a canned response you set rather than allowing someone to send you messages without knowing if you're really away. You would either set Away manually or it would kick in automatically after the computer was idle for some period (assuming you don't want to advertise when you're Idle). A useful option would be to display the time since the Away state was set to tell others how long you'd been away.
Idle. Like Offline, Idle reflects the state of the Mac and isn't something you should be able to set, at least beyond the number of minutes before activation. Although I don't feel strongly about it, I can see an argument that Idle should optionally switch to Away after a specified amount of time or perhaps during certain hours of the day. After all, if you're in Available state when you leave your work Mac for the day, advertising your state as Away is more accurate than Idle, and the automatic response is more helpful than displaying the fact that you've been idle for 13 hours.
Available/Busy. The problem with iChat's Available state is that it doesn't let you set the privacy options at the same time; they're available only in the Preferences window, aren't easily changed, and aren't sufficiently specific. When you're available to chat, you're really saying, "I'm available to chat with the following people." That might be all people, anyone in your Buddy List, anyone in a specific group in your Buddy List, a single person, or absolutely no one. So, when you choose Available, you should also be able to choose, either via hierarchical menus or a second pop-up menu, the set of people for whom you're actually available. Those people would see your state as Available; everyone else would see it as Busy (think of the telephone metaphor again; it's a busy signal) and would receive an automated response if they tried to initiate a chat. It's still important that Available/Busy change (if the user wishes) to Idle after a user-specified time, since otherwise people can end up having one-sided chats, not realizing you stepped away from your desk.
This approach to Available/Busy is key, I think, since it lets you represent your willingness to chat in any way. It lets you be available to anyone if you're happy to chat with anyone who knows your screen name. If you're open to chatting but want to avoid messages from random unknown people, limiting it to your Buddy List makes sense. If you're working hard on a project with a group or an individual, you can ensure that no one else can interrupt you. And if you're concentrating hard and will be rude to anyone who interrupts, you can eliminate all disruptions while still being able to contact others.
The automatic response capability is also important, since it lets you explain why you're not accepting incoming messages, either because you're too busy or because you're actually away from the computer.
Automatic State Changes -- Another aspect of the difficulty of managing states is that it's hard to remember to update iChat whenever your willingness to chat changes. I often get snarky comments from people asking if I'm still eating lunch, for instance, if I forget to change my custom message.
Programs like iChatStatus can change your message to match things like the song iTunes is playing and the outside temperature, but apart from the scripts iChatStatus provides to report on your active application and interoperate with Salling Clicker and a Bluetooth phone to determine your proximity to the computer, most of them don't help you identify your true availability to others. I'd be interested to see software that would attempt to predict (perhaps with a training mode) how busy you were and create custom messages based on your activity level and type.
Other software, such as Parliant's PhoneValet, can tell when you're on the phone and switch your Away state to On the Phone; that's extremely helpful. I've also heard from people who dislike carrying on more than one chat at once; iChat could provide an option to block everyone but the person with whom you're chatting. iChat already does this when you're involved in an audio/video chat, where only one is possible at a time, so it doesn't seem like much of a stretch to extend the concept to text chats.
Technical Feasibility -- What I don't know, unfortunately, is how feasible these changes are. Some, such as a custom Offline message, a timer for Away, and the automatic response capability would seem relatively easy to add since only iChat is involved. (For instance, other instant messaging clients already offer the automatic response option.) It's possible, however, that Apple might not be able to offer a true Away or an Available state that toggles to Busy for those who aren't in the allowed group, given that iChat operates on the AIM network, which Apple doesn't control. My hope is, however, that whatever extensions Apple was able to make to allow custom messages in the current Available and Away modes could enable at least iChat participants to use these states with one another. It's possible things would break down when communicating with people using other AIM clients, although the automatic response feature might ameliorate any confusion.
Whatever the feasibility, I hope Apple will at least consider these suggestions as providing a useful refinement of iChat's current states without overly complicating the issue. In the meantime, the best we can do is set appropriate custom messages and attempt to honor the availability wishes of others.