Day 3: 17 April 2013

Morning (Joint DHCP/DNS Session)

Splitting BIND 10 DNS and BIND 10 DHCP

Have had an occasion where BIND 10 DNS release was delayed because of DHCP issue. Ideally we want to split. In addition, Packagers (e.g. Debian) also want the components plit.

Suggestion: three packages -

  • Core (binary/libraries)
  • DHCP (binary/libraries)
  • DNS (binary/libraries)

Currently there are dependencies:

Core libraries <--- DNS Libraries <--- DNS Binaries
       ^            ^  ^
       |            |  |
DHCP libraries------+  |
       |               |
       |               |
DHCP Binaries ---------+

Suggestion: Put all libraries in one module. However, this means that changing e.g. DNS changes library.

Suggestion: One fat tarball - specify what you need to compile? (Not popular - we don't ship libraries such as libxml).

Repository structure: suggestion to have separate repositories. But does this break the links between commits if e.g. an update changes both a library and the DNS executable?

Suggestion: split into separate branches within git for a particular release. However, this leads to problems with a release of e.g. being delayed until a fix is available for a bug in DHCP is fixed.

Suggestion: Single repository. "make dist-dns" produces tarball for DNS, "make dist-dhcp" is separate tarball for DHCP etc.

Suggestion: first step is to split the compilation. Build core, dns and dhcp separately. We will need to do that anyway,.

Discussion about library version numbers. With some packages, libraries do one thing and one thing only. Unlikely to break binary compatibility. With BIND, library does a lot of things, and different versions can have huge changes.

Recap of discussion

Jeremy: Apache allows you to build all or some of the modules. We can do the same thing: we pick and choose what components we want to install. This is a first step.

Stephen: install separate libraries for each product (multiple versions of the library). Doesn't work because of header file issues. Q: how about separating out the development software and allowing the installation of multiple versions of the header files?

Evan: concerned about interaction with packaging of the different operating systems. Concerned that our libraries don't do primitives - do significant amounts of work and this could cause problems. Need to make sure that libraries and releases have a 1:1 correspondence. Suggest we set up requirements for what we want.

Principle: maintain backwards compatibility. However, at the moment we change compatibility frequently. This has an impact on the versioning.


  • Stephen/Shane dump requirements on Jeremy.


  • X11R7 is a list of dependencies and versions. Have a dedicated team updating requirements.
  • For BIND 9, there are 17 tarballs/year. More for DHCP. And even more for BIND 10. Lots of work for Jeremy.
  • Build farm has reached its limit. Need to add more VMs (not fast enough to keep up).

But... we need to do this.

Last modified 5 years ago Last modified on Apr 17, 2013, 6:28:03 PM