People have written robots with pluggable movement and guns and so forth for quite awhile, ever since CoreBot. However, I believe FloodGrapher to be the first robot ever written for which modules can be written and used without changing any existing robot code.
FloodGrapher is configurable and extendable by editing robot.ini in its data directory. Note that FloodGrapher will crash if this file doesn't exist. The robot.ini file is written in FloodScript, and there is currently no way to change his settings except by just hacking at the FloodScript.
The most important parameters that need to be set in robot.ini are movement and powermanagement. FloodGrapher will crash if these two things aren't properly defined. Then, segmentation should be set zero or more times (when you assign the same variable multiple times in FloodScript, it is all packed into a list). This specifies the data to be collected.
Other parameters that may optionally be set are included in the default robot.ini. Set constantwaves if you want FloodGrapher to fire a wave every scan (default is [#f]), guess_factors to change the number of buckets in each segment, save_period to set how often it should save data, and load_data to set whether it should load saved data at the beginning of the match.
Movement modules can be made for FloodGrapher that implement the Movement interface. This will require you to write two methods, an all-purpose event handler (all of FloodGrapher's events will be sent here) and a run method that gets called each tick from FloodGrapher's run loop.
You can customize the firepower of FloodGrapher by implementing the PowerManagement interface. Implement the getPower method to return the power that should be used (or zero if FloodGrapher shouldn't shoot at all).
To add new segmentation axes to FloodGrapher, you will have to implement the Segmentation interface. One of the three necessary methods returns a corresponding GrapherSegmentation to this Segmentation. Note that in order to graph the results from the robot, this method must return a corresponding implementation of GrapherSegmentation.