Miek Gieben Go DNS
5000 GitHub stargazers
179 Total contributors
~3 years Since first release
Can you tell us a bit about your background?
During my career, I've worked in various places. In light of this project, it's maybe interesting how I got involved with DNS. During my last years at uni ('round 2002), I need a project to graduate. I ended up in NLnet Labs (https://nlnetlabs.nl) to work on DNSSEC. Knowing only a few bits of DNS and nothing about DNSSEC, this was really exciting. Luckily this all worked out; I graduated and gained a lot of knowledge.
During my career, I dabbled in and out of the DNS space. I spend a few years working for Google as a site reliability engineer (SRE) in London and eventually circled back to the Netherlands, where I currently live.
Personally, I've always liked LEGO, and a few years back, I started building again. An excellent way to relax, not to sit behind a computer.
Are you currently working or have worked for a company in the past? What have been some notable achievements from your time there?
I'm currently employed as a contractor. I am currently (again) employed as an SRE (not at Google, though). This has mostly been the theme of my recent employments; make things more reliable. I can't delve too deep here, but I was on-call and administrating Google Public DNS at my Google time. So if you happen to have used that some years back, it was me making it better and more reliable.
What inspired you to start (or join) this project?
Go was just open-sourced (Nov 10, 2009), and I was looking for a new language to learn, and Go looked like a really fun one. I looked at how Go implemented interfacing with the DNS; this code looked beautiful to me, but it wasn't publicly exposed and didn't fully implement all things in the DNS.
So I forked the official Go DNS code and morphed it into what it is today - with many other folks during the years.
Basically wanted to learn Go, so I wrote a DNS library.
What's a brief description of this project?
A DNS library in Go.
What is the primary problem that this project solves?
Have an easy but compelling way to interface with the DNS from Go.
What are some of the challenges you face as a maintainer?
Mostly time constraints. I don't write a lot of code for this project anymore, so it's mostly finding the time and energy to review PRs or respond to issues.
Keeping up with new things in the DNS specification can be challenging, but the project is fairly complete, so it's reasonably quiet.
What is your vision/roadmap for the future of this project?
Following the IETF developments with the DNS standard. There is no grand vision, except we want to keep the API small and as fast as possible.
How can someone install/download this project?
You need to use the Go tooling to interface with this project. It's a library, so on its own, it doesn't do much, go get github.com/miekg/dns should be enough.
Is there a link to the documentation?
Who is the ideal user of this project? What are some use cases of using this project?
The ideal user has (some) understanding of the DNS and wants to use Go and this project to create something new.
Are there any success stories about other people or organizations using this project that you would like to share?
Let’s encrypt, CoreDNS and Istio uses this project. Many other projects use miekg/dns as a building block. In fact, I would almost say that this is the go-to DNS package in the Go ecosystem.
What is coming up in the next release?
It implements almost all DNS features that exist. Some new Resource Records are being defined, but those are relatively easy to add. When DNS gains QUIC support (this is now renamed to HTTP/3, so it's a new transport for DNS), we probably need to add a few bits.
Connection pipe-lining and re-use is also something that I'm pondering to add at some point.

About DeepSource

DeepSource is a static analysis platform that helps developers and engineering teams save time in code reviews and systematically improve code quality and security.