GOZERBOT and the battle of the beta’s

version 1.0 of gozerbot is drawing nearer and nearer and this makes me nervous. When 1.0 hits the streets it needs to be API stable so people that write plugins for gozerbot can rely on gozerbot to NOT change. This however turned out difficult for me todo as i have the desperate urge to change the core once every while. So while we are at 0.8.1.1 now i thought of making small changes in 0.8.2 0.8.3 etc until we reached 0.9 hoping at that time that things would have stabilized.

This however turned more difficult because the changes i needed to make in gozerbot were so drastic that the code base got FORKED because keeping backwards compatible code in gozerbot made it grow into obscurity. The fork was made by maze one of gozerbot biggest contributors see http://boozer.codehub.org/.

Like a wakeup call this made my alarm fase turn red and rushed me into moving towards a 0.9 release now in which i try to do all the changes i think are necessary for gozerbot 1.0.

changes as i have them at this moment are:

  • rewriting of the gozerbot package into several subpackages
  • moving base plugins into the gozerbot package so basic bot functionality is provided into the core
  • use sqlite3 as the base backend storage
  • depend on sqlalchemy to also provide backends to other databases
  • moving locally installed plugins into a “gozerplugs” package, this is because the “myplugs” install target didn’t provide enough namespace purity
  • use a new config file format based on json .. no execfile used anymore, plugin config files are now human editable
  • use a new layout of the gozerdata dir adding users, fleet and plugins directories to store related data
  • let Persist class now use json to serialize data to disk as well, getting rid of pickles all to gether since they were the root of a lot of upgrade problems (peristed classed are stored by name making it difficult to move modules around)
  • move third party software into the botdir level. This makes the code as if it the code were globally installed. Basically done so that gozerbot is easier installed on systems like debian and freebsd
  • rename some of the provided programs .. gozerbot-init gozerbot-upgrade

These changes make a huge difference in format in which data is stored, so a seperate upgrade program will be provided in 0.9 to convert older formats into the new one. This however needs a lot of testing and is not yet completed

Anyone who want to help cranking the bugs out of 0.9 is very welcome in out channel #dunkbots on IRCNET. Tarballs are available from http://gozerbot.org but if you want to get into gozerbot development or testing running it from the developement mercurial repository is best. By running it from mercurial it makes it easy to sync changes i make to the bot base by simply running the !upgrade command. repo is at http://core.gozerbot.org/hg/dev/0.9

I really hope that i can finish this need to change urge and stabilize the bot API wise.

Bart

Leave a Reply