One of the overriding design goals of AnimatLab was to make it very flexible and easy to upgrade by the user. To meet these
goals the software uses the concept of a plug-in. The idea behind this is similar to the one used in the electronics
industry. Your computer is built up from a number of components like a hard-drive, monitor, keyboard, and a mouse. Lets assume
that your current monitor is a bulky 15" CRT. A really state of the art monitor, in 1995!
You would like to upgrade
your monitor to be better, so you go and get a new 20" LCD monitor and plug it into the jack for your old one,.
have a huge, new screen for your computer. Compare this to how an old Macintosh SE worked. The monitors were built in directly
as a part of the computer. You could not simply buy a new monitor and plug it in. You had to buy a whole new computer.
Adding and changing the parts of your computer is possible because they can be treated like they were black
boxes. All we have to do is define the interface that will be used to communicate between the computer and the monitor, and
after that anyone can build a new type of monitor as long as they abide by that interface.
Traditional, monolithic applications are more like the old Macintosh computers.
They are precompiled and shipped out. They work fine, but they are very
difficult to improve or change.
AnimatLab is more like modern computers. Using plug-ins lets the user add to it
easily by using the same concept. Each of the neural simulations systems are treated like they were black boxes.
A standard interface has been defined for these modules that allows anyone to build a new one. So a user can
create a new module, compile it into a dynamic link library, and then place it in the bin directory of AnimatLab.
When the application starts it searches this folder for any new modules that implement the relevant interfaces.
If it finds any modules it loads them and makes them available for use in the application.
Specifically, for the neural modules
a new band will appear in the toolbox of the neural network editor that lists all the nodes that are available for that
module, and those nodes will also appear in the alphabetical list. This means
that if the behavioral systems provided by AnimatLab do not meet your needs you
can simply build a new one and add it to the software. None of the original
AnimatLab code needs to be modified or recompiled for this to happen. Also, you
can easily share any new plug-ins that you develop with anyone else.
This project was supported by: