After some soul searching and help on twitter, I settled on “CoreDNS” as a name for my Caddy fork. CoreDNS, as it is just a shell to run middleware.

The code is up on Github.com. A little warning: The zone implementation is poor, the current middleware is lightly tested, etc., etc. The one thing it does well is chaining the middleware, currently implemented:

errors:
log errors, not tested, it compiles, no idea if it actually works.
log:
same story as errors.
proxy:
proxy request to a remote server, works, although flaky (prolly).
prometheus:
metrics; works. Not tested (i.e. full scraping with Prometheus).
reflect:
reflection service whenever you query for who.<domain>. Mainly used for testing.
rewrite:
can rewrite types in the request. Lightly tested.
file:
horrendous implementation that sort of works (some of the time).
etcd:
etcd backend (ala SkyDNS): not implemented.

Also the tests don’t compile :) This seems like a large list, but it is mostly fixing the details (a proper zone implementation will take some time though). In other words:

IF YOU WANT TO HELP, THE TIME IS NOW!

And all help is welcome. I will be filing issues as soon as possible from the TODO file I compiled.