Why buddy lists in toolbars #fail
Why don't they just show the buddy list in a content box on each page? There is a reason. It is hardly ever accurate. The web surfing paradigm of clicking from page to page is profoundly contrary to the principles of chat. Every time people click from here to there within Facebook, the browser reconnects to the server over and over.
By some heuristics servers guess whether a user is still watching the page, is thus reachable by the builtin messaging feature, or not. By consequence, there is a continous flux of login and logout events being generated by best guess. The buddy list has people coming in and out all the time, even if they are actually using Facebook throughout.
And even then, you can never be sure, when you click on someone in the buddy list, that you will actually be able to talk, as the logout event is sent to you only after a certain time period. So, while you type your greeting message, the person may already be gone.
So, given the restriction that messaging is intended to be just a side feature of a regular website, you can't have an accurate buddy list, so you might as well hide it away in a toolbar. But, does such an unreliable means of communication make so much sense? Wouldn't it be better to have all of your Facebook contacts in a real messaging application?
An idea for a solution would be to have the chat interface in an HTML frame outside of the actual surfing activity, then use modern deep linking techniques to continously update the location bar of the web browser as you surf in the surfing frame. This would also be a much better excuse for Facebook to wrap a frame around external pages - they would actually serve a useful purpose, keeping you logged into Facebook chat, instead of just being annoying and invading privacy.
Update: Nevermind the technological implications, the dirty webchat style deployed by Facebook is now the largest chat system on the planet.