October 10, 2012
This article was contributed by Joey Hess
CIA didn't seem important until it was gone. For developers and users on
IRC networks like Freenode, CIA was just there in the background,
relaying commit messages into the channels of thousands of projects in real
time—until recently.
CIA.vc was a central clearinghouse for commit messages sent to it from
ten thousand or more version control repositories. There were CIA hooks
for subversion, git, bzr, etc, so a project just had to install
such a hook into their repository and register on the CIA website.
CIA handled the rest, collecting the commit messages as they came in and
announcing them on appropriate channels via its swarm of IRC bots. Here is
an example from the #commits channel from April:
<CIA-93> OpenWrt: [packages] fwknop: update to 2.0, use new startup commands
<CIA-93> vlc: Pierre Ynard master * r31b5fbdb6d vlc/modules/lua/libs/equalizer.c:
lua: fix memory and object leak and reset locale on error path
<CIA-93> FreeBSD: rakuco * ports/graphics/autoq3d/files/
(patch-src__cmds__cmds.cpp . patch-src__fgui__cadform.cpp):
<CIA-93> FreeBSD: Make the port build with gcc 4.6 (and possibly other compilers).
<CIA-93> gentoo: robbat2 * gentoo/xml/htdocs/proj/en/perl/outdated-cpan-packages.xml:
Automated update of outdated-cpan-packages.xml
<CIA-93> compiz-fusion: a.j.buxton master * /fusion/plugins-main/src/ezoom/ezoom.c:
For a decade, the CIA bots were part of the infrastructure of many
projects, which, along with their bug tracker, mailing lists, wiki, and
version control system, helped tie communities together.
Eric S. Raymond described the effect
of the CIA service as follows:
It makes IRC conversations among a development group more productive. It
also does something unquantifiable but good to the
coherence of the development groups that use it, and the coherence of
the open-source community as a whole — when the service was live it
was hard to watch #commits for any length of time without being
impressed and encouraged.
That stream of notifications dried up on September 26th,
when CIA.vc was shut down,
due to a miscommunication with a hosting provider. It seems there were no
backups. It is unclear if CIA will return, but there are two possible
replacements available now.
irker
Irker is a simple replacement for CIA,
that was announced just three days later.
Raymond was developing it even before CIA went down, and designed
a much different architecture than the centralized CIA service.
Irker consists of two pieces: a server that acts as a simple relay to IRC
and a
client that sends messages to be relayed. The server has no knowledge of
version control systems or commits,
and could be used to relay any sort of content. All the
version-control-specific code necessary to extract and format the message
is in the client,
which is run by a version control hook script.
The irker client and server typically both run on the same machine or LAN,
so each project or hosting service is responsible for running its own
service, rather
than relying on a centralized service like CIA.
Irker has undergone heavy development since the announcement, and is now
considered basically feature complete. Its simple and general design
is likely to lead to other things being built on top of it. For example,
there is a CIA to irker proxy
for sites that want to retain their current CIA hooks.
KGB
Although irker made a splash when CIA died, another clone has quietly been
overlooked for years. KGB was
developed by Martín Ferrari and Damyan Ivanov of the Debian project and
released in 2009.
KGB is shipped in the current Debian stable release, as well as in Ubuntu
universe, making it
easy to deploy as a
replacement for CIA.
KGB is, like irker, a decentralized client-server system.
Unlike irker's content-agnostic server, the KGB server is responsible for
formatting notifications from commit information it receives from its
clients. Though a less flexible design, this does insulate the
clients from some details of IRC, particularly from message length limits.
KGB has enjoyed a pronounced upswing in feature requests and development
since CIA went down, gaining features such as web links to commits, url
shortening, and the ability to broadcast all projects'
notifications to a channel like #commits. Developer Martín Ferrari says:
For a small project that was mainly developed and maintained for our own
use, this was quite some unexpected popularity!
Will CIA.vc return?
The CIA.vc website currently promises an attempt to
revive the service. Any attempt to do so will surely face numerous
challenges. Not least is the missing database, which configured much of
CIA's behavior. Unless a recent backup of the database is found, any
revived CIA.vc will certainly need much configuration to return it to its
past functionality.
CIA's code base, while still available,
is large and complex with many moving parts written in
different languages, is reputedly difficult to install,
and has been neglected for years. Raymond's opinion is that
"CIA suffered a complexity collapse", and
as he said:
"It is notoriously difficult to un-collapse a rubble pile".
Even if CIA does eventually return, it seems likely that many projects will
have moved away from it for good, deploying their own irker or KGB bots.
The Apache Software Foundation, KDE project, and Debian's Alioth project
hosting site have already deployed their own bots. If the larger hosting
sites like Github, Sourceforge, and Savannah follow suit, any revived CIA
may be reduced to being, at best, a third player.
Conclusion
CIA.vc was a centralized service, with code that is free software, but with
a design and implementation that did not encourage reuse. The service was
widely used by the community, which mostly seems to have put up
with its instability, its UTF-8 display bugs, its odd formatting of git
revision numbers, and its often crufty hook scripts.
According to CIA's author,
Micah Dowty, it never achieved a "critical mass of
involvement" from contributors. Perhaps CIA was not seen as
important enough to work on. But with two replacements now being developed,
there is certainly evidence of interest. Or perhaps CIA did not present itself
as a free software project, and so was instead treated as simply the
service that
it appeared to be. CIA's website featured things like a commit leaderboard
and new project list, which certainly helped entice people to use it. (Your
author must confess to occasionally trying to fit enough commits into a day to
get to the top of that leader board.) But the website did not encourage
bugs or patches to be filed.
In a way, the story of CIA mirrors the story of the version control systems
it reported on. When CIA began in 2003, centralized version control
was the norm. The Linux kernel used distributed version control only thanks
to the proprietary Bitkeeper, which itself ran a centralized commit
publication service. These choices were entirely pragmatic, and the
centralized CIA was perhaps in keeping with the times.
Much as happened with version control, the community has gone from being
reliant on a centralized service, to having a choice of
decentralized alternatives. As a result, new features
are rapidly emerging in both KGB and irker that CIA never provided. This is
certainly a healthy response to CIA's closure, but it also seems
that our many years of reliance on the centralized service held us back
from exploring the space that CIA occupied.
(
Log in to post comments)