Congratulations on identifying one of the core technologies critical to networking and the Internet! DNS is how computers associate names with IP addresses so they can find a specific service on the Internet. Working on core infrastructure like this gives you an opportunity to have a significant impact.
We recommend that you first cruise over to the incomparable DNS for Rocket Scientists. Although we also recommend Cricket Liu's DNS and BIND, this Zytrax.com resource is still one of the most accessible and useful on the net.
Then, download, build, and install BIND and see if you can get it running. If you have gotten this far, this is a very good sign! There is an Administrative Reference Manual included with the source code, and we have an extensive series of technical articles at kb.isc.org to help.
Browse the firstname.lastname@example.org. This will give you an idea of how people are using BIND, and what problems or challenges they are facing. If you plan to proceed with a proposal, we recommend you join the list so you can also post questions.
Pick a project from the list below that sounds interesting to you. What is the essential objective: what would success look like? How would you propose to tackle the project? What do you think are the primary tasks? If you plan to complete the project in a summer, about how much time would you want to spend on each task or milestone? What are the main questions you have about how to proceed? This is the first draft of your proposal.
Send us that draft, and we will respond back with comments and advice, and probably ask you to provide more details. You are on your way to creating a good quality final proposal.
Submit your proposal (.pdf) to GSOC between March 12 - 27th.
Ideas for BIND 9 Community Projects
The ideas list below is intended to provide you with starter ideas for GSOC projects. Please feel free to propose something different, we are flexible. These are all things that would be useful, but that the core team doesn't have time to work on. Some of these projects may be a little ambitious for a GSOC project - if you want to propose something that is a little easier or less ambitious, that is fine. It is better to downscope the project and complete it than attempt something unrealistic.
BIND is under active development, with new releases issued frequently. It is not uncommon for organizations to maintain dozens of BIND servers and for some of them to be very infrequently updated. This would provide a new service for the BIND administrator, to query their BIND 9 server, which would then check (some undefined service) at ISC or the packager, and reply back whether the BIND 9 version is current and up-to-date or needs an upgrade.
The entire feature would require code committed to BIND to add the command grammar, and to implement the lookup, a design for the backend service which will reply back to the server, documentation for the feature, and outreach to the BIND User community.
Any feature that 'phones home' to get information will automatically be somewhat suspect and so development of this feature would need to be particularly transparent, and carried out with user input.
Skills required: ...
Complexity: uh, medium?
2. Implement a zone database for BIND, using the existing dyndb API.
ISPs often provide a graphical web interface for requesting and enabling new domain names for their users. They may have a very large number of very small parked or 'vanity' domains, with many new and changed domains, which are queried relatively infrequently. It is ideal to maintain these zones in a separate database, which the ISP can easily develop a provisioning front-end for. In BIND 9.11.0 we added a new api, the Dyndb api, which is designed for exactly this purpose. So far, however, the only known database implementation of the API is for the RedHat FreeIPA service. See this related GitLab issue, Refactor DLZ into a dyndb module? and Database backend for storing and managing zone files
Select a reasonably popular, easy to use and well-supported existing open source database. Ideally, contact the maintainers of this database and let them know you are planning to work on this project. Implement an appropriate schema for a BIND zone file in the database. Implement a service interface for the BIND dyndb api. Integrate the two, and verify that you can serve a zone in the database via a query to the BIND instance. Write some basic documentation on how to use the feature and any new commands required.
Post the database code somewhere it can be easily found by BIND users (we will help with this) and also submit it back to the upstream project, as appropriate and depending on the interest of the upstream maintainers.