I suppose after having been asked repeatedly to write some kind of textual introduction to depressionbot and what exactly we're trying to do with it I'd best relent. We've created this dblog so we can post semi-regular (read: when we can be bothered) updates on how development is going as well as writing up some post-mortems on some hilarious and/or enraging bugs or issues we've had to work around. So depressionbot is an IRC bot built entirely in Node JS, running on JSBot which is a library I developed to interface with the IRC protocol. It's been in development for a little over a year, though true interest only having set things moving at a quick pace in the last couple of months. DBot proper is developed primarily by me, while the excellent Stats module is developed by Sam. Additionally we've received substantial patches from many other contributors (I'd list them all, but I'd have to go and find all their websites to link), By now it includes most features expected of a standard IRC bot, however the aim of the project is to use the versatile nature of Node to provide additional powerful features. The bot has a web interface which, while only being a regular module in the eyes of the bot itself, uses the expressjs library to host a web server which allows any of the other modules in DBot to add functionality to - for example, the quotes module includes an addition to the web interface which allows you to view the quotes on the web. This has already allowed us to create rather rich interfaces, such as the web interface for viewing channel statistics (which is currently missing a few days due to a bug). From this point, we thought why not implement some kind of social network using IRC as the backend, IRC is a nice and federated real-time text-based protocol which is pretty good (when you ignore the fact that no one pays any attention to the RFC anymore). The value of this kind of social network is that because it's just people talking in a room, a large part of the social aspect is already complete and data can be quite naturally gained - the bot is augmenting the already-existing experience. To start this off, we created profiles for users, which include links to relevant statistics and we plan to expand on this with additional fields, 'badges' and all sorts. In the further-off future, we're planning on implementing the ability to use the DBot web interface to be able to chat and perhaps retain a chat session on the IRC server. This means that the whole thing would essentially be a social network in a box which uses plain old IRC channels as a communication backend. Things like games with graphical front-ends could be conducted on the web interface, while all that's actually going on is regular text communication in an IRC channel. Before we can continue with a lot of this stuff, we're working on improving the backend. We're currently implementing the databank library, developed by Canadian Internet Superstar Evan Prodromou - it is a database abstraction library which allows a program to use one of a numerous methods of data storage (nosql, disk, memory etc) while providing a common interface for interaction with the data throughout the software. The intended use for this kind of library is that one might run their entire application with any one of a set of data storage solutions, via an option set in the config file - this being useful for when many instances of a piece of software will be run and there will be differing requirements in terms of data throughput; for example for a personal blog one might choose to store their data in a flat file on the disk without any additional overhead, while a large news website running the same software would probably opt for a NoSQL database. DBot is using Databank in a slightly alternative manner, in providing individual modules the option as to which method of data storage they wish to use. Up until now, we were storing all data in a big object and occasionally serialising this to a 'db.json' file (lazy, yes, yes) - this actually wasn't a problem for a long time, until Sam started developing his audacious statistics plugin which brings with it an obscene amount of data throughput in the application. Obviously this meant that we needed something like Redis to conduct the statistics module's data storage with. The problem was that it seemed wasteful to set up a Redis server within the module - perhaps some other module in the future would need this kind of support. So Databank allows us to retain centralised data storage in DBot, while allowing for a number of different storage options as well as providing a common interface to data storage within depressionbot. This means we can use Redis for Stats, while the module which tracks who has ignores set on which modules can continue using disk-based storage without additional overhead or any other such problems. This also has the benefit of not having to add dependencies for the entire application if only certain modules use that functionality - i.e. Redis will be a dependency of Stats, rather than DBot. We hope to finish the Databank implementation very soon, release 0.4 and continue development on everything we have in plan for the future! ~reality