Fetching contributors…
Cannot retrieve contributors at this time
117 lines (85 sloc) 3.95 KB

Contributing to CoreDNS

Welcome! Our community focuses on helping others and making CoreDNS the best it can be. We gladly accept contributions and encourage you to get involved!

Bug reports

First, please search this repository with a variety of keywords to ensure your bug is not already reported.

If not, open an issue and answer the questions so we can understand and reproduce the problematic behavior.

The burden is on you to convince us that it is actually a bug in CoreDNS. This is easiest to do when you write clear, concise instructions so we can reproduce the behavior (even if it seems obvious). The more detailed and specific you are, the faster we will be able to help you. Check out How to Report Bugs Effectively.

Please be kind. 😄 Remember that CoreDNS comes at no cost to you, and you're getting free help.

We are using Stable Bot to close inactive issues. If you feel an issue should not be closed you can add the "pinned" label to it or just update the bug every now and then.

Minor improvements and new tests

Submit pull requests at any time. Make sure to write tests to assert your change is working properly and is thoroughly covered.

Proposals, suggestions, ideas, new features

First, please search with a variety of keywords to ensure your suggestion/proposal is new.

If so, you may open either an issue or a pull request for discussion and feedback.

The advantage of issues is that you don't have to spend time actually implementing your idea, but you should still describe it thoroughly. The advantage of a pull request is that we can immediately see the impact the change will have on the project, what the code will look like, and how to improve it. The disadvantage of pull requests is that they are unlikely to get accepted without significant changes, or it may be rejected entirely. Don't worry, that won't happen without an open discussion first.

If you are going to spend significant time implementing code for a pull request, best to open an issue first and "claim" it and get feedback before you invest a lot of time.


If you've found a vulnerability that is serious, please email: If it's not a big deal, a pull request will probably be faster.

Git Hook

We use golint and go vet as tools to warn use about things (noted golint is obnoxious sometimes, but still helpful). Add the following script as a git post-commit in .git/hooks/post-commit and make it executable.


# <>:
# The script takes no parameters and its exit status does not affect the commit in any way.  You can
# use git # rev-parse HEAD to get the new commit’s SHA1 hash, or you can use git log -l HEAD to get
# all of its # information.

for d in *; do
    if [[ "$d" == "vendor" ]]; then
    if [[ "$d" == "logo" ]]; then
    if [[ ! -d "$d" ]]; then
    golint "$d"/...

Updating Dependencies

We use Golang's dep as the tool to manage vendor dependencies. The tool could be obtained through:

$ go get -u

Use the following to update the locked versions of all dependencies

$ make dep-ensure

To add a dependency to the project, you might run

$ dep ensure

After the dependencies have been updated or added, you might run the following to prune vendored packages:

$ dep prune

Please refer to Golang's dep for more details.

Thank you

Thanks for your help! CoreDNS would not be what it is today without your contributions.