authors: Noel Bush, Kiml Sullivan, Thomas Ringate, Pedro E. Colla
Last updated: 30 April 2002
The latest version of this document, including whatever apologies, retractions of libel, revisionist self-justification, etc. can always be found at http://alicebot.org/resources/programd/release-notes.html. Probably.
Versions documented here:
The saga continues. Thanks for contributions, tips, assistance with this release to Anne Kootstra, Jonathan Roewen, Sven Seelig, Denis Sheynihovich, Kim Sullivan, Andrew Teal and Richard Wallace.
This release of Program D is significant for stability and important functionality improvements. Here is a list of highlights:
Program D now supports an unlimited number of bots running from the same process. You configure the bots in the startup.xml file. Different bots may share one or more AIML files, and memory usage is optimized to minimize duplication. Bots can be enabled or disabled easily by toggling an attribute in the startup.xml file.
The example startup.xml file has been moved to the conf directory, and is documented inline with XML comments.
The <substitutions>/* elements (<input>, <gender>, <person>, <person2>) as well as the <predicates>, <properties>, and <sentence-splitters> elements of the startup.xml file can each be assigned an href attribute pointing to a local file that contains the actual definitions. This allows multiple bots to share such definitions, or portions thereof, without needless duplication.
The example startup.xml file illustrates this configuration.
Alice Chat Listeners are now configured in the startup.xml file, and each bot can be assigned its own listener.
Because of recent changes to the ICQ protocol, the AliceICQ listener still does not function correctly (it connects and receives messages, but sent messages are never received). However, it is included in hope that a resourceful individual will be able to get it up to speed and contribute back to the community.
You can now choose to have all chats logged to a database. This facilitates a form of log viewing that is much more efficient and easier to work with than the XML approach in previous releases. A companion bundle of PHP files for viewing the log database will be released separately.
You can enable database-based logging by setting programd.logging.to-database.chat=true in server.properties. You must first create the chatlog table as per the database/logtables.script file. You also must configure your database settings properly in server.properties.
Program D now does a better job checking some aspects of your AIML syntax when files are loaded. You will be alerted to malformed categories, invalid pattern expressions, and non-AIML elements in certain locations.
A very primitive GUI-based console is available for bot interaction. (This was actually available in a previous release but not documented.) The console window will be a valuable tool for people building bots in non-English languages, because it can (or should) display all characters, not only ASCII/ISO-8859-1, correctly. The GUI provides menu commands for a couple of common shell commands, but otherwise no additional functionality.
The console can be invoked with console.bat (Windows) or console.sh (*nix).
The bot now has a "heart", of sorts, that can issue regular pulses to let you know it's alive. At present the only implemented pulse is a text message to the console, but an interface has been provided so that you can easily add modules that update a database, send email, etc.
You can set a maximum time allowed for trying to get a response. For some types of infinite loops, an arbitrary timeout is the only way to escape. This also provides a parameter for tuning scaleability of the server.
Set the response timeout by editing/adding the programd.response-timeout property in server.properties.
An optimization to the Graphmaster algorithm suggested by Richard Wallace on the alicebot-developer list has been implemented. This optimization is intended to reduce match times for patterns that include multiple consecutive wildcards.
Now you can customize the strings used as custom inputs to the bot to signal a new connection or inactivity. Also, the connect string is sent to the console user session on starting up (or switching to a new bot) so that you don't have to type it.
Customize these parameters in the server.properties file.
The targeting tool is still very much a prototype, just a cleaned-up version of what was released in Program dB, but probably many miles/kilometers away from what it ought to be. However, in this version you can actually type in the target panel, which I'd managed to mess up previously.
4.1.5 is the last release that predates the Foundation's new bug-tracking system. Subsequent releases will make use of this system to enumerate bugs and their status. The following bug descriptions are more anecdotal than we'd like to provide in the future.
A serious set of thread synchronization problems has been addressed and seems to have eliminated most or all deadlock and race conditions that were causing sporadic, enormous delays in some previous builds.
Some major problems with the substituter have been corrected.
The problems with progressively deteriorating response times seem to have been solved. Even under heavy load, a reasonably-equipped machine should see average response times in the <40ms range, very often down to 1-2ms. We intend to publish some performance test results soon.
The pathname handling for learn operations has been improved to work more "intuitively"--i.e., paths that are expressed relative to the files in which they are listed should work.
Program D 4.1.5 requires a JVM or JRE that is compatible with the Java 2 Platform version 1.4. If you do not intend to modify the source code, you can download just the JRE (Java Runtime Edition), which is significantly smaller than the SDK (about 9MB as compared with ~40!).
The current reason for the Java upgrade requirement is an internationalization-related issue that may not pertain to all users. If the upgrade is onerous for you, post to the alicebot-developer mailing list for assistance with learning the necessary steps to build a version that will be compatible with JDK 1.3.
Many people have expressed the desirability of more cleanly separating Program D from Jetty in order to allow use of better-quality servlet containers (such as Tomcat, WebLogic, JRun, etc.). This isn't done yet but appears to be a trivial task. However, presently the significant integration of the bot server with a web server other than Jetty is more hypothetical than actual.
The question of merge policies still hasn't been satisfactorily addressed.
The program can still be flummoxed by malformed AIML. The decision to require Java SDK 1.4 opens the way to using standard XML technologies now included with Java (previous linkages caused problems with the GNU GPL), but research is needed to measure the tradeoffs between improving this aspect and possible performance degradation.
Finally, the program is now at the stage where it could use a real overhaul in architecture. Several discussions are going on semi-independently about this subject.
Bug fixes and miscellany by Noel Bush.
Major cleanup and optimization work by Noel Bush. User authentication implementation sponsored by Artificial Solutions AB.
Finally it's here -- the final reference version of Program D! Big thanks to Tom and Pedro, who have taken upon themselves the difficult task of bringing the reference implementation as close to the AIML 1.0 specification as possible. Their work has finished now -- the server is fully under the GPL, and you can safely use version 4.1.2 as a reference base for further development. If it's good, your work may even be incorporated into the next release!
-Kim, Tom and Pedro
Another update of the reference version by Thomas Ringate and Pedro E. Colla. It features a rewrite of the template parser, support for stack variables, re-added some lost features (scripting, substitutions). The way bot properties are handled also changed. For instructions on how to set up the server, see _readme.txt.
- Kim, Tom and Pedro
This is the 'reference' version Thomas Ringate and Pedro E. Colla have been working on. It is intermediate work in progress, with the goal to make Program D AIML 1.0 compliant. Currently, in version 4.1.0 ref, the support for AIML 1.0 is partial and achieved thru quick fixes. For the most part, AIML 0.9 is yet supported.
Don't use this release as a base for further development, there will yet be major changes in the code. The next release 4.1.1 will hopefully adress the above issues within the next 2 weeks.
-Kim, Tom and Pedro
Now comes WITHOUT any AIML, you must install an aiml set manually and configure it in the SERVER.properties file (pointers are in the bots/readme.txt file), otherwise you will get a 'FileNotFoundException'. You can get some AIML files (as well as the latest server release) here:
First release out of the CVS, included Jon Baer's AIML set.