IMPP Agents:

Interactive, Autonomous Presence and Instant Messaging Applications

 

By Thomas J. Clancy

Copyright © 2001, Personity, Inc.

All Rights Reserved

 

Introduction

 

While the title may spark in the imagination netherwordly images of small demons (imps) in league with the devil doing his dastardly bidding on earth by destroying all that is good and holy (of course had the devil an instant messaging and presence client and the technical wherewithal to create IMPP Agents, we might all be caught in terrified prostration and prayer for the preservation of our very souls as the world is plundered into darkness), I assure you that there is no need for fear.  IMPP Agents are simply autonomous programs that run on some remote machine; programs to which you can subscribe, as you would to a friend, and with which you can interact for the purposes of entertainment, information retrieval, remote resource monitoring, or any number of other applications that you might imagine.

 

This paper discusses IMPP Agents in general terms, cites examples of such technologies in other systems, and describes how they fit in with Personity, Inc’s. instant messaging and presence server architecture.  It also makes the case for creating a simple API and framework for developing Agents, and discusses possible applications of IMPP Agents such as those mentioned above (e.g. entertainment and resource monitoring).

 

What are IMPP Agents and How do They Work?

 

Of course IMPP Agents are merely a figment of my imagination, and while some work has been done regarding this sort of technology, namely something called ActiveAgents[1], nothing like this has yet been created for Personity.  So, with this in mind, this document discusses my ideas for IMPP Agents and how we might create the framework for building them should these ideas prove to be viable and useful.

 

IMPP Agents, or simply agents, act like an instant messaging client.  But instead of a human on the end where the agent is, the agent stands alone as a somewhat intelligent piece of software that listens for requests made of it in the form of instant messages and of course it responds in instant messages in return.

 

An IMPP Agent works in the same way that an Instant Messaging client works.  It sits and waits for a message by someone (or perhaps some other Agent) who is interested in conversing with it, and monitors the presence of those to whom it has subscribed.  When it receives an appropriate message it responds in some known way.  For example, there could be an IMPP Agent that presents a questionnaire and collects the anonymous results from those who wish to fill it out, placing these results in some local data store for someone to view at a later time.

 

In this scenario you might, using some sort of instant messaging software such as Personity, subscribe to the questionnaire agent and initiate an instant message.  When the questionnaire agent receives your instant message it responds by sending you the instructions and the first question.  All you need do from that point on is to enter the number or letter of one of the choices and press the enter key.  The agent would then collect your answer and present you with the next question.  When finished the agent might thank you and end the chat session, storing your answers.

 

Given the current technology, an agent like this could easily be created.  All you would need is the standard chat screen interface that all instant messaging software contains by default.  The questions would be presented as text and when you responded by typing in an answer the agent would interpret that answer.  Of course if you typed in nonsense, the agent would simply send back that it didn’t understand your answer and perhaps it might restate the question.

 

What are IMPP Agents Good For?

 

The ideas presented in this section range from the simple, easy sort of application to the way out there sorts of things such as artificial neural networks.  Please note that I might not have been in my right mind when I thought of these, but nonetheless, no matter how mundane or no matter how far fetched, I present them here in the hopes that some of this can be used to strengthen my arguments concerning my overall idea.

 

The scenario above might seem trite and perhaps not worth the time and effort it takes to create, especially given the current technologies and the lack of scripting or at the very least a useable, friendly API and framework.  But imagine a company or a number of companies that want to perform market research by sending out questionnaires concerning their products or the kinds of products they want to market, and imagine that they are very excited at the possibility of potentially reaching the millions of people who use, every day, instant messaging software, especially now that such technology is available not only on PCs, but all kinds of wireless devices such as PDAs, WAP-enabled cell phones, etc.  Such companies might be willing to pay some serious money for this kind of technology.

 

Other than questionnaires what else might these agents be good for?  Because of the robustness of the propagation of presence information and the quick and efficient delivery of instant messages, especially within the Personity environment, all kinds of applications are possible.

 

Take entertainment, for example.  You could, using presence and instant messaging technology, play chess against an IMPP Agent, or perhaps against another user.  Or perhaps playing a nice game of tic-tac-toe might prove to be a good way to ease the stress of your everyday routine. 

 

What about a remote monitoring, instant alert system for DBAs or other systems management people that maintain large computer systems.  An IMPP Agent could be programmed to monitor system resources of a large system and send you a message should any number of critical situations arise.  Because of the propagation of presence, such an agent would know the best way to get in touch with you.  For example, if you’re at home in the evening surfing the web and, say, one of the hard drives of one of your servers is getting severely low on space, the remote monitoring agent could send you an IM telling you this.  If you’re not available, then it could find out who’s next in line to contact and send him or her a message in whatever way that person is available.

 

Some other ideas include peer-to-peer networking where two or more people could share documents or other kinds of files.  You could create a personal FTP agent that runs on your home machine and allows you to grab files from or save files to your home network.  Of course it would be fairly secure because it would only allow you to connect to it.  You might have a personal agent that shares your daily schedule with those who are interested in knowing your whereabouts.  You could even have an IMPP Agent that helped to coordinate the schedules of everyone in an office environment, or perhaps managed project plans by updating project status and schedules and propagating that information to those who are affected—kinda like a poor person’s Microsoft Project.

 

You could even set up a massively distributed system like the SETI@home project where agents would sit running in the background, crunching numbers and sending the results back to a central agent that would collect the results and farm out more data to idle agents.  Here you would have agents chatting with agents.  The presence information shared between worker agents and distributor agents could be in the form of  states.  One state could say of the worker agent I’m here and ready, another state would indicate that it’s busy chomping away at data.  A third state would be an away state meaning that the computer on which the worker agent was running is down and of course the distributing agent wouldn’t bother sending data to those worker agents that are down.

 

Along with the idea of massively distributed processing could be the formation and experimentation of artificial neural networks and experts system.  With presence indicating availability and instant messaging used for passing information between nodes, you could model a neural network across many machines.  From these neural networks, artificial intelligence or expert systems could be created.

 

Another possible realm would be that of simulations where parallel computing systems emulated with cheap hardware and presence and instant messaging software could be used to help build these kinds of processor intensive applications.  You could model weather systems of fluid dynamics simulations or even traffic simulations.

 

Obvious Limitations of Current IMPP Technology

 

While you can certainly program an IMPP Agent to play chess given the current instant messaging chat interface, only the die hard champion chess players might care to sit and type in moves using standard chess notation.  For the rest of us, however, we might like to actually see a board and move our chess pieces with a mouse.

 

Obviously, then, the main limitation of IMPP technology is the chat interface.  It’s perfect for sending quick text messages between two people, or a number of people in a chat room.  And you can even send small pictures, sound clips or other forms of multi-media.  But that’s as far as most will let you go.  There is no way to change the behavior and the look and feel of the instant message chat screen.

 

To overcome this particular limitation, a useful IMPP Agent would need to send to your instant messaging application instructions for building a user interface in such a way that you could intelligently converse with it.  In the chess example, it would send instructions that told your instant messaging application how to build a chess board, draw the chess pieces and respond to the moves you make using the mouse.  Of course you’d have to have an instant messaging application that could understand the instructions that an IMPP Agent would provide for building the appropriate interface. 

 

Another major limitation is the lack of availability of simple APIs and frameworks for building presence and instant messaging applications.  The Personity servers, which are small and efficient, have already been created and communicate using a well documented protocol.  The clients that were built to use the Presence services were each constructed from a complex C++ library.  In order to foster the creation of IMPP Agents, simpler APIs and frameworks need to be available for the myriad languages in which one might wish to create these agents.  For example, it seems completely reasonable to have APIs for Java, Perl, Visual Basic, C#, server-side Javascript, Smalltalk and perhaps even PHP for web applications. 

 

The last major limitation is the main user interface itself.  While you can search for someone to subscribe to using their email address, how do you find out what kinds of publicly available IMPP Agents are out there, and how do you categorize them?  Also, if you want to create an agent such as the questionnaire agent discussed above and get it to as many people as possible, how would you do this?  One idea is that of the Agency.  An agency houses all kinds of agents to which you might want to subscribe.  The agency publishes a catalog of the agents within it describing what each is.  Each domain could contain its own agency and each agency could be published to some central location and distributed so that any user of a Personity client could browse or search for agents via the various agencies.

The Personity Agent

 

This section discusses (or will discuss) some of the particulars for creating Personity Agents.

A Survey of Competing Ideas

 

As mentioned above, a venture called ActiveAgent has created a technology that allows someone to create agents that can be used by the popular instant messaging software, or so it would appear from their web site.  While this is nice, the concept is limited to the simple chat interface that is provided by the instant messaging application.



[1] Visit www.activeagent.com for an interesting look at how some are creating this technology to work with existing, popular IM applications.  Note that the ideas presented here were imagined before I was aware of ActiveAgent, and any similarities are probably a coincidence.