MadKit - Version History
V4.1.2 "Arpeggios"
New features
- A new Designer agent, which allows the user to easily develop new programs in MadKit. Very handy to start an application, test agents, etc. (unfortunately this feature does not work properly on Mac OS 10.3, due to a gui problem. We have not tried in Tiger..)
- New interface for turtlekit....
- SEdit is now able to work either as a component of MadKit or as a standalone interface.
- There is now a launcher for Mac OS
Bug correction
- Corrected several minor bugs
- Corrected missing links in the documentation
V4.0 a7 "Bubbles"
New features
- A new Editor agent, the JSynEditor has been developped specially for MadKit
by a group of students of the University of Montpellier. This editor is component
based and has all the features of the previous EditorAgent with added capabilities:
syntax coloring, full search, replace, undo/redo, java browsing facilities,
templates, etc...
- The DocBrowser gots its information from the PluginAgent which are loaded
at run time.
V4.0 a6 "True Color"
All agents of version 3.1.xx should work without any problem: you may just
have to change the 'import' statements
in the header of your java files. See the file 'index.html' and follow the links.
New features
- The PluginManager is an installer specifically built for MadKit which uses
agents to install and upgrade the MadKit platform.
- It is possible to build agents and recompile a Java project without quitting
MadKit, due to the integration of ant to MadKit. A very important and often
asked feature. Double click on an 'build.xml' file in the plugin directory,
and all agents are automatically recompiled and reloaded.
- Integration of all the Warbot projects of the LIRMM 2004 Warbot tournament,
with their sources and documentation (in french).
- The MadKit applet does work now, and is much better than before...
- There is a DocBrowser agent, inside MadKit which is used to browse through
all the manuals of MadKit. You may develop your own manual and add it to the
DocBrowser.
V4.0 pre1 "Shade" (25/11/2003)
MadKit is back in a refunded software architecture and a new desktop look.
The MadKit distribution is now more modular and it is very easy to add new modules
(called plugins) at will.
This is still a pre-release, which means that the documentation needs a major
update, and that some features which worked in the previous version still don't
work (see below).
All agents of version 3.1.xx should work without any problem: you may just
have to change the 'import' statements
in the header of your java files. See the file 'index.html' and follow the links.
New feature
- MadKit 4.0 comes with a new software architecture which allows for different
usages.
You may use the part of MadKit that you really need.
- The Desktop has been totally rewritten. It is now totally modifiable to
suit
your needs. You may even change the background color or image...
- There is a new Explorer agent which allows for the launching of agents and
execution
of non agent files.
- The communicator is now programmable. It is possible to ask it to connect
to another kernel by sending it a message.
- There is also a new NetComm agent which allows for new features
- The Share plugin allows different user to share document over a MadKit network.
You may use it to share documents (agents scripts, etc..)
Features not reimplemented yet
- jEdit does not work with this release, but it should work quite soon.
- the MadKit Applet does not work.
- the AgentJSP has not been updated to work with this version.
V3.1b5 - "Deadend" (10/03/2003)
This is to be the last 3.xx version of MadKit. Next version will be the new
4.x version which comes with a complete remodelling of the software architecture.
Bug correction
- Corrected the very annoying bug which appeared on the Desktop with screen
resolution equals or below 1024x768. I hope this won't happen anymore.
- The MemoryMonitor, which was the most important cause of this bug is not
placed in the dock of the software at launch time. It is now available from
a toolbar in the desktop.ini file.
New features
- It is now possible to change the look and feel of MadKit. MadKit comes now
with SkinLF, a skin manager with which you may change the
look of MadKit. See www.L2FProd.com/software/skinlf/index.html,
the home of 'Skinlf' for more details about its use and how to get available
themepacks. It comes with several themepacks. You may add you own by placing
your theme pack in the libs/skins directory and changing the tag
<skin
name="themepack.zip" />
to your preferred themepack in
the desktop.ini
file. If you don't want to use skins, just comment
out this line.
- It is possible to launch a configuration of several agent by only clicking
on a .cfg file in the desktop. To get the structure of a configuration file,
see the content of the file
testconfig.cfg
file which create
and launch several different agents.
V3.1b4 - "Banshee" (15/01/2003)
New features
- There is now a flag which may be used to make sure that messages between
agents take place only between two agents of the same group. The flag is:
--no-interGroup-Messages
, and should be set at MadKit startup
(in a desktop.bat of .sh for example). For the moment this is just an attempt,
and by default, this flag is not set. But, in the future, this flag will be
set by default, and then be compliant with AGR... We have to check first that
all our software work with this flag set! We know that this could be annoying
for some of the users, but this is an important security issue...
- It is now possible to load Script files directly, using the "Open"
button, and the File>Open Script File menu item.
- System properties are shown in the "About" dialog. Very handy
to know which JVM is actually running...
V3.1b3 - "Red Cloud 2" (8/12/2002)
Note: Surprisingly, this version has not been publicly released...
New features
Many Desktop new features...
- The Desktop has a new "Dockpane" which displays agents in a very
pretty way... (tell Jacques (ferber@madkit.org)
what you think of it). You may install agents when the Desktop is launched
using the
<dockpane> ... </dockpane>
in the desktop.ini
file. See this file to understand how to add your own agents. It is also possible
to add agents in the dockpane directly from the menu, using the "launch
in dockpane" feature from the display
menu. This feature
may evolve very soon: the explorer and the output will be considered as agents
themselves.
- It is possible to set the size of the Desktop in the
desktop.ini
file with the displaysize
tag. (for the moment this feature is
commented out. But you may change it at will.
- The property box is now an agent. When it receives an ActMessage with a
direct reference to an agent, it displays the properties of this agent.
- The agents' toolbar is now a tabbed pane. Then you may add your own agents...
New agents have been installed in the Desktop using this feature.
- SEdit formalisms and SEdit files may be launched directly from toolbars
of the Desktop.
Other new features are:
- Two new examples of agents have been included: a
GPongAgent
agent which plays ping pong with another agent of the same kind (test it on
two different machines, it's fun..), and a distributed games to play TicTacToe
or FourInARow (Puissance4 in French) with another
partner (test it on two different machines, too. "it's more fun to compete"
;-) ).
- Some demos of Warbot done by french DEA (like MSc) students. have been added
to this release... For the moment, the sources have not been added, but keep
in touch, there will be more about this in future releases...
Corrected bugs and simple modifications
- Corrected little bugs in the Kernel.
- Corrected a bug in the use of ClassLoader. It is now possible to use the
"extens" directory as a real extension directory and to create new
Java Warbot agents (unfortunately this was impossible in the 3.1b2 release).
It is also possible to launch ALL java agents (and even the newly designed
and compiled agents) from BeanShell and Python.. There was a bug in the previous
releases that prevented it.
- Corrected a bug in the GroupObserver (it is possible to select a group to
observe as in previous 3.1 versions.
- Slightly modified the MemoryMonitorAgent to have a stop and a start button.
V3.1b2 - "Anaïs" (13/07/2002)
New features
- The SiteAgent may receive messages to display information... Upon reception
of a StringMessage with the header $url, it launches a WebBrowser
and sends it the URL; when receiving a StringMessage with the header $message,
the remaining part is shown in a pager (see below).
- The RemoteEval.bsh script now requires a password to enter the
group. By default the passwd is 'madkit'. You may change it for your
own purpose. A better password mechanism, using encryption protocols, will
be proposed soon. When an agent needs to enter the group (called 'bsheval-hostname'
where hostname is the name of the host site, it has to give a password. See
the code in the script).
- A little agent, called a Pager, is used to display messages sent
to a user. When receiving a message with header $display, the pager
displays the remaining part of the string directly in its window.
- The WebBrowserAgent now accepts StringMessages with the commande
: $goto followed by an URL address. It will accept other commands
in the near future (receive a whole .html page, go backward or forward, home,
etc..).
- A new scripted agent, ServerWelcome, (filename: ServerWelcome.bsh)
sends a "welcome message" to a remote SiteAgent which is connecting.
As a result, this opens a Pager in the connecting kernel. Very, very nice....
The remoteconfig.cfg configuration file has been updated to take
this agent into account.
- A new scripted agent, LogListener.bsh, is used to log out all information
that is distributed within a group. It has been designed to work as a companion
of the OutputRouter agent.
Corrected bugs and simple modifications
- Corrected small bugs in the getExistingGroups and getExistingRoles
methods of AbstractAgent..
- Changed the EditorAgent (which actually should be called NotePadAgent, this
has to be done..): it shows communities, groups, and roles. There is also
a new 'passwd' field which may be used for groups which require a
passwd to accept agents.
Remarks (from JF)
- It is clear that more and more agents will be done in scripting language.
My preference goes to BeanShell, because it has a real Java syntax. But I
assume that others would prefer Python, Scheme or Jess. This is so easy to
develop and to test without leaving MadKit. I hope we will be able to do the
same in Java one day...
- StringMessage tends to get the syntax $<command> <argument>
where $<command> is simply a word, like $request,
$display, $goto, etc.. and <argument> is
the rest of the String... Is it a a way to close the gap between MadKit and
FIPA, by using some kind of structured message?
V3.1b1 - "Suntan" (07/072002)
New features
- The first 3.xx version of MadKit to be public... At last, MadKit is public
again!!
- A simple server.bat (or server.sh) launches a "server" like version
of MadKit. You may control this server from outside by sending beanshell commands
to the agent playing the 'eval' role of the group 'bsheval-<kernel>'.
Have fun.. This is just the beginning of a set of system agents making remote
access to MadKit very easy. We also have to secure it ;-)
- The OutputRouter agent, which is part of the "server"
bundle, captures the standard output and transforms the strings into StringMessages
sent to the listener role.
Corrected bugs and simple modifications
- Corrected small bugs in the Turtle, in the SiteAgent, etc...
V3.1a8 - "Swimming pool" (06/2002)
New features
- Nothing really new, except one thing: all files are now GPL or LGPL. Thus,
MadKit is (at last) really open source!! I hope this will bring a lot
of users and a lot of developpers. There are so many things one can develop
with MadKit...
- In MadKit everything is GPL except madkit.jar and communicator.jar
which are LGPL. This means that MadKit may be used in commercial applications
(but you have too build your own interfaces).
- A new icon on the desktop to launch the communicator. Its "lovely"...
- New agents: OutputRerouter, to send all standards output to "listener"
agents, and a new script agent in BeanShell (called RemoteEval) to administrate
a remote kernel (BeanShell is really great!!). Thus, it is now possible to
administrate remote kernels in MadKit!! It will be necessary to introduce
some security protections, but this will be done in next releases. I (JF)
also started a RemoteEval in Python. It is clear that it is possible to make
one in any scripting language.
- I bet this is the last "private" alpha version. Next release will
be on sourceforge!! Yeah man...
Corrected bugs and simple modifications
- Modified the location of files relative to the "communicator".
The communicator is not in agents any more. It has its own starting
point.
- All images (except SEdit images) are now located in only one jar: images.jar.
All sources have been modified (and debugged) accordingly.
- Script agents may now be launched in the .cfg files
- Corrected a simple bug in SiteAgent which supposed that MadKit was always
in graphic mode.
V3.1a7 - "Shower" (05/2002)
New features
- Re-integration of SEdit into MadKit.
- The desktop now works as a SEdit launcher. When clicking on SEdit files
(extension .sed), a SEdit agent is launched in the Desktop with all its
information.
- Formalism have a new extension (.fml). When clicking on such file, a SEdit
agent is launched.
- OrgGrapher is back and has been updated to take into account the concept
of communities. Well the display is still rather messy, but it is cute
and useful when one wants to see what happens in Organization. OrgGrapher
could be improved a lot, but still, it is interesting.
- WarBot is back with its old display. There is still much work to
do to arrange the whole thing and make it a useful and enjoyable test framework,
but you may develop your own "brains" from now on...
- The "Chat" application provided by J.-G. Bertrand and O.
Mohsine, has been included with the release... Use it and test it.
- Documentation update. The documentation is near finished.. SEdit should
be updated.
Corrected bugs and simple modifications
- Hooks sent bad community information on remote synchronizations. This has
been fixed.
- In the Marketorg example, Clients now have the client role (and
not the member role) due to some "filters" of the OrgGrapher.
v3.1a5 "Tiger" (05/2002)
New features
- The "Chat" application provided by J.-G. Bertrand and O. Mohsine,
has been included with the release... Use it and test it.
- Documentation update. The documentation is near finished..
Bug fixes
- Correction of little bugs in the kernel and in the Turtle kit which is much
easier to use
- I Hope (JF) this one will be the last alpha release!! I would like to see
MadKit online again (at last!!)
In Preparation
- A share application will be available soon...
- A better communicator is in preparation
- We are working to make MadKit FIPA compliant. This would mean that some
MadKit agents could work hand in hand with FIPA agents located in FIPA OS
or Jade. Keep in touch,...
v3.1a4 "Nightingale" - (04/2002)
New features
- A very small version which is only provided to solve the pb with the JDK
1.4.
- The Install Anywhere may use the jdk 1.4, thus, if you are under a Win OS,
you do not need to get the package with the JVM inside and you may use your
own JVM. Much, much better.
- Update of some part of the development guide, with the beginning of a tutorial
of how to program with MadKit..
- Still a lot to do with the documentation... (the user doc is still old...
unfortunately..)
- SEdit has been suppressed from the release. The gbox is only accessible
from the command line. Please, use the new "Madkit desktop" instead.
Bug fixes
One of the last 'alpha' version before the beta version... Some little bugs
have been corrected.
v 3.1a3 "Monster" - 16/04/2002
New features
- A new scripting language has been introduced, BeanShell, which a small
Java interpreter. It uses the Java syntax but variables are weakly typed (types
are recognized at run time). It is possible to instantiate Java objects, but
not to create classes. If you know Java, then BeanShell is quite handy to
use for describing small agent behavior. See www.beanshell.org
to get information about BeanShell. BeanShell agents are built on exactly
the same basis as Python agent. The embedded BeanShell interpreter is the
one which is distributed with jEdit (I don't know the exact version though).
Because it was in already in the CLASSPATH, it was a good opportunity to add
a new scripting language to MadKit. To get an overview of the syntax, see
- jEdit is a powerful editor written in Java (see www.jedit.org)
which has been integrated to MadKit. jEdit features syntax highlighting, macros
facilities (using BeanShell), and easy extension through plugins. It is possible
to launch jEdit from MadKit, use it as an editor for scripting languages,
create agents on the fly which executes script codes, evaluate Scheme expressions,
etc...
- Script files (i.e. files written in BeanShell, Python, Scheme or Jess) may
be edited by jEdit directly from the desktop (right click on script files).
Bug fixes
- Small editors (notepad) now have a "new" function which clears
the current buffer and reinitiates the editor.
v 3.1a2 "Fools day" - 3/04/2002
New features
- Scheme agents have been updated to the last Kawa release (i.e.: 1.66.98).
Scheme primitives takes the new features of MadKit into account. Caution:
join-group and request-role send warning messages when used with the deprecated
API.
- Jess agents have been updated to the last Jess stable release (i.e.: 6.0).
The license of Jess has slightly been changed... Jess primitives takes the
new features of MadKit into account. Simple limitations: Jess agents may only
create and join "free" groups (groupes libres), in which no authorization
is needed.
- Jess agents now have control buttons to control their behavior. It is thus
possible to stop, reset, restart, etc. Jess agents and edit their code.
- WebBrowserAgent agents are able to browse Web pages. The help system from
the Desktop uses these agents.
- The jess init file is now called madkitlib.clp
- Desktop:
- The toolbar may be parametrized in the desktop.ini file (XML file).
This toolbar contains button to launch agents on the Desktop.
- Directories may be "mounted" in the "Explorer-like"
tree of the desktop (this is very handy when you want to add agents designed
outside the Madkit directory). This mounting operation may be described
in the desktop.ini file.
- Property box uses a separate frame.
- Script files may be edited directly from the tree view with a right
click
v 3.1d8 "Rebirth" - 03/2002
New features
- Integration of the Community concept into MadKit. Communities are
groups of kernels. A community contains many groups. A community is shared
among all kernels which have asked to enter the community and have been accepted
(for the moment kernels that ask to enter a community are always accepted,
but this will be modified in the future). Communities add a new perspective
to Madkit by allowing several kernels to share only some specific groups and
roles. A community is often used as a kind of application.
- It is straightforward to use communities. Just use the classic Madkit primitives
(createGroup, requestRole, leaveGroup, leaveRole) with a new argument which
contains the name of the community. When this argument is not present, the
community "public" is used in place. In the community "public",
all groups are shared among all connected kernels. There are also some primitives
which deal with predicates about communities (isCommunity, getCommunities,
etc..).
- Connection and deconnection of communities is done dynamically.
- All configuration files use XML structures.
- A new "GBox like" GUI for launching agents. It is called "desktop".
It is mainly a complete rewriting of the GBox. New features are: it is now
possible to launch an agent from its script (Python, Scheme, Jess, etc..),
and most class loading are done internally (they do not expect a complete
CLASSPATH at launch time). There is also the possibility to launch an agent
(either Java or scripted) from the toolbar... Very soon, it will be possible
to modify this toolbar... This desktop contains the following features:
- As in the G-Box, the desktop displays the GUI of agents
- Script agents (i.e. Python, Scheme, Jess,..) may be launched from the
tree view with a simple click
- Configuration files may be opened directly from the Open menu/button.
Changes and bug fixes
- Configuration files have a .cfg suffix and possess a XML structure
- It is now possible to make agents impossible to delete by clicking on the
window. In the agent, just add the following method:
public void windowClosing(AWTEvent we){
}
You may now do what you want on the window (as an argument of the we
variable), hide it, ask the user if he/she really want to close it, etc.
Notice: the AWTEvent may either be a windowEvent or an
InternalFrameEvent!!
- All scripts files are now situated in the autoload folder... (which should
be reorganized somehow..)
- So many bug fixes...
v 3.0 "Guava" - 01/2002
One year and a half between this version and the previous one.... But the new
MadKit is even better, with a new Kernel and some features which will help it
to reach new grounds...
New features
- New kernel. The kernel has been simplified, adapted to Java 2 collections
and, above all, contains a new mechanism for synchronizing groups. A great
change which has required a new main number...
- The synchronisation mechanism makes possible "hot" synchronizations,
i.e. synchronization of already created groups.
- New authorization mechanism for entering a group. See the api documentation
for more information about it. Necessitated new primitives: joinGroup, foundGroup
ar now deprecated. There is a new primitive, createGroup. requestRole takes
a new argument and returns a value.
- Integration of Python as a scripting language for developing agents in Madkit.
The jython version of Python is totally integrated with Java and is perfectly
adapted to the design of Madkit agents.
- GroupObserver, a new agent for observing groups (works like a mini explorator)
- OrgGrapher gives a graphical representation using graphs, of the overall
organization of Madkit groups and roles.
- Warbot II is now totally integrated to Madkit (for the moment it uses a
specialized version of SEdit).
v 2.0.1 "Zimbra"- 06/2000
Changes and bug fixes
- The G-Box scripts now use
--single-window by default
- The G-Box has window titles again, and
now keep at least one agent layer.
- Accelerators for G-Box menus.
- The SocketCommunicator was
erroneously built with debug mode on. The
SocketCommunicator will also try up
to five ports if the default port is already
bound.
- The GroupSynchronizer now
automatically synchronizes. This can be change
through the autosynchro property.
- May work with hosts as IP numbers instead
of names, through an additional flag at kernel
construction. G-Box and console launcher can
be configured to start in this mode with the
--ip-numeric flag.
- A bug with broadcast messaging in distributed mode
has been fixed
- The MessageTracer and OrganizationTracer can now write time information in parsed form.
- The EditorAgent can leave a role.
- Xerces XML Parser upgraded to version 1.1.1
v 2.0 "Nemo"- 04/2000
New features
- G-Box
- You can now choose the GUI launch mode: classic (internal frame), as an external
window, or as a full layer. The G-Box still launches
agents with heavyweight GUI (i.e. pure AWT) in
external windows, regardless of the launch mode setting.
- Preliminary print support
- There is a "single window" mode which setup the toolbox, desktop, and property window within a single window. It is not default, but you can activate it with the --single-window flag.
- The G-Box can now dispose automatically agent interfaces at deactivation.
- Changes in the launch scripts: the
CLASSPATH is not hardcoded anymore in the
run-gbox script. Instead, the classpath is built at
launch time by adding every file in the
libs/madkit and libs/support
directories.
- The G-Box now appends a number to the agent name to avoid
confusions (the AgentAddress remains unique, as usual)
- Environment
- The new website is online at: http://www.madkit.org. This
change is revelant to MadKit itself as we're going to
modularize the platform in future versions, so some
agent packs might no longer be included in the base
distribution, but be available as add-ons on the
site. To ease sharing of information and/or code, a web-based database is
online at http://community.madkit.org. You
can use it to search for and download an agent pack,
look for or register your own project, etc... Feel free to use it.
- Please report madkit bugs with: http://bugs.madkit.org
- File organization changes so that extensions or new agent
models can be added to MadKit without having to edit
the launch scripts. Downside is that the
madkit.jar and gbox.jar files are no
longer in the main directory, but moved in
libs/madkit. If you
created custom launch scripts or CLASSPATH, you may
have to update.
The policy for the libs
directory is now:
- libs/madkit: ZIP files or JAR files that are
MadKit-related, such as the kernel, the G-Box archive,
or various agent models libraries.
- libs/support: ZIP files or JAR files for
third-parties libraries, that some MadKit code might
need (Swing, Kawa, ...)
- We added documentation for the included demo or system agents.
The user's guide and tutorial have been reorganized.
- Scheme agents are now in the src/scheme directory
- Agents and libraries
- A new XMLMessage class in madkit.lib.messages
(which uses the Xerces XML parser from the Apache Group) and an XMLPingPong example
- The previously known "logolib" has been greatly improved. It is
now called the TurtleKit library and provides new features, increased
efficiency, a new interface, a new documentation and new demonstration
applications
- A new set of system agents that hooks on the kernel to ease the understanding
and debugging of applications. MessageTracer traces every message transiting
between agent. OrganizationTracer traces every group action requested by an
agent. OrgLister displays the whole organisation (groups, roles and agents) of
the system. These agents can be found in the System Agents pack.
- A new agent EditorAgent in which StringMessages can be edited and sent in
various ways. Much better and really more powerful than the old StringMessage
- The console booter now takes --with-native-lf and --with-java-lf options like the G-Box does (only effective with --graphics enabled)
Changes
- The GraphicShell interface has been slightly modified so
that the host application can specify the "default" agent GUI with
method getDefaultGUIObject. A side effect of this
modification is that the madkit.kernel package is now
completely free of GUI-specific code. We're trying to be as
toolkit-independant as possible (think Java 2 MicroEdition, Cocoa,
MS-Cool ... :-> )
- The "travel agency" small example has been cleaned up, and
is now in its own travel.jar agent pack.
- Another consequences of the GUI-independance: the
getBean()/setBean(...) methods are now deprecated and
replaced with a more generic
getGUIObject/setGUIObject(...). The
java.awt.Component is now replaced with a simple
java.lang.Object. We no longer assume that agent interfaces
are bean component. It is up to the host application to check types
and setup the GUI accordingly. However, the change should be
completely transparent for agent developers. Host application
developers should check the example code in console/Booter,
cocoa/Booter or in the G-Box.
MadKit
1.4.1 - AbstractAgent Class |
MadKit 2.0 - AbstractAgent Class |
void setBean(Component bean)
Component getBean() |
void setGUIObject(Object o)
Object getGUIObject() |
void setOutput(Writer o)
|
void
setOutputWriter(Writer
o)
void setDebugWriter(Writer o)
|
Note that getBean()/setBean(..) are still here and functional, but might be removed in a future version. Please upgrade your code.
- The LogoLib has been renamed to "TurtleKit". There has been some
code changes to reflect this: the package for this library is now
madkit.models.turtlekit (from
madkit.models.logolib). The examples also moved in the
src/demo/agents/turtles directory.
- The Scheme agent model has been updated to Kawa 1.6.66
- The GenericMessage has been renamed to ActMessage. A
getAction() call has been added.
- G-Box interface change: the "add layer" and "remove layer" commands are now in the
View menu and no longer in a toolbar.
Bug fixes
- The GroupLister and AgentLister GUI were not
reliable (intermittent display). This bug was present since the MadKit
1.1 days.
- An old, hard to track, bugin the Scheme agents has been fixed. In previous versions, some applications with several Scheme agents could fail as the library confused references to the underlying Java object, which had the effect of causing messages sent to the wrong agent, error in group/role actions, etc...
- The "remove layer" action is now reliable and is always disabled
when ony one layer remains.
v 1.4.1 "Honk"- 01/2000
Changes and bug fixes
- A new GenericMessage (in
madkit.lib.messages), which describe
a classic act of language message with an
action, various key/value pairs and some
content.
- Both ACLMessage and
KQMLMessage now inherits from the new GenericMessage.
- A (really stupid) bug introduced with the
new hook mechanism made leaveRole calls fail. Fixed.
- The G-Box didn't kill synchronous agents
with a pure AWT GUI. Fixed.
v 1.4 "Werewolf"- 11/99
This release brings some very important changes: unification of threaded/synchronous agents, new hook manager, many optimizations. We tried to keep compatibility as much as possible, but we'd really like to know if your code break with this version or if you notice any weird behavior.
New features:
- Yoohoo, the new synchronous execution engine ! (aka "ReactiveLib II"). Now you can build reactive MAS, hybrid system while keeping the AGR model, and have a very, very flexible scheduling and probe mechanism. We added a section to the development guide, and a page to the visual MadKit tour. There is some demos for the new simulation engine, see the demo/agents/bees and demo/agents/logo. You'll also find a simulation library with some generic tools in madkit.lib.simulation. Finally an example of a specific simulation model which is a clone of some functions of the StarLogo system is in madkit.models.logolib. Note that old ReactiveLib-based agents should still work, but won't benefit from the new architecture. The madkit.lib.reactive package is now deprecated. Some of its features will be eventually merged in the new simulation library.
- The new hook and system communication mechanism. See the architecture section in the DevGuide and the sources of the system agents. See AgentLister or SocketCommunicator for an idea. Port of your old code should be straightforward. There is no backward compatibility for the old hook system: the integration in the kernel of the two modules would have way too much difficult and potentially instable.
- In the G-Box, you can now register at startup agent names in the toolbox window. The G-Box reads xxx.scm files in the autoload directory, and recognize (add-agent 'my.full.agent.class.name) lines; agents classes must be accessible in the CLASSPATH. This feature can avoid systematic JAR pack builds or repetitive "Add agent..." commands
Changes
- The documentation has been reorganized, expanded, and is now 100% in english. As it's the first release of this new documentation, I'm quite sure that some parts are quite crude, comments are welcome.
- Important change: The Agent is no longer the root class of the agent hierarchy. It is now the AbstractAgent which holds this place. This should not have consequences on your code, just recompile it
.
MadKit 1.3.2 Agent Class |
MadKit 1.4 AbstractAgent Class |
MadKit
1.4 Agent Class (extends AbstractAgent) |
Message-related methods (expect for waitNextMessage() )
Group-related methods
Role-related methods
GUI / Bean methods
Print / debug / name / AgentAddress methods
void activate()
void
end()
|
No change
|
Inherited |
getCurrentGroups()
(was obsoleted in 1.2)
|
getGroups()
|
Inherited |
killAgent(..)
launchAgent(..)
|
Now with AbstractAgent as parameter type (instead of
Agent).
|
Inherited |
launchReactiveAgent(..)
|
Was experimental and has been removed.
|
Not available |
void live()
void pause(...)
waitNextMessage()
|
not available |
live()
pause(...)
waitNextMessage()
|
- The SocketCommunicator and GroupSynchronizer have been rewritten for more genericity and to reduce the hack level. It should also be easier to write your own synchronizers and communicators.
- What seems to be a nasty race condition has been fixed in the messaging code. That could explain some difficult, unreproducible message losses under very heavy load in MadKit.
- Deprecated methods have been removed in
the Agent / AbstractAgent classes:
launchAgent(..,..) (two parameters
variant), addRole(..,..),
removeRole(..,..),
getRoleAgents(..,..),
getRoleHandler(..,..), getGroupRoles(...)
Bug fixes
- The kernel tables have been optimized for synchronous agents, this involved some changes in kernel structure like AGRTrio but developers should not perceive a difference.
- Kernel fix: you can't launch twice the same agent instance
- Fix (let me know if this one breaks some of your system agents code): setSender(...) and setReceiver(...) no longer public in the Message class.
v 1.3.2 "Glassworks"- 10/99
Changes and bug fixes
- The hook on sendBroadcastMessage should now work. The args is a vector with the group, the role, the message, and a vector containing the AgentAddress concerned (local or not). The broadcast call is completely intercepted, it is up to the agent that requested the hook to execute it correctly.
- HookMessage now has its fields protected, please use the accessors now.
- The hook system is being generalized. Some initial code is included, full support should come in the next version.
- API documentation is now generated through Java 2 tool.
v 1.3.1 "Deeper Green"- 9/99
Changes and bug fixes
- A new KernelMessage: "DUMP_ORGANIZATION" returns a complete dump of the local organization, with a Vector containing a Vector with the group name and a Vector having the role name and a Vector of AgentAddress
- The Kernel had forgotten debug messages occasionaly printed. Fixed.
- KernelMessages: "FREEZE_AGENT" and "UNFREEZE_AGENT" are deprecated and will be removed from KernelAgent in a future version.
- getRoles(..) could throw an exception when a wrong group name was in argument. Fixed
- Removed erroneous public access to the Role kernel class in AGRTrio, the getRole() method now returns a String.
- Rewrote parts of local group implementation. Quicker and safer.
v 1.3 "Archeo Sunrise"- 5/99
New features:
- Preliminary Scheme support ! Please refer to the MadKit development guide for more information. The Scheme implementation we're using is the excellent Kawa software by Per Bothner, Cygnus Solutions. Feedback welcomed ! This is the very first release of these Scheme bindings, so we're quite sure that a few bugs are still lurking around.
- A frequently requested feature: launching a new agent from another one can setup the agent graphical interface. In previous versions, a developer had to manually instantiate the GUI with initGUI() and getBean(). Now, the launchAgent(..) API has a flag to determine if the new agent should run without instanciated GUI or if it should appear in the graphic environment (i.e. the G-Box).
MadKit 1.2.1 - Agent Class |
MadKit 1.3 - Agent Class |
void launchAgent(agent, name) |
void launchAgent(agent, name, gui) |
- Applications that define their own graphical interface (i.e. not the G-Box nor console mode) can implement the madkit.kernel.GraphicShell interface and define the setupGUI(Agent) method, and call the registerGUI(GraphicShell) method on the kernel at application startup. This will ensure the new launchAgent call will be routed to your own application. See the madkit.console.Booter source for an example.
- An agent that launches another agent can kill it if it still owns a reference to it.
MadKit 1.2.1 - Agent Class |
MadKit 1.3 - Agent Class |
n/a |
void killAgent(agent) |
Changes and bug fixes
- Warning: the default directory for jar files searched at G-Box startup is no longer "jars" but "autoload"
- A bug has been discovered in the new AgentAddress notation. A common symptom was a blank AgentAddressEditor in the G-Box property window if the agent name was manually changed.
- Minor fixes in documentation. Release notes and history translated to english.
- The SocketCommunicator graphical interface now preset the port to the default value (4444)
- Minor changes under the hood to clean the way for the upcoming SEdit/MadKit integration.
v 1.2.1 "Sartori" - 15/12/98
Changes and bug fixes
- The G-Box should be a bit quicker. The agent property editor has a better interface and displays the agent patronymic name instead of plain AgentAddress (which is still readable in a tooltip)
- Important: We upgraded to Swing 1.1 (from 1.0.3) for all user interface elements. The consequence for your own developments is that you must now import the javax.swing packages (and no longer com.sun.java.swing). Please check JavaSoft web site for additional details.
- The G-Box starts up with platform native look-and-feel. Remove the --with-native-lf option in the run-gbox script if you want to switch back to the multi-platform "Metal" look-and-feel.
- Documentation has been slightly modified (some imprecision in the DevGuide, an incorrect API in the present document).
- Text files (sources and docs) should have correct end-of-line characters on Windows.
- A kernel bug which might cause a NullPointerException in sendMessage(group,role,message) has been fixed.
- The SocketCommunicator did not close its server socket upon agent death. Fixed.
v 1.2 "THRaK" - 01/12/98
New features:
- The whole new G-Box! Agent packs are now displayed as a hierarchy in the Toolbox window, the agents are launched as internal windows in an "agent desktop". Overall agent GUI manipulation is simpler and user-friendly. Agents can be organized as "layers" is the MDI interface.
- The G-Box and every demo agents have been rewritten with the Swing classes (aka Java Foundation Classes) from Sun JavaSoft.
- The G-Box starts up with the Swing "Metal" look and feel. If you prefer the platform native look&feel, add the --with-native-lf command line option in the run-gbox script.
- The agent launch configuration scripts have been re-designed with a Lisp-like syntax. Eventually, MadKit will embed a small Scheme interpreter (which will also be useful to SEdit)
- A madkit.lib.messages package has landed. The StringMessage class is now defined in this package (from demo.agents). KQMLMessage and ACLMessage classes are also defined (simple wrappers for these agent communication languages message structures). An ObjectMessage is also defined to store an arbitrary Object. But you can still inherit from Message for your specific needs
- Many small fixes, optimization and changes. We also made some intensive message-passing tests and the kernel seems to be quite stable, handling 500000 messages without losses nor memory leaks.
- An experimental scheduler for synchronous (aka: reactive, or situated) agents within the kernel. This module is not really documented yet, but curious can give a look to the NewRManager agent. The main advantage is that you can launch a huge population synchronous agents without freezing as this is not an "one thread/ one agent" model. These agent have the same capacities than classic MadKit agents, and can access the message-passing or group/role primitives.
Changes
- Documention is being rewritten, translated to english and reorganized. The plan is to have four documents: an "install guide", a "visual tutorial", a "reference guide" and the javadoc-generated API documentation. We're also switching to SGML, so generating multiples output formats should be quite simple.
- The role acceptation and security has not come back yet, but we now have a good design plan, so it should appear in a later version.
- The AgentAddress has been reworked to be more coherent with the AgentInformation class (which has been modified as well). The name field is now common between these and is not used for AgentAddress discrimination.
- Warning, The Agent class API changes. Some methods are renamed, others disappear. The main objective is to have a global coherent naming. Old methods returning multiple values with a Vector ou Enumeration now return an AgentAddress array. Previous methods are still there, but are tagged as deprecated. Please migrate as soon as possible to the new API, MadKit 2.0 will remove any deprecated method.
MadKit 1.0.4 |
MadKit 1.2 |
- void addRole(group, role)
|
void requestRole(group, role) |
void removeRole(group, role) |
void leaveRole(group, role) |
Vector getRoleAgents(group, role) |
AgentAddress[] getAgentsWithRole(group, role) |
AgentAddress getRoleHandler(grp, role) |
AgentAddress getAgentWithRole(group, role) |
Vector getGroupRoles(group) |
String[] getRoles(group) |
Vector getCurrentGroups() |
n/a |
n/a |
launchReactiveAgent(reactiveAgent, name) Expérimental |
Bug fixes
- Many. A few fixes in the kernel, particulary agents had a way to get a direct reference on group and role internal tables
- Distributed communication agents should be more robust now.
- The HOOK_MESSAGES code is also more reliable and more generic.
v 1.1 - 2/08/98
v 1.0.4 - 23/01/98
Changes
- Distributed Applications ! Please check the devguide and tutorial for more info.
- Compiled classes for MadKit are no distributed as JAR files (madkit.jar and gbox.jar, like the usual agent packs in the jars directory) and not as a directory hierarchy and class files. The reasons for the switch are:
- Easing transfer between various host platforms (Mac, Unix, Windows)
- Simplifying applet mode in web browser.
- On the MacOS, the G-Box has been validated against MRJ 2.0 and CodeWarrior Java.
- Version numbering: MadKit is not "alpha" anymore. Yo ho ho, and a bottle of Rum^H^H^H Orange Juice.
Bug fixes
- Fixes in the kernel to make it compatible with web browser (SecurityManagers are paranoid with System Properties).
Micro-kernel
- The command-line option -port xxxx is now obsolete.
- The command-line option -ipnumeric is now (hopefully) useless and obsolete.
- Warning The internal representation for agent addresses changed. It should not be a problem for usual agents which do not try to access directly the AgentAddress internal structures. The KernelAddress field was specific to applet mode in previous versions, and as of MadKit 1.0.4 is used as a generic representation of Kernel location and communication mechanisms (sockets, CORBA, SMTP, ...) which might be implemented in the future.
- Hooks on SendMessage are only active in non-local messages
- The micro-kernel is now compatible with"en applet-mode" and has been tested against AppletViewer, HotJava, Internet Explorer 3.0-4.0/MRJ 2.0 0 with MacOS. Execution with Netscape 4.04j2 Linux is a bit rought (thread poroblems). Not tested (yet) against Communicator or Explorer under Windows. To try this, just type the java fully qualified class name of an agent (for instance demo.agents.PingPong), and an optional name.
Distribution
- The Communication Agent changed ! It's now the "SocketCommunicator". To use it, just give a port nubmer in its PropertyBox and launch the socket server with the popup-menu.
- The SocketCommunicator does not relay message between kernels
- Distributed mode is not compatible with applet kernels
- Agent migration is not supported yet. Two test agent exists anyway "Migrator" and "netTest". A clean implementation is underway.
- MadKit does not work with JDK 1.2beta2
Group & role management
- The group and role manager does not support access control yet. This will be corrected eventually.
v 1.0a3 - 09/12/97
New features
- When an agent death occurs (because it has reached its end() or because of a bug intercepted by the kernel), MadKit changes the bean color in G-Box or applet modes.
- A new Splash Screen with a progression bar. Groovy !
- To avoid some problems with exotic network settings, the kernel may be launch with the -ipnumeric flag. In that case, the various AgentAdress are built with the four-digits IP number.
Changes
- The G-Box source has been synchronized again with the JavaSoft BeanBox nov97 source.
- The madkit.graphics package has been renamed to madkit.lib.graphics
- Less agents launched in a default configuration. Non-essential or experimental demonstration code is now in a demo-exp.jar file in the otherjars director, but is still usable with the File->Add Jar.. command
Bug fixes
- Requests concerning non-existant groups caused the kernel to crash in a case involving getRoleHandlers(...). Fixed
- The G-Box now runs correcly even if a "jars" directory is not present in the startup directory.
- A (stupid, although benign) bug in AppletMadKit fixed
- The G-Box does not use the "tmp" directory anymore.
v 1.0a2 - 01/12/97
New features
- The archive now includes sources for the MadKit Applet demonstrator, the text booter, and the G-Box.
- The market demo is more interesting.
Bug fixes
- Some groups were incorrectly kept in kernel tables after the termination of all of their members.
- The start-up scripts didn't keep the previous CLASSPATH
- The agent micro-kernel now runs under Apple Rhapsody.
Known bugs
- The red rectangle during dragging feedback might be incorrectly placed with some graphic configurations.
- Layout for AgentAddress properties in the PropertyBox is incorrect.
v 1.0a1 - 01/10/97
First non-development version.