March 13, 2006
Program D 4.6 final
The final/"official" release of Program D 4.6 is now available. With almost exclusively very minor tweaks, this is the same as release candidate 3. The one exception to this is the introduction of some memory optimization techniques in the graph building process. (I'm still working on trying to pack as many bots into a single running instance as possible.)
I'll address bugs and worthy feature requests as they come up, but otherwise, Program D development will now be focusing on a new 5.0 stream that will see some significant architectural adjustments, with an aim toward expansibility.
Posted by Noel at 01:05 AM | Comments (0)
March 06, 2006
New IRC Listener
Wow, can't stop it today. Found a great library (PircBot) for IRC connectivity from Java, and threw out all that yucky old code from the IRC listener, replacing it with a few methods that neatly start up the PircBot and let it do all the work.
There's plenty that could be done with this listener, given the rich API provided by PircBot, but for the moment I'm satisfied just to get this out there to those (apparently many) users who use Program D with IRC. Hope this will help!
Posted by Noel at 12:27 AM | Comments (0)
March 05, 2006
New AIM Listener
Since the daim library, which was used by the ICQ/AIM Listener, seemed to be no longer able to work with either the ICQ or AIM networks, and since it appeared that the author wasn't really interested in supporting it, it became necessary to find another library.
There was some interesting discussion on the Program D mailing list about whether or not to take a completely different direction, but in the end I was able to locate what looks like a good library, JAIMBot, and quickly adapt that to the needs of a Program D listener.
Continue reading "New AIM Listener"
Posted by Noel at 11:16 PM | Comments (0)
New release candidate, and new listener
Today I updated the Yahoo Listener to version 1.1.1, adding a small but important feature that filters out HTML and formatting codes from inputs sent by Yahoo clients.
Also uploaded rc3 of Program D 4.6, which has important fixes in URL resolution techniques that should address problems some people were having running Program D on Tomcat on Windows.
Looking forward to declaring a final release of 4.6 soon, once the ratio of confirmed open bugs to daily downloads stabilizes somewhere close enough to zero.
Posted by Noel at 03:56 PM | Comments (0)
February 28, 2006
Hot on the heels...
I've posted rc2 of 4.6 on the site already, because several bugs were discovered almost immediately that affected Windows users. My primary desktop machine is a Linux box, and although I do test builds on Windows, it's clear that I still need to improve my test process to be more thorough in coverage.
It was nice to see a mention on the front page of alicebot.org almost as soon as rc1 was announced earlier today; there hasn't been current information about Program D on that site for a long time. I'm glad to be able to put out new versions, and fixes to those versions, in the spirit of open community.
So, thanks, everybody, and keep the communication flowing!
Noel
Posted by Noel at 02:41 PM | Comments (0)
Program D 4.6 release candidate 1
Now available at http://aitools.org is Program D version 4.6, release candidate 1. This is a highly-recommended release which introduces some interesting perforamnce improvements, fixes a number of important bugs, and brings some major architectural improvements--most notably, Program D can now be deployed as a .war file to a web application server, and can interact with a web client using "Ajax" technologies.
The download--in "binary", source, and web application (.war) formats--is available at:
http://aitools.org/downloads/#programd
Program D is the most widely used free ("open source") AIML bot platform in the world. It is the most feature-complete, best-tested implementation of the current AIML specification. It supports unlimited multiple bots in a single server instance, and has an open-ended architecture for interacting via any interface imaginable. The standard release provides a J2EE web application implementation that can be deployed as a .war file. Drop-in listeners are available for IRC, ICQ/AIM, and Yahoo. It includes an automated testing framework for testing knowledge bases, and is packaged with an AIML Test Suite that verifies that the program itself complies to the AIML specification.
Program D is known to work with many different languages / character sets. Its component-oriented architecture allows it to be integrated into any application framework desirable. It is implemented in Java, and uses many features of the latest JDK to provide optimum code reliability. It is actively maintained and supported.
More details about the 4.6rc1 release are available here:
http://aitools.org/programd/docs/release-notes.html
The readme doc, which has been significantly updated, is here:
http://aitools.org/programd/docs/readme.html
Discussion about all aspects of installing, using and integrating Program D takes place on the Program D mailing list, which can be accessed here:
http://aitools.org/mailing-lists.html
Any issues that arise with use of this new release may be reported and discussed via the mailing list, and/or through the aitools.org bug tracker at:
Many thanks to all those who have contributed patches, bug reports, testing reports, and suggestions contributing to this new version of Program D.
Best regards,
Noel Bush
http://aitools.org
Posted by Noel at 02:15 AM | Comments (0)
September 25, 2005
a "proper" web application
I am preparing a 4.6 version of Program D in which (finally!) one of the available configurations is a .war file (a web application that can be deployed on Tomcat, JBoss, Dynamo, etc.) There will still be the "simple console" and "GUI console" configurations available, but possibly I will stop packaging Jetty, so users will need to choose and set up the web application server themselves.
I'm successfully using the code that's currently in CVS as an integrated part of another application (via a redesigned servlet).
Some of the highlights of this are:
* All that "template" stuff is in the trash. You can use JSP.
* There are a few AIML tags now available via a JSP custom taglib.
* The crazy-zany-wacky-nutty "ServletResposeRequestRespondingBlahBlah" stuff that I put in the previous release is all gone. So is the "responder" concept in general. Everything we were trying to do with all that huffing and puffing can be managed just fine with J2EE standard stuff.
* Authentication is something you do with your app server (or not). I've used a couple of the different Realm implementations provided by Tomcat; you should be able to use (or not) whatever you want. This way any user authentication for the bot server can be part of the user authentication of your whole environment/application/whatever.
One current side effect is that the interactive console is not available for the web app. But I won't worry about this unless anybody can tell me why it's a problem.
I would appreciate hearing from anyone who would be able to test out preliminary versions of this on any application server. I've been putting it through the wringer with Tomcat 5.5.9, but additional testing on that platform, as well as any other, will be great, to uncover whatever issues might arise. (I've had to do a lot of cleanup of path construction and usage (URLs) due to various problems I discovered when running it from a war file, running it using the Apache httpd-Tomcat connector (jk2), etc. I'm sure there are other things that should be ironed out.)
I would also like to know what people think about not including Jetty anymore. I know that it is an attraction of Program D that one can download it and have a running web-based interface within a few minutes. On the other hand, packaging a particular app server has always added a layer of irritation for me. What would seem preferable is just to have a nice HOWTO, explaining the steps for setting up any number of popular servers and deploying the Program D war file. I think that Program D is largely incompatible with the casual hobbyist group, in any case. People who just want to play around a little bit and make an Alice clone can use Pandorabots or one of the others -- Program D is really meant to be a platform for more serious bot development.
All thoughts and reactions are welcome!
Noel
Posted by Noel at 09:31 PM | Comments (0)
May 13, 2005
Version 4.5 Released
Program D 4.5 has been released. It is available at:
After three release candidates, during which a number of bugs were discovered and fixed, and a full complement of planned features and enhancements were integrated, this version of Program D is now released as "final".
Communication
All communication about Program D development, bugs, improvements, usage, etc. takes place via the Program D mailing list, accessible via:
http://aitools.org/mailinglists/
Bug reports may be tracked and created at:
What Is New
A full description of enhancements to version 4.5 can be viewed at:
http://aitools.org/programd/release-notes.html
Here is a summary:
- Component Orientation
- Enhanced Configurability
- Vastly Improved XML Parsing
- Schema-Based Validation
- Revised Logging Scheme
- XML Templating for Responders
- Regular Expressions for Substitutions
- Improved Responder Architecture
- Merge Policies
- AIML Testing System
- AIML Test Suite
- Plugin architecture
- AIML Shell Command
- Listener Updates and Package Separation
- Type Safety and Other JDK-Supported Enhancements
- Tighter Coding Standards
- Better Error Checking
- Numerous Bug Fixes
The Future
Subsequent bug fixes and minor updates will be released as new point releases (4.5.1, 4.5.2, etc.). Development is now underway on a 5.0 version that will introduce significant extensibility.
Many thanks to all who have participated in bringing version 4.5 to final release status by reporting bugs, submitting code, and other communications and contributions.
Posted by Noel at 10:04 PM | Comments (0)
May 05, 2005
Highlights of RC3
Release Candidate 3 is out, and this one is really a big deal. As long as no more big bugs are uncovered in the near future, this is essentially what's going to be in the final release of 4.5. If possible, I'd like to address the outstanding problems with the ICQ and AIM listeners, and I'm looking around through installer packages. But with rc3 already, 4.5 is a big step forward for Program D, and I wanted to highlight a couple of things that I'm glad I've been able to include.
First, the AIML testing framework. Albertas Mickensas from MegaLogika developed this using the 4.1.5 codebase. We got in touch, and I adapted it to the 4.5 architecture. The process of adaptation itself brought improvements to Program D, as it finally provided a concrete impetus for me to implement a real plugin architecture. The testing framework is the first use of this architecture. It is implemented as a plugin available from the Program D shell with the command /test.
The AIML community has been waiting for a tool like this for many years. The closest approximation we had, prior to Albertas's framework, was typified by the testcases.aiml and its accompanying text script, developed by Tom Ringate some years back. To test Program D (or any interpreter that could read from stdin), you would “feed” the script to the engine, and then visually inspect the results. Any bugs discovered there constituted an indication of a functional problem in the implementation of the AIML spec; a successful run through all tests was supposed to indicate proper implementation. When Tom first put this out, it was a big improvement over the total absence of a test suite. Other people used this approach for testing their AIML sets. But this form of testing was never something that could really scale to big knowledge bases.
Albertas's framework changes all that. Now, you can define a test case using a formal (but simple!) XML structure. Here's an example:
<TestCase> <Input>what's your name?</Input> <ExpectedAnswer>My name is Joebot.</ExpectedAnswer> </TestCase>
This is the simplest test case: an input to send the engine, and an expected answer. Only an exact match constitutes a pass. It's also possible to specify keywords that should, or should not, appear in a response, and an expected length. I'll probably add an element letting you give a regular expression that should match the response.
I have adapted the old test cases mentioned above, to produce the first-ever automated AIML Compliance Test Suite. This is now included in Program D as AIML.aiml and AIML.xml. The release is configured, by default (in bots.xml) to load the AIML.aiml file, so you can test that Program D actually does what the AIML spec says by typing "/test" at a D shell prompt. Pretty cool. This helped me find a couple of significant bugs, which have been addressed in rc3.
The other big item I wanted to highlight is the Flash interface. A few years ago, Chris Fahey provided the world with the first Flash interface to an AIML interpreter. At the time, it was a novelty—now, with services like Pandorabots and Oddcast, we see more and more Flash bot interfaces. But Chris's interface hadn't been updated in a while, and when I got around to testing it with Program D, I found that it didn't work anymore. This was probably due to changes I had made to the program, primarily an insistence on XML compliance that caused me to include Chris's original template inside a sort of "dummy" tag so that the Flash chat template became a valid XML file.
In any case, Daniel Ireland, an interactive designer from Australia, zeroed in on the Flash interface for the first release candidate of 4.5, and found it lacking. A series of exchanges with him finally resulted in a fixed version of the Flash toolkit, which is now included in Program D for the first time. Many thanks to Daniel for fixing what was broken and bringing this important client up to date!
In rc3, I have added parameters to the flash-responder.xml file to allow you to convert HTML line breaking elements (br and p) to actual line breaks, and to strip out other markup, since the Flash client itself does not do anything with these items. These parameters are set to true as shipped. If you wish to modify the Flash client (the source is also provided, of course), then you can turn off these parameters and make use of HTML tags, or whatever else you choose to pass in the response.
Beyond being happy that Program D now ships with a working Flash client, however, I'm also very glad about how this experience validates, at least in my mind, the XML template processor that was created for 4.5. This is currently used by the HTMLResponder and the FlashResponder, but it should be very easily usable by any responder someone might care to build, such as (for instance) an interface to an external SMS system for mobile phones, in which one would like to send a simple XML message with the bot's response. Perhaps there's still something missing here for the sending part—one would also want to be able to receive an XML message—but with all the infrastructure reworking that's been done with this version, this should be far easier than it was before.
Lastly, I'd like to mention that the major revision of the Program D architecture to a "component-friendly" form seems to be getting favorable press. I've been in touch with a few people who, over the years, have indicated an interest in integrating Program D with other kinds of systems. It appears that the re-architecture work has indeed answered a lot of their qualms about the original structure: now, I'm gathering, it should be far simpler to deploy Program D as a JavaBean, an EJB, or whatever. I know little about these technologies, so I'm looking to others to guidance, but it appears this is in the pipeline. That's exciting to me. The only person I haven't heard back from is the creator of "ChatterBean", an effort which I found very inspiring. I still hope he'll write me back and we can do something "synergistic".
Anyway, I'll be looking forward to your comments on Program D, by way of the mailing list, this blog, private email, or whatever suits you. Thanks to all those who've participated so far!
Noel
Posted by Noel at 10:58 PM | Comments (0)
April 27, 2005
RC2 (already)
I anticipated going through a few release candidates with 4.5, but not quite so quickly. Release candidate 2 is coming out as I write this. A series of exchanges with Daniel Ireland on the mailing list led me to a discovery that I'd left a pretty clumsy error in the AIML schema. This error would cause the so-called "blockCondition" form of condition to fail to validate.
Since the AIML schema is the arbiter of what gets loaded and what doesn't, I count this as a really severe issue that warrants updating the available build ASAP. I don't want tons of people to download rc1 and run into this problem.
People who have already downloaded rc1 don't need to go get rc2—you can just download the corrected schema and drop it into the resources/schema subdirectory of your Program D installation.
Like I said, this is why they're called "release candidates". :-)
Posted by Noel at 01:16 AM | Comments (0)
April 25, 2005
New Release of Program D
(From the Release Notes...)
This is the first release of Program D in three years. During this time, Program D has remained the most widely used open source / free AIML interpreter in the world. It has been employed in numerous projects, from personal-sized art projects to large, enterprise level deployments. The stability and consistent performance achieved in version 4.1.5 have proven enduring and reliable, despite the hiatus in available support.
This new release focuses on updating the Program D technology to take advantage of progress in technologies available as part of the core Java platform. Core functionalities such as XML parsing, logging, and various architectural matters are now handled in a fashion that heightens stability, performance and maintainability.
We have finally addressed the issue of component orientation: Program D can now be easily included into any application framework as a simple "core" object, without ever involving any undesired interfaces (servlet container, IM interface, etc.). On the other hand, these optional interfaces now use a more flexible and better defined API to connect to the Core, and we are confident that additional interfaces may now be provided with far more ease than before.
Every line of code of Program D has been reviewed, and "refactored" as appropriate. The program still passes all of the AIML 1.0.1 test cases published with the previous version, as well as a few more.
Read the complete release notes.
Posted by Noel at 02:55 PM | Comments (0)
April 22, 2005
A new focus
A couple of years ago, we put together the aitools.org site with a rather narrow, technology-oriented focus: we wanted to provide links to AIML interpreters and documentation, and to companies providing bot-related services. The point was to maintain an information repository not associated with any particular company, organization, etc.
As it has turned out, the alicebot.org site has done a far better job of maintaining that sort of information, especially for the general hobbyist community.
From the point of view of professional bot development based on open source / free software, however, we still see a need to be addressed. Following is a brief description of that need, and how we're refocusing aitools.org to meet it.
Continue reading "A new focus"
Posted by Noel at 09:27 PM | Comments (0)