Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dnscore: implement DNS-over-QUIC #3

Open
8 tasks
bassosimone opened this issue Dec 14, 2024 · 1 comment
Open
8 tasks

dnscore: implement DNS-over-QUIC #3

bassosimone opened this issue Dec 14, 2024 · 1 comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@bassosimone
Copy link
Member

bassosimone commented Dec 14, 2024

Overview This issue is about adding support for DNS-over-QUIC (DoQ) in the dnscore library. The goal is to enable users to perform DNS queries over QUIC using dnscore's transport and high-level APIs. In turn, this feature will be exposed to the rbmk dig tool, allowing users to perform DNS-over-QUIC queries from the command line.

Open to contributors! I currently do not have time myself to work on this issue right now, so, please, let me know if you would like to take on this task. I am willing to provide feedback, guidance, and support to land this new feature.

Proposed Activities I believe we should proceed as follows:

This is the general idea of how I think we should proceed, but obviously we will adapt this plan as we go, if new information and reckonings come up.

Work Style

  • We encourage incremental development through multiple PRs

    • Each task above can be split into smaller, focused PRs
    • Early functionality can be merged while work continues
    • Example progression:
      1. Initial discussion over here sketching out a plan
      2. Basic QUIC connection handling
      3. DNS protocol integration
      4. Structured logging implementation
      5. Test coverage expansion
      6. CLI integration
  • All code changes eventually require:

    • Unit tests following existing patterns (see dotls_test.go, dohttps_test.go)
    • Documentation updates (both code and design docs)
    • Spec updates where relevant
    • Passing CI checks
    • Following Go style guidelines
  • Consider using a draft PRs for early feedback and discussion

    • Share initial design thoughts and research findings
    • Discuss QUIC library selection and integration approach
    • Get feedback on implementation direction
    • Early reviews help avoid major refactoring later
  • If your code is derived work from someone else's code, reference the original source code explicitly

  • Always include a SPDX-License-Identifier (and use GPL-3.0-or-later for new code)

Expected Outcomes I would say:

  1. dnscore includes DoQ support
  2. the DoQ code is fully tested
  3. the dnscoretest includes DoQ support
  4. the internal/cmd/transport/ command includes DoQ support
  5. we have updated all the relevant docs
  6. we have released a new version of dnscore including DoQ
  7. the rbmk dig tool supports DoQ

Prerequisites I think:

Getting Started

  1. Comment on this issue expressing interest
  2. Fork the repository and set up your development environment
  3. Read through the dnscore design doc and the already-existing dnscore protocol implementations
  4. Create a draft PR early to discuss implementation approach
  5. Full development documentation is not available yet, but I will be working on this to facilitate future work

Communications The RBMK and dnscore projects are hobby projects for me, at the moment, so expect some delays in communication. I will try to be as responsive as possible, but please be patient. I am available to discuss on GitHub issues and pull requests, and I am also available via Matrix as @bassosimone:matrix.org.

@bassosimone bassosimone added documentation Improvements or additions to documentation enhancement New feature or request help wanted Extra attention is needed labels Dec 14, 2024
@bassosimone
Copy link
Member Author

Being worked on at rbmk-project/dnscore#18

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant