Home | History | Annotate | Line # | Download | only in dist
CONTRIBUTING.md revision 1.1
      1 <!--
      2  - Copyright (C) Internet Systems Consortium, Inc. ("ISC")
      3  -
      4  - This Source Code Form is subject to the terms of the Mozilla Public
      5  - License, v. 2.0. If a copy of the MPL was not distributed with this
      6  - file, You can obtain one at http://mozilla.org/MPL/2.0/.
      7  -
      8  - See the COPYRIGHT file distributed with this work for additional
      9  - information regarding copyright ownership.
     10 -->
     11 ## BIND Source Access and Contributor Guidelines
     12 *Feb 22, 2018*
     13 
     14 ### Contents
     15 
     16 1. [Access to source code](#access)
     17 1. [Reporting bugs](#bugs)
     18 1. [Contributing code](#contrib)
     19 
     20 ### Introduction
     21 
     22 Thank you for using BIND!
     23 
     24 BIND is open source software that implements the Domain Name System (DNS)
     25 protocols for the Internet. It is a reference implementation of those
     26 protocols, but it is also production-grade software, suitable for use in
     27 high-volume and high-reliability applications.  It is by far the most
     28 widely used DNS software, providing a robust and stable platform on top of
     29 which organizations can build distributed computing systems with the
     30 knowledge that those systems are fully compliant with published DNS
     31 standards.
     32 
     33 BIND is and will always remain free and openly available.  It can be
     34 used and modified in any way by anyone.
     35 
     36 BIND is maintained by the [Internet Systems Consortium](https://www.isc.org),
     37 a public-benefit 501(c)(3) nonprofit, using a "managed open source" approach:
     38 anyone can see the source, but only ISC employees have commit access.
     39 Until recently, the source could only be seen once ISC had published
     40 a release: read access to the source repository was restricted just
     41 as commit access was.  That's now changing, with the opening of a
     42 public git mirror to the BIND source tree (see below).
     43 
     44 ### <a name="access"></a>Access to source code
     45 
     46 Public BIND releases are always available from the
     47 [ISC FTP site](ftp://ftp.isc.org/isc/bind9).
     48 
     49 A public-access GIT repository is also available at
     50 [https://gitlab.isc.org](https://gitlab.isc.org).
     51 This repository is a mirror, updated several times per day, of the
     52 source repository maintained by ISC.  It contains all the public release
     53 branches; upcoming releases can be viewed in their current state at any
     54 time.  It does *not* contain development branches or unreviewed work in
     55 progress.  Commits which address security vulnerablilities are withheld
     56 until after public disclosure.
     57 
     58 You can browse the source online via
     59 [https://gitlab.isc.org/isc-projects/bind9](https://gitlab.isc.org/isc-projects/bind9)
     60 
     61 To clone the repository, use:
     62 
     63 >       $ git clone https://gitlab.isc.org/isc-projects/bind9.git
     64 
     65 Release branch names are of the form `v9_X`, where X represents the second
     66 number in the BIND 9 version number.  So, to check out the BIND 9.12
     67 branch, use:
     68 
     69 >       $ git checkout v9_12
     70 
     71 Whenever a branch is ready for publication, a tag will be placed of the
     72 form `v9_X_Y`.  The 9.12.0 release, for instance, is tagged as `v9_12_0`.
     73 
     74 The branch in which the next major release is being developed is called
     75 `master`.
     76 
     77 ### <a name="bugs"></a>Reporting bugs
     78 
     79 Reports of flaws in the BIND package, including software bugs, errors
     80 in the documentation, missing files in the tarball, suggested changes
     81 or requests for new features, etc, can be filed using
     82 [https://gitlab.isc.org/isc-projects/bind9/issues](https://gitlab.isc.org/isc-projects/bind9/issues).
     83 
     84 Due to a large ticket backlog, we are sometimes slow to respond,
     85 especially if a bug is cosmetic or if a feature request is vague or
     86 low in priority, but we will try at least to acknowledge legitimate
     87 bug reports within a week.
     88 
     89 ISC's ticketing system is publicly readable; however, you must have
     90 an account to file a new issue. You can either register locally or
     91 use credentials from an existing account at GitHub, GitLab, Google,
     92 Twitter, or Facebook.
     93 
     94 ### Reporting possible security issues
     95 If you think you may be seeing a potential security vulnerability in BIND
     96 (for example, a crash with REQUIRE, INSIST, or ASSERT failure), please
     97 report it immediately by emailing to security-officer (a] isc.org. Plain-text
     98 e-mail is not a secure choice for communications concerning undisclosed
     99 security issues so please encrypt your communications to us if possible,
    100 using the [ISC Security Officer public key](https://www.isc.org/downloads/software-support-policy/openpgp-key/).
    101 
    102 Do not discuss undisclosed security vulnerabilites on any public mailing list.
    103 ISC has a long history of handling reported vulnerabilities promptly and
    104 effectively and we respect and acknowledge responsible reporters.
    105 
    106 ISC's Security Vulnerability Disclosure Policy is documented at [https://kb.isc.org/article/AA-00861/0](https://kb.isc.org/article/AA-00861/0).
    107 
    108 If you have a crash, you may want to consult
    109 [What to do if your BIND or DHCP server has crashed.](https://kb.isc.org/article/AA-00340/89/What-to-do-if-your-BIND-or-DHCP-server-has-crashed.html)
    110 
    111 ### <a name="bugs"></a>Contributing code
    112 
    113 BIND is licensed under the
    114 [Mozilla Public License 2.0](http://www.isc.org/downloads/software-support-policy/isc-license/).
    115 Earier versions (BIND 9.10 and earlier) were licensed under the [ISC License](http://www.isc.org/downloads/software-support-policy/isc-license/)
    116 
    117 ISC does not require an explicit copyright assignment for patch
    118 contributions.  However, by submitting a patch to ISC, you implicitly
    119 certify that you are the author of the code, that you intend to reliquish
    120 exclusive copyright, and that you grant permission to publish your work
    121 under the open source license used for the BIND version(s) to which your
    122 patch will be applied.
    123 
    124 #### <a name="bind"></a>BIND code
    125 
    126 Patches for BIND may be submitted directly via merge requests in
    127 [ISC's Gitlab](https://gitlab.isc.org/isc-projects/bind9/) source
    128 repository for BIND.
    129 
    130 Patches can also be submitted as diffs against a specific version of
    131 BIND -- preferably the current top of the `master` branch.  Diffs may
    132 be generated using either `git format-patch` or `git diff`.
    133 
    134 Those wanting to write code for BIND may be interested in the
    135 [developer information](doc/dev/dev.md) page, which includes information
    136 about BIND design and coding practices, including discussion of internal
    137 APIs and overall system architecture.  (This is a work in progress, and
    138 still quite preliminary.)
    139 
    140 Every patch submitted will be reviewed by ISC engineers following our
    141 [code review process](doc/dev/dev.md#reviews) before it is merged.
    142 
    143 It may take considerable time to review patch submissions, especially if
    144 they don't meet ISC style and quality guidelines.  If a patch is a good
    145 idea, we can and will do additional work to bring it up to par, but if
    146 we're busy with other work, it may take us a long time to get to it.
    147 
    148 To ensure your patch is acted on as promptly as possible, please:
    149 
    150 * Try to adhere to the [BIND 9 coding style](doc/dev/style.md).
    151 * Run `make` `check` to ensure your change hasn't caused any
    152   functional regressions.
    153 * Document your work, both in the patch itself and in the
    154   accompanying email.
    155 * In patches that make non-trivial functional changes, include system
    156   tests if possible; when introducing or substantially altering a
    157   library API, include unit tests. See [Testing](doc/dev/dev.md#testing)
    158   for more information.
    159 
    160 ##### Changes to `configure`
    161 
    162 If you need to make changes to `configure`, you should not edit it
    163 directly; instead, edit `configure.in`, then run `autoconf`.  Similarly,
    164 instead of editing `config.h.in` directly, edit `configure.in` and run
    165 `autoheader`.
    166 
    167 When submitting a patch as a diff, it's fine to omit the `configure`
    168 diffs to save space.  Just send the `configure.in` diffs and we'll
    169 generate the new `configure` during the review process.
    170 
    171 ##### Documentation
    172 
    173 All functional changes should be documented. There are three types
    174 of documentation in the BIND source tree:
    175 
    176 * Man pages are kept alongside the source code for the commands
    177   they document, in files ending in `.docbook`; for example, the
    178   `named` man page is `bin/named/named.docbook`.
    179 * The *BIND 9 Administrator Reference Manual* is mostly in
    180   `doc/arm/Bv9ARM-book.xml`, plus a few other XML files that are included
    181   in it.
    182 * API documentation is in the header file describing the API, in
    183   Doxygen-formatted comments.
    184 
    185 It is not necessary to edit any documentation files other than these;
    186 all PDF, HTML, and `nroff`-format man page files will be updated
    187 automatically from the `docbook` and `XML` files after merging.
    188 
    189 Patches to improve existing documentation are also very welcome!
    190 
    191 ##### Tests
    192 
    193 BIND is a large and complex project. We rely heavily on continuous
    194 automated testing and cannot merge new code without adequate test coverage.
    195 Please see [the 'Testing' section of doc/dev/dev.md](doc/dev/dev.md#testing)
    196 for more information.
    197 
    198 #### Thanks
    199 
    200 Thank you for your interest in contributing to the ongoing development
    201 of BIND.
    202