: Blog

CIA in moderation

Published on Monday, August 27, 2007

Overzealous bots

Christel of Freenode fame just posted a blog entry on the annoying retry-on-ban behaviour of CIA bots. It has some hints for Freenode users who find a rogue CIA bot in their channel. Banning the bot will cause it to periodically attempt re-joining. Quieting the bot (+q) and/or removing it using CIA's web interface are the recommended immediate solutions.

This is a long standing bug in CIA's bot daemon. It has a strong self-preservation instinct. If an action it attempts times out, it will retry. If it detects that it isn't in the channels it expects to be in, it will try to correct that. These were important features in making the bot network as robust as it is now, but these features are problematic when the bot encounters some server-side feature (like a ban, a channel key, or a redirection) that it doesn't understand.

Ideally, the bots need to understand these features and report them back to the CIA messaging daemon and the web interface in a useful way. The web interface for your bot should inform you that the bot has been banned, and give you as a user the opportunity to ask it to retry.

I need your help

So, why hasn't this already been fixed? CIA is still a one-man show, and I don't have a lot of time to devote to it any more. In the four years or so since this service was first launched I graduated from college. I got a real job, a boyfriend, new hobbies. What little time I do feel like donating to CIA is often consumed by ongoing maintenance tasks: backups, cleaning up after crashes, acting as moderator, answering e-mail. There's a lot of work to do, and the backlog is growing.

I've been running CIA on my own and paying for it mostly out of my own pocket for quite a while now. I'm just concerned that this isn't sustainable. Unless more people start contributing to the project, I may be forced to discontinue it.

Part of the problem is that, while the CIA codebase is open source, CIA isn't a software project. It's a service. Open source services are much harder to manage than open source software projects. They require consistent and trustworthy dedication, and they require all developers/maintainers to share server resources.

That said, there are various roles you can take on in CIA right now that would be helpful. These range very roughly from easiest to hardest:

  • Casual supervisor.

    Keep an eye on the server, via public monitoring methods (the Bot Cloud page, for example). Make sure it's smooth and responsive, and that the IRC bots aren't being abused. Report problems to a moderator.

  • Moderator.

    Watch for abuse, especially abuse of the IRC bots. Take actions such as disabling accounts or forcibly removing bots. You will need a privileged CIA account.

  • Support Representative.

    Answer e-mail about CIA, answer people's questions on IRC. Currently all the CIA email is going directly to me, so your first task would be to set up a mailing list for CIA inquiries.

  • Planner.

    Where should CIA be going? How are people using it, and how should the project be evolving? How can we best structure the project to allow more people to contribute to its code and administration? You will need to do some research, both on the web and in CIA's codebase. You will probably want a privileged CIA account, for posting blog entries.

  • Server Admin.

    Keep the server running smoothly. You'll need to understand how the various daemons in CIA interact, and you'll be responsible for keeping the machine as a whole running smoothly. Start out by experimenting on the development VM. When you're ready, you'll need SSH access to the primary server (cia-vm1).

  • Webmaster.

    You'll be responsible for fielding feature requests and bug reports that deal with the web-based frontend for CIA. In your spare time, work on larger projects like transitioning the rest of the "old" web frontend (The front page, RSS feeds, stats pages) to run on the new system. You will be dealing mostly with the new web site codebase, which uses Django. Start this job by researching the existing CIA codebase and writing/testing patches using the development VM. When you're ready to deploy to the production server, contact a Server Admin.

  • IRC developer.

    You will need to be skilled at producing robust and scalable networked applications, and you'll need a good understanding of the IRC protocol and CIA's requirements. CIA's bot server will need to be retrofitted or replaced in order to prevent abuse and improve scalability.

  • Core developer.

    You'll need to understand the big picture of CIA's codebase, including the RPC daemon, the database, and the stats system. You should be experienced with SQL, but unafraid to get your hands dirty with lower-level data storage mechanisms when necessary. Core developers will be responsible for continued development and improvement of CIA's central message delivery and storage/retrieval mechanisms. Large projects in this arena include XMPP integration for publish/subscribe, improving scalability of the stats system, and implementing advanced message searching capabilities.

I hope this list inspires at least a few people to contribute. If you're interested, the best place to go is the #cia channel on irc.freenode.net. There is no development mailing list for CIA yet, but feel free to create one.

The best ways to contact me currently are IRC and e-mail, though I know I'm pretty far behind on dealing with CIA e-mail at the moment. (This is why the Service Representative job above is so important ;) I'll try to check my CIA mail more frequently, but the first few volunteers to join this project will need to be capable of working relatively independently. I don't know how much time I'll be able to devote to mentoring and bootstrapping. For CIA to be successful, we will need volunteers that are really motivated and passionate about the project.

Thank you all in advance for your continued interest in CIA. It is my hope that this service can continue operating far into the future with a true community of developers and admins backing it.