I'll Show You My Agent If...

It's a bright gorgeously beautiful morning here in Silicon Valley. The sun is shining after a week of gulley-washing rainstorms.

The power is back on. In more ways than one! Yeah.

I've been reading Jerry Michalski's (spiff@panix.com) reports from late 1994 on HTML and online publishing. These pieces are making a lot more sense to me, now that I'm a web site manager and HTML writer. After my thoughts gel, I'll have more to say on HTML standardization and Netscape and the rest of the web browsers.

Yesterday I did something outrageous and probably unprecedented to promote my new website. I'll let you know if it works out. It would spoil the surprise if I said what I did in this email. But those of you who think of me as an "out there" guy won't be disappointed! ;->

Anyway, today, we loop back around to a question I asked on January 2: What is an agent? I got lots of great mail on this subject. My only regret is that there isn't enough bandwidth on the email channel to carry *all* the comments. But the website comes to the rescue! The full text of all these replies (and others) will appear on the DaveNet board at UserLand On-Line, temporarily at the URL at the bottom of this email.

Agents are stand alone programs that can query you to find out what you want or expect, cruise the net to look for that something, and not just return it to you, but format it and present it in such a way that it's useful. It's got to work in an existing environment, not some custom, academic test case.

An agent is a program that performs tasks for the user without the user's direct manipulation. The closest we get on the Mac as far as I can think is Super Boomerang, because it watches what you do and makes it easier for you to do the same things again later, all without you changing your work habits.

From what I've heard, I don't think your scripts are agents. The reason is that they act purely predictably according to preset rules. They may be flexible enough to handle different email messages or subject lines or whatever, but they're still utterly predictable.

One feature of agents is that by using an agent one can accomplish a task by specifying a goal or outcome where you don't have the specific details to execute it yourself (e.g. knowledge of timezones of the recepients). My alpha pager service as well as FedEx offer a specified time-of-delivery option (sometimes just to day-of-the-week resolution, sometimes to the minute). These are instances of crude but useful agents.

I coined the term "agent oriented programming" in 1989. I meant something specific by it, a specific specialization of object oriented programming in which objects have a particular kind of state (called mental state) and communicate in specialized speech protocols. In the past two years I've spent much time understanding what different people in academia and industry mean by the term agent. I'm writing a piece on it. If you think it'll be of interest, I'm happy to share it with your readership.

I do consider you (Dave) to be in the business of selling tools to create agents.

One pragmatic approach to agents is indeed the scripts (or macros) you are using. They are bits of intelligence which you add to a system to act on your behalf. The problem, as you discovered, is that they are idiot savants who can do a task very well but cannot react to variations and surprises. More to the point, they might not have the concepts necessary to detect failures or the ability to report the results.

Systems built on shell scripts work fine until they blow out and drop a message on the floor. In an open loop system, this goes undetected. Compositing these scripts just multiplies the reliability which, being less than 1.00, increases the unreliability dramatically.

Scripts also tend to become more and more arcane until the day you try to make one more tweak...

While on the subject, I should confess to VisiCalc's keystroke macros. I knew they were wrong and should have been in a language that expressed the operations not the typing, but I didn't have the space to do it right on the Apple ][. Alas, the expedient decision was copied into other spreadsheet languages. Again, the value of automation is high enough that people just put up with it. Just like MIT secretaries thinking Teco programming was normal.

Scripts are attractive because they are relatively simple to create and maintain. They also typically allow you to use entire applications as building blocks. This provides real power and leverage. But the price you pay is in reliability. But that's a small price to pay compared to not being able to automate the task at all. Or, at least, not without lots of additional effort. And, even then, even production apps written in C (or whatever your favorite language is) are not 100% reliable, especially in the context of a complex system.

Pragmatically, yes, write scripts and I'd call them agents. But don't be surprised at hiccups. And appreciate them when they do work.

An agent is a trusted piece of software that performs a task on your behalf. It operates independently to achieve goals you set for it. It is free to operate as it sees fit, within the guidelines you establish, and is given authority over resources to perform the task given it. The agent is expected to the do the best job it can to complete the task and advise you if it couldn't.

C can be used to write agents. But poorly compared to a language designed for writing agents. Agent scripting languages can contain verbs that would take many screenfuls of C code to implement. Plus agent scripting lanaguages attempt to be secure, they contain no open ended concepts that allow them to be used to subvert the host system (at least in theory.) Whereas C for example will let you drop into the gears of the machine whenever you choose and wreak havoc if you wish.

Are agents background processes? Only if they are running on your machine. True agent meeting places will most likely run agents as "foreground" tasks since that's all that machine does, run agents.

Are your scripts agents? The one's you've described so far aren't what I would call agents.

---

Thanks Marc, Adam, Harry, Yoav, Bob and Scotty!

Dave Winer

PS: Bob Levitus, the great and famous Dr. Macintosh, and author of System 7.5 for Dummies asks "Is this coincidence, or what? My next book will be 'Webmaster Macintosh: How to Build and Maintain your Own WEB Server.'" Bob, I guess it's what's happening! Everyone's getting webbed. And *thank you* for not calling your book Webmastering for Dummies!

PPS: I started a new board at the DaveNet site -- The Internet Scripting Group. Today I hope to figure out how to get downloads working so people can download the scripts that go with the new amusing rants. After that, the next step is to upload the "autoweb" suite in its first crude (but useful!) form. I hope at least a few other people will try managing their web sites with this set of scripts. It's a process!