python rwhoisd


Back in 2003, as an exercise to help me learn Python, I wrote python-rwhoisd. Why an RWhois server? I had been the main developer and sole maintainer of the C reference version since 1996, and I had been thinking about writing a replacement in a nicer language ever since. So I pretty familiar with the protocol and problem space, and it was complicated enough to be able to sink your teeth into it, yet not so hard that you couldn’t do it fairly quickly. Basically, a great learning project.

Back then, I wanted this project to be unquestionably mine. I was paranoid enough to believe that if I used any of my employer’s equipment, network access, or time that my employer might claim ownership. Why they would want to is anyone’s guess.

So I was very careful to only work on python-rwhoisd at home, on my own time, on my own equipment. The initial version took me two weeks of nights and weekends. Hm. That makes it sound like I was furiously coding into the wee hours. I was actually only spending a few hours each day on it.

Python was a joy to use. My day job was in Java (and Perl) and it felt extremely liberating to be able to write so much code with so little typing. My favorite part was discovering that as I learned more about Python, my code kept getting smaller without getting less readable. Amazing!

Even though I had basically just written python-rwhoisd to learn a new programming language, I was planning on releasing it. I didn’t think that many folks would want it. RWhois wasn’t (and still isn’t) a popular protocol. But some of my colleagues were evangelizing IRIS at the time, and urged me to not release. They thought that it would muddy the waters, so to speak. So I didn’t release it, and then I basically forgot about it.

Fast forward five years. Just two weeks ago I suddenly wanted to learn how to use Git. I played around with tutorial-like git repositories, but it wasn’t enough. I needed something real to work on. I was casting about for a project that I could use, and I ran across python-rwhoisd, mouldering in a local CVS repository.

I had things that I thought should be improved about python-rwhoisd before attempting to release it again. The main thing was to add IPv6 indexing support, which I had done for the C version several years before. While this wasn’t a perfect project for learning Git in all of its glory (for that, I would need collaborators to merge with), it was good enough. Several days later, I’d added the IPv6 indexing and search support, and it was time to release it.

While I don’t expect there to be any major outpouring of interest over python-rwhoisd, it still should be easier to run than the C version (at least, for small datasets), and it should be possible to get it working on Windows without too much effort.

Get it here.