Integrated chat

One critical component of an effective Workspace is integrated chat. The user should not need to fuss with downloading an IM client, and real-time communications should be seamless. Some aggregated notes follow.

Module: Chatroom
http://www.drupal.org/project/chatroom

Issue: Work with the OG (groups) paradigm
http://drupal.org/node/71324

Ideally, it works like Gmail Chat, only with the ability to have group chat — so I can see who in the group is online, and I click to chat with one or many of them, and the chat box persists as I navigate around the rest of the site doing my thing.

The above would be ideal, but having a dedicated always-active chat room for the group might be a strong place to start. For example, perhaps a chat room is automatically created when a new group is created and given the same name as the group. (With chatroom.module, there is the concept of “chats” below “chatrooms”, so maybe a “Default” chat is created?) Maybe it can be “popped out” to a new window so I can still move around my workspace while chatting. As a themer, I should be able to place a link to that chat where I want it, so people can easily click to launch the group’s chat.

Here are some possible uber-tasks for the ideal scenario:

  1. Allow for easy spawning of one-to-one chats. Integrate with “who’s online” functionality (see Drupal core’s block of the same name) — may require shoring up this functionality to real presence awareness, as reliable as Gmail’s is. Should allow for ability to click username, which brings up chat window (anchored to bottom right as in Gmail). Chat box should pop up on receiving end and discussion ensues.
  2. Of course, the above requires a method for persisting the layer across pages within Drupal, which may require further AJAX-ifying other aspects of Drupal to allow for this. Requires research.
  3. Integrate the above with OG, i.e. make an OG-specific block with group members, clicking them brings up anchored chat dialogue (as in 1). This way, if I’m in a group, and other group members are online, I can easily chat w/ them.
  4. Let the user control whether or not others can initiate chats with them. Have a setting like “Receive chats”, on by default.
  5. Group chat. Let me initiate a chat, and invite others to it from the dialogue. The new receiving end would see the chat dialogue pop up with all participants shown.
  6. Log conversations. Create a new node with the chat log nicely formatted (see Gmail’s “Chats” folder). Should only be accessible to chat’s participants — that gets tricky, and depends on thinking of Drupal and nodes in a different way, i.e. some nodes are my very own, like the e-mail concept.

I’ll leave it there for now, and will flesh it out as we go.