During the last week of October, the BIND 10 team got together in ISC’s offices to work in the same room for an entire week. Besides a lot of discussions where we could make use of the high bandwidth of having everybody together in the same room, there were coding sessions. The goal for the week: get something running. What exactly hadn’t been specified in advance yet, and that was the topic of the first discussion.
Work on BIND10 had officially started a while ago, and most of the work so far had been either on experiments or on general design ideas. No code that was fully intended to end up in 10 had been written yet (although some of the experiments will probably), except for a partial DNS name and packet API.
The idea for each day was to have general discussions in the morning, and work on writing code and specific smaller discussions during the afternoon (and in some cases, in the evening, at night, and the next morning in the jetlag-enforced couple of hours before it was officially morning again).
Some concepts for BIND 10 had been decided on, and this was a great opportunity to try and get something together that would incorporate all the different components that we were planning on having for the framework; a messaging channel, a ‘boss’ process, a configuration store, a front-end, and of course something that actually talks DNS.
Throwing together a full authoritative server seemed a bit much, so we decided to settle on something simpler: ParkingLot, a simple tool to serve fake DNS data for any zone that would be configured. The requirements: it should serve (fixed) NS records for any configured zone, it should have a command-line tool for zone addition and removal, adding and removing zones should happen ‘live’ (i.e. immediately, without restarting), and the served
zones should be persistent if the server is stopped and started again at a later time.
This set of requirements would encompass all the components mentioned above, and after deciding on what pieces were still missing there, work commenced.
By Friday we had a working prototype, available in the repository tagged as f2f_2009_10. Success was declared, and much happiness ensued.
This concludes the first phase; the design of the general framework. There is still a lot of work to be done, but with the running prototype, we have something tangible to work with.
On to the next phase!