Eric St. Onge



iChat IM Features

Features and design work for iChat instant messaging and text chat.


Summer 2008

Professional Project


iChat 5.0 (Mac OS X 10.6)

Software Engineer

Boxes Transcript Style

I worked on the design and development for one of the new transcript styles with several other engineers on the team. One of the common complaints we heard was that the Balloons style was "too cartoony," and the Text style was "too boring." We worked to build something in between.

The result is an elegant style we calleded Boxes. It consists of an array of stacked boxes. It collapses consecutive messages from the person into the same box, which helps to save space. The rounded corners and bands of color provide a more eye pleasing design than the similar Text style.

Variants are also included to hide names or icons.

The new transcript style gives users the option of a new, modern-looking transcript style. It gives a new treatment to a familiar interface.

Compact Transcript Style

Another new transcript style that was added with the addition of the WebView chat transcript was called Compact. I was the designer and engineer for this style.

Compact was designed with a specific goal in mind: It had to work well in chat rooms. These users to tend be more advanced users, so I built the transcript with them in mind.

The transcript has several features that make it appealing to chat room users. The design is very slim, so as many messages as possible can fit on the screen at one time. It also shows an updated timestamp whenever the time changes, so that users can accurately tell when a message is sent.

On top of that, chat room users tend to hide icons, since they're transitioning from the days of IRC, which did not have icons.

Of course, the user could also opt to hide names and show icons.

The new Compact transcript style in Mac OS X 10.5 gives users an efficient way to view chat transcripts. It uses a minimal amount of space and provides as much information as possible in that space. It gives advanced users a reason to give iChat another look for their chat rooms.

Persistent Chat

As a developer on iChat, one of the common requests I heard from users was that they wanted a sense of context when chatting with their friends. In the typical case, a user will start a new chat and see an empty chat window.

For some users, this was not enough. They wanted to know where their last conversation ended off and how long ago it may have happened. This issue had been lingering for a long time, but I was finally able to address it in an upcoming iChat release.

For the past seven years, iChat has had an option, "Save Chat Transcripts," which allows users to automatically save every chat transcript after it takes place.

If a user has had this option enabled, the data needed to provide the missing context already exists on the user's computer. To take advantage of it, I made changes to the chat transcript importer for Mac OS X's built-in searching system, called Spotlight, which allow it to gather extra pieces of information, including the sender's and recipient's email addresses. This extra information allows iChat to find transcripts using the searching system without any interaction from the user.

An index of this information paves the way for a new option dependent on "Save Chat Transcripts." This new option is entitled, "Automatically Show." It allows the user to configure the number of messages (i.e., amount of context) to provide. The user can choose the last 5, 25, 100, or 250 messages, or the last complete chat that took place.

With the option enabled, if the user chose to see the last five messages, they would now see something like this:

If the user chose to see more messages, they would see more messages available which they could then scroll up to see.

Behind the scenes, when a new chat is started, iChat is asking Spotlight for chat transcripts with the same sender and recipient as the chat they are just starting. The data is then loaded in the background, so the user doesn't have to wait for the search to complete before starting a new chat.

The design for this enhancement provides a simple way for users to get the chat context they have been asking for. It takes advantage of an existing store of information so users can turn the option on to show the information that has existed for years, hidden away in old transcript files.

Message Addressing & Emotes

As part of an effort to improve the text chat experience in Mac OS X 10.5, I added several minor enhancements. Combined, these improvements make text chat better for users by providing hints and context to what is happening in a chat session.

The first enhancement was called "message addressing." With message addressing enabled, iChat will notify the user when someone says his or her name. This is of particular important in chat rooms.

A new option was added to preferences to enable the behavior:

With the behavior enabled, iChat will search all incoming messages for your first, last or full name, your handle, and your nickname, which it retrieves automatically from your Address Book. It will then highlight those terms when it finds them. I had to build a new text scanning feature into iChat to enable this behavior.

Message addressing ties in with iChat's Alerts functionality. For example, you could tell iChat to only notify you of new messages when they are addressed to you.

I used the same text scanning function to determine when an incoming message an emote. An emote is a message that a user sends to indicate an action he or she is performing. Emotes are of particular important for chat rooms.

For instance, if you were to type, "/me prefers that," as in this screen shot:

It will be displayed in the transcript as a status message:

Of course, users can also receive emote messages from their friends:

The new message addressing and emote behaviors allow for a more customizable and flexible text chat experience. The technology that I built for these features also provides a foundation on which to build new text scanning features in the future.