xref: /netbsd-src/external/mpl/bind/dist/CONTRIBUTING.md (revision 9dc0bb4cc688e21ede7c5dc70e8e7f007735d600)
1<!--
2Copyright (C) Internet Systems Consortium, Inc. ("ISC")
3
4SPDX-License-Identifier: MPL-2.0
5
6This Source Code Form is subject to the terms of the Mozilla Public
7License, v. 2.0.  If a copy of the MPL was not distributed with this
8file, you can obtain one at https://mozilla.org/MPL/2.0/.
9
10See the COPYRIGHT file distributed with this work for additional
11information regarding copyright ownership.
12-->
13## BIND 9 Source Access and Contributor Guidelines
14*May 28, 2020*
15
16### Contents
17
181. [Access to source code](#access)
191. [Reporting bugs](#bugs)
201. [Contributing code](#contrib)
21
22### Introduction
23
24Thank you for using BIND 9!
25
26BIND is open source software that implements the Domain Name System (DNS)
27protocols for the Internet. It is a reference implementation of those
28protocols, but it is also production-grade software, suitable for use in
29high-volume and high-reliability applications.  It is very
30widely used DNS software, providing a robust and stable platform on top of
31which organizations can build distributed computing systems with the
32knowledge that those systems are fully compliant with published DNS
33standards.
34
35BIND is and will always remain free and openly available.  It can be
36used and modified in any way by anyone.
37
38BIND is maintained by [Internet Systems Consortium](https://www.isc.org),
39a public-benefit 501(c)(3) nonprofit, using a "managed open source" approach:
40anyone can see the source, but only ISC employees have commit access.
41In the past, the source could only be seen once ISC had published
42a release; read access to the source repository was restricted just
43as commit access was.  That has changed, as ISC now provides a
44public git repository of the BIND source tree (see below).
45
46At ISC, we're committed to
47building communities that are welcoming and inclusive: environments where people
48are encouraged to share ideas, treat each other with respect, and collaborate
49towards the best solutions. To reinforce our commitment, ISC
50has adopted a slightly modified version of the Django
51[Code of Conduct](https://gitlab.isc.org/isc-projects/bind9/-/blob/main/CODE_OF_CONDUCT.md)
52for the BIND 9 project, as well as for the conduct of our developers throughout
53the industry.
54
55### <a name="access"></a>Access to source code
56
57Public BIND releases are always available from the
58[ISC FTP site](ftp://ftp.isc.org/isc/bind9).
59
60A public-access git repository is also available at
61[https://gitlab.isc.org](https://gitlab.isc.org).  This repository
62contains all public release branches. Upcoming releases can be viewed in
63their current state at any time.  Short-lived development branches
64contain unreviewed work in progress.  Commits which address security
65vulnerablilities are withheld until after public disclosure.
66
67You can browse the source online via
68[https://gitlab.isc.org/isc-projects/bind9](https://gitlab.isc.org/isc-projects/bind9)
69
70To clone the repository, use:
71
72>       $ git clone https://gitlab.isc.org/isc-projects/bind9.git
73
74Release branch names are of the form `bind-9.X`, where X represents the second
75number in the BIND 9 version number.  So, to check out the BIND 9.18
76branch, use:
77
78>       $ git checkout bind-9.18
79
80Whenever a branch is ready for publication, a tag is placed of the
81form `v9.X.Y`.  The 9.18.0 release, for instance, is tagged as `v9.18.0`.
82
83The branch in which the next major release is being developed is called
84`main`.
85
86### <a name="bugs"></a>Reporting bugs
87
88Reports of flaws in the BIND package, including software bugs, errors
89in the documentation, missing files in the tarball, suggested changes
90or requests for new features, etc., can be filed using
91[https://gitlab.isc.org/isc-projects/bind9/issues](https://gitlab.isc.org/isc-projects/bind9/issues).
92
93Due to a large ticket backlog, we are sometimes slow to respond,
94especially if a bug is cosmetic or if a feature request is vague or
95low in priority, but we try at least to acknowledge legitimate
96bug reports within a week.
97
98ISC's GitLab system is publicly readable; however, you must have
99an account to create a new issue. You can either register locally or
100use credentials from an existing account at GitHub, GitLab, Google,
101Twitter, or Facebook.
102
103### Reporting possible security issues
104
105See `SECURITY.md`.
106
107### <a name="contrib"></a>Contributing code
108
109BIND is licensed under the
110[Mozilla Public License 2.0](https://www.mozilla.org/en-US/MPL/2.0/).
111Earlier versions (BIND 9.10 and earlier) were licensed under the
112[ISC License](https://www.isc.org/licenses/)
113
114ISC does not require an explicit copyright assignment for patch
115contributions.  However, by submitting a patch to ISC, you implicitly
116certify that you are the author of the code, that you intend to relinquish
117exclusive copyright, and that you grant permission to publish your work
118under the open source license used for the BIND version(s) to which your
119patch will be applied.
120
121#### <a name="bind"></a>BIND code
122
123Patches for BIND may be submitted directly via merge requests in
124[ISC's GitLab](https://gitlab.isc.org/isc-projects/bind9/) source
125repository for BIND.
126
127Patches can also be submitted as diffs against a specific version of
128BIND -- preferably the current top of the `main` branch.  Diffs may
129be generated using either `git format-patch` or `git diff`.
130
131Those wanting to write code for BIND may be interested in the
132[developer information](doc/dev/dev.md) page, which includes information
133about BIND design and coding practices, including discussion of internal
134APIs and overall system architecture.
135
136Every patch submitted is reviewed by ISC engineers following our
137[code review process](doc/dev/dev.md#reviews) before it is merged.
138
139It may take considerable time to review patch submissions, especially if
140they don't meet ISC style and quality guidelines.  If a patch is a good
141idea, we can and will do additional work to bring it up to par, but if
142we're busy with other work, it may take us a long time to get to it.
143
144To ensure your patch is acted on as promptly as possible, please:
145
146* Try to adhere to the [BIND 9 coding style](doc/dev/style.md).
147* Run `make check` to ensure your change hasn't caused any
148  functional regressions.
149* Document your work, both in the patch itself and in the
150  accompanying email.
151* In patches that make non-trivial functional changes, include system
152  tests if possible; when introducing or substantially altering a
153  library API, include unit tests. See [Testing](doc/dev/dev.md#testing)
154  for more information.
155
156##### Changes to `configure`
157
158If you need to make changes to `configure`, you should not edit it
159directly; instead, edit `configure.in`, then run `autoconf`.  Similarly,
160instead of editing `config.h.in` directly, edit `configure.in` and run
161`autoheader`.
162
163When submitting a patch as a diff, it's fine to omit the `configure`
164diffs to save space.  Just send the `configure.in` diffs and we'll
165generate the new `configure` during the review process.
166
167##### Documentation
168
169All functional changes should be documented. There are three types
170of documentation in the BIND source tree:
171
172* Man pages are kept alongside the source code for the commands
173  they document, in files ending in `.rst`: for example, the
174  `named` man page is `bin/named/named.rst`.
175* The *BIND 9 Administrator Reference Manual* is in the .rst files in
176  `doc/arm/`; the PDF and HTML versions are automatically generated from
177  the `.rst` files.
178* API documentation is in the header file describing the API, in
179  Doxygen-formatted comments.
180
181Patches to improve existing documentation are also very welcome!
182
183##### Tests
184
185BIND is a large and complex project. We rely heavily on continuous
186automated testing and cannot merge new code without adequate test coverage.
187Please see [the "Testing" section of doc/dev/dev.md](doc/dev/dev.md#testing)
188for more information.
189
190#### Thanks
191
192Thank you for your interest in contributing to the ongoing development
193of BIND 9.
194