|
|
Subscribe / Log in / New account

CIA.vc shuts down

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.


Index entries for this article
GuestArticlesHess, Joey


to post comments

CIA.vc shuts down

Posted Oct 11, 2012 1:26 UTC (Thu) by Comet (subscriber, #11646) [Link]

The usual architecture these days is to use WebHooks, POSTing, usually JSON, via a REST API to a server when some event happens. Each emitter of events can define their native format, and services can act as a gateway to convert the payload into, eg, an IRC message.

Services like GitHub may not be open source, but are used by a number of projects, and their admin panel lets you not just post GH's native format to an arbitrary endpoint you specify, but has a large library of pre-canned end-points, where the content is massaged automatically and the repo owner just needs to provide a couple of variables.

Using GitHub as an example again, there's already native IRC support for posting commit events to a channel. The hooks themselves are open source.

Ideally, we'd be able to have pushes from our main repo, which get auto-synced to GitHub, trigger the hooks, so we wouldn't even need to switch to GitHub as the main repository, but just use it as part of a pipeline for notification. At present, I think the pushes need to be done directly to GitHub.

CIA.vc code

Posted Oct 11, 2012 7:45 UTC (Thu) by jnareb (subscriber, #46500) [Link]

In addition to CIA.vc database being lost, I have heard that it used unhealthy development model of making changes directly to production; the source code that is available is not the code hat ran CIA.vc

CIA.vc shuts down

Posted Oct 11, 2012 8:40 UTC (Thu) by djc (subscriber, #56880) [Link] (6 responses)

It's pretty amazing to me that people would actually switch TO a system using SOAP, which is apparently what KGB uses for their API.

CIA.vc shuts down

Posted Oct 11, 2012 10:34 UTC (Thu) by jnareb (subscriber, #46500) [Link] (4 responses)

> It's pretty amazing to me that people would actually switch TO a system using SOAP, which is apparently what KGB uses for their API.

Nb. CIA.vc used XML-RPC, which is not much better. irker uses JSON.

CIA.vc shuts down

Posted Oct 11, 2012 10:41 UTC (Thu) by djc (subscriber, #56880) [Link] (3 responses)

Are you actually familiar with XML-RPC and SOAP? There's a world of difference in the complexity between the two.

CIA.vc shuts down

Posted Oct 12, 2012 3:15 UTC (Fri) by bronson (subscriber, #4806) [Link] (2 responses)

CIA.vc shuts down

Posted Oct 12, 2012 11:49 UTC (Fri) by njwhite (guest, #51848) [Link] (1 responses)

Aah, rereading that makes me delighted to no longer be working anywhere near such silliness.

...simple.

Posted Oct 18, 2012 13:17 UTC (Thu) by gvy (guest, #11981) [Link]

It's not just silliness, it's worse than failure...

CIA.vc shuts down

Posted Oct 11, 2012 15:37 UTC (Thu) by joey (guest, #328) [Link]

KGB is switching to JSON actually. Although a typical deployment has a very fast network between the bot and client (probably on the same server), so SOAP's bloat doesn't seem too important.

CIA.vc shuts down

Posted Oct 18, 2012 8:07 UTC (Thu) by ledow (guest, #11753) [Link]

No backup. No sympathy.

Having a horrendous codebase is a problem that will only hurt those people who maintain it. Having no backups hurts every user of the system, and is easily and quickly resolved at zero cost (i.e. primary developer takes the opportunity once a month to run fsarchiver or similar and dump the whole machine image to his personal PC - hey presto, backup! Not enterprise scale but a damn sight better than "we have nothing").


Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds