I've been working on the pgeodns nameserver again. It's fun picking up years old code. Currently we're using it for various perl.org services to geographically distribute requests and I'm working on some new features so we can use it for that and to more carefully load balance the servers in the NTP Pool. I've been working on writing tests for
everything and since then refactoring the code to get it cleaned up while adding a few features.
It's tempting to have a generic all-purpose super flexible modular nameserver platform, so I might take a cue from qpsmtpd and make all the Real Logic be plugin driven.
For most DNS serving I use MyDNS which serves data out of MySQL, so one of my use cases would be "could I re-implement MyDNS in a plugin?".
So following that thought I'm thinking I should re-shape Net::DNS::Nameserver to be Danga::Socket based. Why? Well, so I can integrate Gearman to help do to MySQL lookups in an asynchronous fashion.
You want your nameserver to 1) Not Block and 2) Be Fast. This will accomplish 1), but not necessarily 2). We'll see which direction I go. For now I just need to add a few features ...
Update: The solution a few years later was to rewrite it in Go.