| 
									
										
										
										
											2017-06-03 08:26:51 +01:00
										 |  |  | # Contributing to CoreDNS
 | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | 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! | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | ## Bug Reports
 | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | First, please [search this | 
					
						
							|  |  |  | repository](https://github.com/coredns/coredns/search?q=&type=Issues&utf8=%E2%9C%93) with a variety | 
					
						
							|  |  |  | of keywords to ensure your bug is not already reported. | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | If not, [open an issue](https://github.com/coredns/coredns/issues) and answer the questions so we | 
					
						
							|  |  |  | can understand and reproduce the problematic behavior. | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2019-02-15 11:18:32 +07:00
										 |  |  | Report Bugs Effectively](https://www.chiark.greenend.org.uk/~sgtatham/bugs.html). | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | Please be kind. :smile: Remember that CoreDNS comes at no cost to you, and you're getting free help. | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | ## Minor Improvements and New Tests
 | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | Submit [pull requests](https://github.com/coredns/coredns/pulls) at any time. Make sure to write | 
					
						
							|  |  |  | tests to assert your change is working properly and is thoroughly covered. | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | ## New Features
 | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | First, please [search](https://github.com/coredns/coredns/search?q=&type=Issues&utf8=%E2%9C%93) with | 
					
						
							|  |  |  | a variety of keywords to ensure your suggestion/proposal is new. | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-12 18:24:57 +00:00
										 |  |  | Please also check for existing pull requests to see if someone is already working on this. We want | 
					
						
							|  |  |  | to avoid duplication of effort. | 
					
						
							| 
									
										
										
										
											2019-07-25 13:20:23 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-12 18:24:57 +00:00
										 |  |  | If the proposal is new and no one has opened pull request yet, you may open either an issue or a | 
					
						
							|  |  |  | pull request for discussion and feedback. | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2016-03-18 20:57:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-12 18:24:57 +00:00
										 |  |  | **If someone already opened a pull request, but you think the pull request has stalled and you would | 
					
						
							|  |  |  | like to open another pull request for the same or similar feature, get some of the maintainers (see | 
					
						
							| 
									
										
										
										
											2019-11-29 16:22:50 +00:00
										 |  |  | [CODEOWNERS](CODEOWNERS)) involved to resolve the situation and move things forward.** | 
					
						
							| 
									
										
										
										
											2019-07-25 13:20:23 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | If possible make a pull request as small as possible, or submit multiple pull request to complete a | 
					
						
							|  |  |  | feature. Smaller means: easier to understand and review. This in turn means things can be merged | 
					
						
							|  |  |  | faster. | 
					
						
							| 
									
										
										
										
											2017-06-01 11:02:47 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-28 10:02:38 +00:00
										 |  |  | ## New Plugins
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-12 18:24:57 +00:00
										 |  |  | A new plugin is (usually) about 1000 lines of Go. This includes tests and some plugin boiler plate. | 
					
						
							|  |  |  | This is a considerable amount of code and will take time to review. To prevent too much back and | 
					
						
							|  |  |  | forth it is advisable to start with the plugin's `README.md`; This will be its main documentation | 
					
						
							|  |  |  | and will help nail down the correct name of the plugin and its various config options. | 
					
						
							| 
									
										
										
										
											2019-07-28 10:02:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-12 18:24:57 +00:00
										 |  |  | From there it can work its way through the rest (`setup.go`, the `ServeDNS` handler function, etc.). | 
					
						
							|  |  |  | Doing this will help the reviewers, as each chunk of code is relatively small. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Also read [plugin.md](https://raw.githubusercontent.com/coredns/coredns/master/plugin.md) for | 
					
						
							|  |  |  | advice on how to write a plugin. | 
					
						
							| 
									
										
										
										
											2019-07-28 10:02:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-01 11:02:47 -07:00
										 |  |  | ## Updating Dependencies
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-25 14:55:26 -07:00
										 |  |  | We use [Go Modules](https://github.com/golang/go/wiki/Modules) as the tool to manage vendor dependencies. | 
					
						
							| 
									
										
										
										
											2017-06-01 11:02:47 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-25 14:55:26 -07:00
										 |  |  | Use the following to update the version of all dependencies | 
					
						
							| 
									
										
										
										
											2017-06-01 11:02:47 -07:00
										 |  |  | ```sh | 
					
						
							| 
									
										
										
										
											2019-07-25 14:55:26 -07:00
										 |  |  | $ go get -u | 
					
						
							| 
									
										
										
										
											2017-06-01 11:02:47 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | After the dependencies have been updated or added, you might run the following to | 
					
						
							| 
									
										
										
										
											2019-07-25 14:55:26 -07:00
										 |  |  | cleanup the go module files: | 
					
						
							| 
									
										
										
										
											2017-06-01 11:02:47 -07:00
										 |  |  | ```sh | 
					
						
							| 
									
										
										
										
											2019-07-25 14:55:26 -07:00
										 |  |  | $ go mod tidy | 
					
						
							| 
									
										
										
										
											2017-06-01 11:02:47 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-25 14:55:26 -07:00
										 |  |  | Please refer to [Go Modules](https://github.com/golang/go/wiki/Modules) for more details. | 
					
						
							| 
									
										
										
										
											2017-06-03 08:26:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-08 16:21:18 +00:00
										 |  |  | # Thank You
 | 
					
						
							| 
									
										
										
										
											2017-06-03 08:26:51 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | Thanks for your help! CoreDNS would not be what it is today without your contributions. |