D'Agents 2.0 (Beta Release)
===========================

  A mobile-agent system based around Tcl 7.5 and Tk 4.1.  D'Agents 2.0 is the 
  second public release of the D'Agents system.  The first release, 
  D'Agents 1.1, was also known as Agent Tcl.


Contact
=======

  Feedback, bug reports, questions, etc., should be directed to

  Bob Gray
  Thayer School of Engineering, Dartmouth College
  8000 Cummings Hall
  Hanover, New Hampshire 03755 

  E-mail: robert.s.gray@dartmouth.edu

  My turnaround time is (usually) excellent.


What is D'Agents 2.0?
=====================

  A mobile agent is an autonomous program that can migrate UNDER ITS OWN 
  CONTROL from machine to machine in a heterogeneous network.  The agent
  interacts with other agents at each network site in other to accomplish its
  given task.  D'Agents 2.0 is a transportable agent system in which the agents 
  are written in Tcl 7.5 and Tk 4.1.  D'Agents is under continuous use at
  Dartmouth in a range of information-retrieval and information-management
  applications.


What's new in D'Agents 2.0?
===========================

  D'Agents 2.0 has much better performance than D'Agents 1.1 and has PGP-based
  security mechanisms for protecting a machine from malicious agents.  In
  addition, D'Agents 2.0 actually allows agents to be written in multiple
  languages, namely, Tcl, Java, Python and Scheme.  Although only the Tcl
  module is ready for public consumption, the Java and Python modules are
  performing well in internal tests, and will be released over the course
  of the next months (i.e., April, May or June, 1998).  The Scheme module is 
  only partially implemented and will be available no sooner than late summer
  (i.e., August 1998 or later).


How do I get D'Agents 2.0?
==========================

  D'Agents 2.0 is available through our web site:

    http://www.cs.dartmouth.edu/~agent


Components of D'Agents 2.0
==========================

  - A server that sits at each network site to which agents can be sent.  
    The server provides a namespace for agents, accepts, authenticates and
    executes incoming agents, and handles agent-to-agent communication.

  - Extended Tcl and Tk interpreters that provide agent-related commands


Features of D'Agents 2.0
========================

  - Agents are written in standard Tcl 7.5 and Tk 4.1.

  - Safe Tcl, access-control lists and public-key cryptography (PGP) are used
    to protect a machine from malicious agents.

  - An agent migrates to a new machine with the agent_jump instruction.
    agent_jump transparently captures all of the agent's current state and
    sends the state to the new machine.  The agent is restored on the new
    machine and continues execution at the statement immediately after the 
    agent_jump.

  - An agent can clone itself with the agent_fork command and can create
    child agents with the agent_submit command.

  - Agents communicate by sending messages and event notifications to each
    other or by establishing direct TCP/IP connections for extended
    interaction.

  - Agents can be written in an event-driven style and can display GUI
    interfaces on their home machine or on remote machines using the normal
    features of Tk (event handlers can be associated with incoming
    communication from other agents).


Main deficiency
===============

  D'Agents is far from complete.  The main deficiency at this time is the
  lack of fault-tolerance mechanisms.  For example, if a machine fails, all
  agents that were executing on that machine are lost.  


Installation notes
==================

  - D'Agents 2.0 runs on standard Unix platforms.  It is known to compile on
    the following platforms using the GNU gcc compiler (and the SGI and Sun
    Workshop CC compilers on the Irix and Solaris machines respectively).
   
    1. Linux 2.0.30
    2. AIX 3.2.5
    3. Irix 6.2
    4. Digital OSF1 V4.0
    5. FreeBsd 2.1
    6. Solaris 2.5.1
 
    It should be easily portable to any Unix platform that provides TCP/IP,
    Berkeley sockets, and reliable signal handling.

  - Installation instructions and other documentation can be found in the "doc" 
    subdirectory.  Please refer to the file "doc/README" for details.

  - D'Agents 2.0 is a *beta* release.  It could install easily or it could 
    require quite a bit of time and effort.  Please be prepared either way.
 
  - You are not alone however.  If you have any problems compiling or using 
    the system, please contact me.  I will do everything I can to help.  My
    e-mail address is

      robert.s.gray@dartmouth.edu

    In addition, there are two mailing lists to which you can subscribe. I will
    announce new software, new documentation, bug fixes and bug reports on the 
    "dagents-announce" mailing list.  In addition, anyone who is interested can
    discuss D'Agents and other mobile-agent systems on the "dagents" mailing 
    list.  To subscribe to one of these mailing lists, send an e-mail message to

      majordomo@dartmouth.edu

    The body of the e-mail message should contain either the command

      subscribe dagents-announce

    or the command

      subscribe dagents

    depending on whether you are subscribing to the "dagents-announce" list or
    the "dagents" list.  If you want to subscribe to both lists, you must send
    two separate e-mail messages.

    In addition, our web site, http://www.cs.dartmouth.edu/~agent, will always
    have the most recent information about D'Agents.

  - Even if you have no problems or worked through them yourself, I would
    appreciate hearing how it went, what changes you had to make, what you
    like, what you hate, etc.

  - NOTE that you do NOT need to obtain and install Tcl 7.5 and Tk 4.1 
    separately.  In fact the system will not even work with standard Tcl 
    and Tk.  Modified (but fully compatible) versions of Tcl 7.5 and Tk 4.1
    are included in the source code distribution.


Some notes about the D'Agents 2.0 source code
=============================================

  - We are separating the C++ classes associated with D'Agents into more,
    better organized files.  This process is not complete in this release.

  - Almost all "char *" variables that are used for strings are being replaced
    with variables of type DyanmicString.  This process is not complete in
    this release.

  - Although the D'Agents core is generally thread-safe, some of the support
    classes, such as DynamicString, AgentLocation, etc., are not yet thread-
    safe.  This will not cause any problems in this release since Tcl programs 
    only have a single thread.  We are currently working to make the core 
    completely thread-safe in preparation for public release of the Python and 
    Java modules.

  - D'Agents relies on the SIGPROF, SIGALRM, and SIGIO interrupts so don't
    redirect them if you write a Tcl extension for use with D'Agents.
    If you want a SIGIO interrupt for a particulr fd, use the SigioHandler
    class that is found in the "platform" subdirectory.  Similarly, if you
    want a SIGALRM or SIGPROF, use the Timers class that is also found in
    the "platform" subdirectory.
