: Documentation

Inside CIA

Details

How does CIA work?

Every project that is 'connected' to CIA has some way of representing its commit messages, bug tracker updates, or other messages in XML. The CIA project defines a format that these messages must adhere to. The messages are then delivered to CIA using XML-RPC or e-mail.

The best method of creating and delivering messages for CIA, and the method most projects use, is to install a client script in the project's version control system. This isn't the only way of course. Several projects are connected to CIA using scripts that read mailing lists and convert the messages therein to CIA's format. Projects that have been connected to CIA for a while and haven't upgraded their clients might also be using an older non-XML format that has been retrospectively named colorText.

Once these messages arrive at the CIA server's message hub, they are then filtered and formatted using rulesets and dispatched via URIs. Currently CIA has URI handlers for the online stats system, IRC bots, and XML-RPC delivery.

CIA is Free Software, licensed under the GNU GPL. The source is available from a Subversion repository, and CIA even tracks changes to its own codebase.

History

  • May 23, 2003

    CIA started out as a simple bot hacked together by Micah Dowty in an afternoon to monitor commit messages for the PicoGUI project. Lalo Martins came up with the name "CIA" to refer to this IRC bot: PicoGUI is hosted in Subversion, and the bot was a brainless entity designed to keep an eye on subversion :)

  • June 1, 2003

    About a week later, Mike Hearn suggested expanding it to work with other projects, displaying them all in one channel in addition to the project's home channel. After a morning of quick hacking, #commits on Freenode was born. Popularity grew almost instantly.

    You can now get an IRC log detailing the first 24 hours of CIA's life in #commits.

    Micah stepped into the shadows for a while. Mike maintained CIA, but the code remained stagnant. It was a quick hack, so incremental changes just made it messier. It needed a rewrite.

  • December 13, 2003

    Micah finally gets the motivation to rewrite CIA, bringing you what you see here. Development has been ongoing, improving CIA's usefulness and reliability.

  • January 20, 2004

    CIA moves from Navi, a server in Micah's living room on two DSL lines, to a much nicer server provided by the PLD Linux project and Sergiusz Pawlowicz.

  • January 17, 2005

    CIA moves again to a dedicated Linode server, http://flapjack.navi.cx

  • February 4, 2006

    After more than a year and plenty of CPU and I/O performance headaches, CIA moves to a dedicated virtual machine on a much faster dedicated server.

  • January 17, 2007

    The "Your Account" section of this site goes live. This is finally a self-service interface for editing CIA bots. This is also a major step in CIA's continued transition from a monolithic Twisted-based server to separate web interface and backend daemons. This new area of the web site is the first to use Django.

Brought to you by...

CIA is written and maintained by Micah Dowty.

CIA makes extensive use of many fine open source projects, including Python, Django, Twisted, Procmail, MySQL, Subversion, Pound, Lighttpd, and Linux.

CIA uses open standards, including XHTML, CSS2, and XML-RPC.