From 4670929953746a9f76d98983a1498772196fd2c7 Mon Sep 17 00:00:00 2001
From: Jeremy Stretch <jstretch@digitalocean.com>
Date: Thu, 2 Mar 2017 15:30:14 -0500
Subject: [PATCH] Added GitHub issue/PR templates; updated CONTRIBUTING policy

---
 .github/ISSUE_TEMPLATE.md        |  28 ++++++++
 .github/PULL_REQUEST_TEMPLATE.md |  14 ++++
 CONTRIBUTING.md                  | 119 +++++++++++++++++++------------
 3 files changed, 116 insertions(+), 45 deletions(-)
 create mode 100644 .github/ISSUE_TEMPLATE.md
 create mode 100644 .github/PULL_REQUEST_TEMPLATE.md

diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 000000000..dbfcf4527
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,28 @@
+<!--
+    Please note: GitHub issues are to be used only for feature requests
+    and bug reports. For installation assistance or general discussion,
+    please join us on the mailing list:
+
+        https://groups.google.com/forum/#!forum/netbox-discuss
+
+    Please indicate "bug report" or "feature request" below. Be sure to
+    search the existing set of issues (both open and closed) to see if
+    a similar issue has already been raised.
+-->
+### Issue type:
+
+<!--
+    If filing a bug, please indicate the version of Python and NetBox
+    you are running. (This is not necessary for feature requests.)
+-->
+**Python version:**
+**NetBox version:**
+
+<!--
+    If filing a bug, please record the exact steps taken to reproduce
+    the bug and any errors messages that are generated.
+
+    If filing a feature request, please precisely describe the data
+    model or workflow you would like to see implemented, and provide a
+    use case.
+-->
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..4e9185a89
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,14 @@
+<!--
+    Thank you for your interest in contributing to NetBox! Please note
+    that our contribution policy requires that a feature request or bug
+    report be opened for approval prior to filing a pull request. This
+    helps avoid wasting time and effort on something that we might not
+    be able to accept.
+
+    Please indicate the relevant feature request or bug report below.
+-->
+### Fixes:
+
+<!--
+    Please include a summary of the proposed changes below.
+-->
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0ae5beb57..2a2b14446 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,84 +1,113 @@
 ## Getting Help
 
-If you encounter any issues installing or using NetBox, try one of the following resources to get assistance. Please
-**do not** open an issue on GitHub except to report bugs or request features.
-
-### Freenode IRC
-
-Join the #netbox channel on [Freenode IRC](https://freenode.net/). You can connect to Freenode at irc.freenode.net using
-an IRC client, or you can use their [webchat client](https://webchat.freenode.net/).
+If you encounter any issues installing or using NetBox, try one of the
+following resources to get assistance. Please **do not** open a GitHub
+issue except to report bugs or request features.
 
 ### Mailing List
 
-We have established a Google Groups Mailing List for issues and general discussion. You can find us [here]( https://groups.google.com/forum/#!forum/netbox-discuss).
+We have established a Google Groups Mailing List for issues and general
+discussion. This is the best forum for obtaining assistance with NetBox
+installation. You can find us [here](https://groups.google.com/forum/#!forum/netbox-discuss).
+
+### Freenode IRC
+
+For real-time discussion, you can join the #netbox channel on [Freenode](https://freenode.net/).
+You can connect to Freenode at irc.freenode.net using an IRC client, or
+you can use their [webchat client](https://webchat.freenode.net/).
 
 ## Reporting Bugs
 
 * First, ensure that you've installed the [latest stable version](https://github.com/digitalocean/netbox/releases) of
-NetBox. If you're running an older version, it's possible that the bug has already been fixed.
+NetBox. If you're running an older version, it's possible that the bug
+has already been fixed.
 
 * Next, check the GitHub [issues list](https://github.com/digitalocean/netbox/issues) to see if the bug you've found has
-already been reported. If you think you may be experiencing a reported issue that hasn't already been resolved, please
-click "add a reaction" in the top right corner of the issue and add a thumbs up (+1). You might also want to add a
-comment describing how it's affecting your installation. This will allow us to prioritize bugs based on how many users
-are affected.
+already been reported. If you think you may be experiencing a reported
+issue that hasn't already been resolved, please click "add a reaction"
+in the top right corner of the issue and add a thumbs up (+1). You might
+also want to add a comment describing how it's affecting your
+installation. This will allow us to prioritize bugs based on how many
+users are affected.
 
-* If you haven't found an existing issue that describes your suspected bug, please inquire about it on IRC or Google Groups.
-**Do not** file an issue until you have received confirmation that it is in fact a bug. Invalid issues are very
-distracting and slow the pace at which NetBox is developed.
+* If you haven't found an existing issue that describes your suspected
+bug, please inquire about it on the mailing list. **Do not** file an
+issue until you have received confirmation that it is in fact a bug.
+Invalid issues are very distracting and slow the pace at which NetBox is
+developed.
 
-* When submitting an issue, please be as descriptive as possible. Be sure to include:
+* When submitting an issue, please be as descriptive as possible. Be
+sure to include:
 
     * The environment in which NetBox is running
-    * The exact steps that can be taken to reproduce the issue (if applicable)
-    * Any error messages returned
+    * The exact steps that can be taken to reproduce the issue (if
+      applicable)
+    * Any error messages generated
     * Screenshots (if applicable)
 
-* Keep in mind that we prioritize bugs based on their severity and how much work is required to resolve them. It may
-take some time for someone to address your issue.
+* Keep in mind that we prioritize bugs based on their severity and how
+much work is required to resolve them. It may take some time for someone
+to address your issue.
 
 ## Feature Requests
 
 * First, check the GitHub [issues list](https://github.com/digitalocean/netbox/issues) to see if the feature you're
-requesting is already listed. (Be sure to search closed issues as well, since some feature requests are rejected.) If
-the feature you'd like to see has already been requested, click "add a reaction" in the top right corner of the issue
-and add a thumbs up. This ensures that the issue has a better chance of making it onto the roadmap. Also feel free
-to add a comment with any additional justification for the feature. (However, note that comments with no substance
-other than a "+1" will be deleted as spam. Please use GitHub's reactions feature to indicate your support.)
+requesting is already listed. (Be sure to search closed issues as well,
+since some feature requests are rejected.) If the feature you'd like to
+see has already been requested, click "add a reaction" in the top right
+corner of the issue and add a thumbs up (+1). This ensures that the
+issue has a better chance of making it onto the roadmap. Also feel free
+to add a comment with any additional justification for the feature.
+(However, note that comments with no substance other than a "+1" will be
+deleted. Please use GitHub's reactions feature to indicate your
+support.)
 
-* While suggestions for new features are welcome, it's important to limit the scope of NetBox's feature set to avoid
-feature creep. For example, the following features would be firmly out of scope for NetBox:
+* While suggestions for new features are welcome, it's important to
+limit the scope of NetBox's feature set to avoid feature creep. For
+example, the following features would be firmly out of scope for NetBox:
 
     * Ticket management
     * Network state monitoring
     * Acting as a DNS server
     * Acting as an authentication server
 
-* Before filing a new feature request, propose it on IRC or Reddit first. Feedback you receive there will help validate
-and shape the proposed feature before filing a formal issue.
+* Before filing a new feature request, consider raising your idea on the
+mailing list first. Feedback you receive there will help validate and
+shape the proposed feature before filing a formal issue.
 
-* Good feature requests are very narrowly defined. Be sure to enumerate specific functionality and data schema. The more
-effort you put into writing a feature request, the better its chances are of being implemented. Overly broad feature
-requests will be closed.
+* Good feature requests are very narrowly defined. Be sure to enumerate
+specific functionality and data schema. The more effort you put into
+writing a feature request, the better its chance is of being
+implemented. Overly broad feature requests will be closed.
 
-* When submitting a feature request on GitHub, be sure to include the following:
+* When submitting a feature request on GitHub, be sure to include the
+following:
 
     * A detailed description of the proposed functionality
-    * A use case for the feature; who would use it and what value it would add to NetBox
-    * A rough description of any changes necessary to the database schema
-    * Any third-party libraries or other resources which would be involved
+    * A use case for the feature; who would use it and what value it
+      would add to NetBox
+    * A rough description of changes necessary to the database schema
+      (if applicable)
+    * Any third-party libraries or other resources which would be
+      involved
 
 ## Submitting Pull Requests
 
-* Be sure to open an issue before starting work on a pull request, and discuss your idea with the NetBox maintainers
-before beginning work​. This will help prevent wasting time on something that might we might not be able to implement.
-When suggesting a new feature, also make sure it won't conflict with any work that's already in progress.
+* Be sure to open an issue before starting work on a pull request, and
+discuss your idea with the NetBox maintainers before beginning work​.
+This will help prevent wasting time on something that might we might not
+be able to implement. When suggesting a new feature, also make sure it
+won't conflict with any work that's already in progress.
 
-* When submitting a pull request, please be sure to work off of the `develop` branch, rather than `master`. In NetBox,
-the `develop` branch is used for ongoing development, while `master` is used for tagging new stable releases.
+* When submitting a pull request, please be sure to work off of the
+`develop` branch, rather than `master`. In NetBox, the `develop` branch
+is used for ongoing development, while `master` is used for tagging new
+stable releases.
 
-* All code submissions should meet the following criteria (CI will enforce these checks):
+* All code submissions should meet the following criteria (CI will
+enforce these checks):
 
     * Python syntax is valid
-    * All tests pass when run with `./manage.py test netbox/`
-    * PEP 8 compliance is enforced, with the exception that lines may be greater than 80 characters in length
+    * All tests pass when run with `./manage.py test`
+    * PEP 8 compliance is enforced, with the exception that lines may be
+      greater than 80 characters in length