Sean Egan's Blog

Identity vs. Account Orientation

2.0.0beta7 is out, the final beta before Pidgin 2.0.0. We hired an artist assoicated with the Tango project, Hylke Bons, to do a complete graphical overhaul of the UI, and a logo designer to create a new Pidgin logo, and the results have been astounding. This is the first release the new look appears in. While Pidgin looks visually, much, much better than Gaim ever did, I still suspect some of the new changes will draw some complaints from a few people.

There are two basic approaches that come to mind in developing a multi-protocol IM client like Pidgin. One is the account-oriented approach. This approach allows you to configure all your accounts, and then presents them to you separately. It purposely distinguishes your AIM identity from your XMPP identity from your Yahoo! identity. It says "these are your IM accounts, use them however you wish. These are your XMPP buddies. These are your Yahoo! buddies." This is more-or-less the same as running multiple IM clients separately, but having them all in one window.

The other approach is the identity-oriented approach. This approach says: "I am one person who happens to have several IM accounts. I have one set of friends, who happen to use different services," assumes you don't care about those details, and abstracts them away. While the account-oriented approach shows you a list of your accounts, and then the buddy lists of each account, the identity-oriented approach shows you yourself, and your friends. It aims to make it appear, functionally, as if you only had one IM account.

I, and many (probably most) of the Pidgin developers use Pidgin in this latter way. We're interested in ourself, and in our friends. We typically want to talk to Ethan, rather than start an XMPP conversation with Formally, Gaim (as probably all multi-protocol IM clients) has been inconsistant in which approach it took. In some places it was decidedly account based; you could only view logs with specific IM contacts, rather than with whole "people," (i.e. a collection of IM contacts owned by the same person). Other places were more identity-oriented: buddies from all your accounts were merged together into a single list.

For 2.0.0, a lot of the work has gone into cleaning up this inconsistency. And since we prefer the identity-oriented approach, we've worked towards that direction. You, as an identity, have a single status, and a single buddy icon. And in the final push, revealed in tonight's beta release, your friends are represented primarily by their status, not what protocol they happen to use. When I look at my list right now, I see that I'm "Available" with a nifty Duck Hunt buddy icon, and that Mark is away with his Rugrats icon. No longer do I see that Mark happens to be using AIM, which is good because I never cared about that to begin with. Nor must I drop down the Accounts menu to see what all my accounts are, and what status they're in. I don't have to set each one's icon individually either. If I want to be Invisible, I just hit the status selector and choose Invisible.

While the identity-oriented approach is what best suits me, it's not necessarily one-size-fits-all. We commonly get requests for more account-oriented behavior. We're often asked to separate the buddy lists of different accounts into different groups or tabs. Some people prefer an account-oriented approach, and---while I think most of the feedback we've gotten about Pidgin has been postive---there have certainly been complaints about this shift. The most common such criticism received from earlier betas is---as also seen in this review---that while setting your status on a single account used to be easy, it's now more difficult.

Of course, when viewed in the light that you, as a Pidgin user, are a single person, it makes total sense that you would have only one status. If your MSN account is away cliff diving, it makes sense that your QQ account would be also. If you're just one person, why should you have to check your AIM list for one person and your IRC list for another? The issue that motivates these complaints is that people who prefer an accounts-oriented approach tend to use a multi-protocol IM client as if they are more than one person.

The most common reason (possibly only reason) for I hear supporting the account-oriented approach is: I use AIM at school and Google Talk with parents, and I don't want my parents to know what I'm doing with my friends, or---for older people---I use Sametime at work, and Yahoo! with my friends and I don't want my boss knowing what I'm going with my friends. In both cases, the user isn't a single person, but two people: a straight-laced, wholesome, angel on one account and a drugged up, drunken, vice-crazed sinner on the other :). Even the above review claims this same reasoning for not liking the new identity-oriented status.

So, we've kept it possible, although a bit less obvious, to do these account-oriented things, but in a somewhat identity-oriented manner. We have a system of "saved statuses," accessible from "New..." that allows you to create an "at a frat party" status that happens to lie, and tell your parents "at the library." Instead of setting two different statuses, you set one status that contains both these messages in it. Next time you have to "study," you can reuse it. Additionally, Sadrul's "mystatusbox" plugin can add status boxes for all your accounts, but generally, I think the best way to keep two identities separate is just to run Pidgin twice.

Of course, there are some times where it's important to know what protocol you are using, due to the differing capabilities of the protocols supported by Pidgin. We've kept the protocol icons in Pidgin, but downgraded them to secondary elements. When you know you need, for example, an AIM account to send a file to, you'll always want to find the person first, and then check the protocol. I can't imagine a situation where someone would want to find the protocol first, and then choose a person randomly from that to send a file to.

So, while some people with dual identities might be turned off by some of the changes between 1.5.0 and 2.0.0, I'm betting that most people are indeed one person, and will appreciate how much easier Pidgin makes multi-protocol instant messaging.