irker takes off like a rocket
<p>It was just three days ago that I shipped irker 1.0, but the project is already a huge hit out there in hackerland.  It&#8217;s clear from traffic on the freenode #commits channel that irker installations are springing up everywhere. There&#8217;s already one symbiote, a proxy that takes XML-RPC requests in the CIA format and passes them to an irker instance (you have to supply your own mapping of projects to IRC channels for it to use). And at least one custom hook already written and in production &#8211; by the Python development list, as it happens.</p>
<p>I&#8217;m a bit boggled, actually.  I don&#8217;t think I&#8217;ve ever had a project go from launch to all over the freakin&#8217; landscape this fast before.  Guess that&#8217;ll happen when you step up with a clean replacement for a service that lots of people were habituated to and have suddenly lost.</p>
<p>There&#8217;s more work to be done, of course.  (There&#8217;s a <a href="https://gitorious.org/irker/irker">public repository</a>, and an <a href="irc://freenode/irker">#irker IRC channel</a>, for people interested in following development.)</p>
<p><span id="more-4624"></span></p>
<p>A&#038;D regular Daniel Franke did a really good security-vulnerability analysis, which I&#8217;ve expanded on and is now <a href="https://gitorious.org/irker/irker/blobs/master/security.txt">in the repository</a>.  Launching from that I just added some DoS prevention to the code.</p>
<p>The repo hook component needs work as well (this is the Python script you make your repository&#8217;s post-commit hook call in order to generate a notification).  At present it has support for git and Subversion; it could support Mercurial, CVS, and other version-control systems as well.  An important feature of the code is that the VCS-dependent stuff lives in extractor classes well separated from the generic stuff; thus, adding support for more VCSes will be easy when someone steps up to do it.</p>
<p>I&#8217;m also a little worried about the multithreading &#8211; a technique I normally fight shy of because it&#8217;s so prone to subtle race conditions, but it had to be done here.  It seems to work, but&#8230;if any of you reading have experience at reviewing this kind of design, please critique mercilessly.</p>
<p>We&#8217;ve had one annoying deployment issue.  Some people have been reporting irker crashes on session disconnect due to a bug in the stale version of irclib up on SourceForge.  The actual project home has moved to PyPI, the Python Package Index, but the maintainer hasn&#8217;t gotten around to updating his documentation and web pages yet.  If you want to run this code, get the <a href="http://pypi.python.org/pypi/irc/3.0.1">PyPI version of the IRC library</a> to do it with.</p>
<p>But, these relatively minor issues aside&#8230;three cheers for classic Unix minimalism!  Total LOC of the codebase is just 503 lines exclusive of comments.  I chased St. Exup&eacute;ry&#8217;s definition of perfection (&#8220;&#8230;when there is nothing left to take away.&#8221;) pretty hard this time, and it seems to have worked out well.</p>
<p>UPDATE: I just shipped 1.2.</p>
