Bug and Requests
================

If you spot a problem with PyDM, please let us know.
Follow the steps below to increase the chances of a quick resolution.

1. Is it a problem, a question or a request?
--------------------------------------------
For questions about how to use PyDM, please refer to the :doc:`help` page.

If you don't have a GitHub account we strongly encourage you to create one by following the 3 easy steps described on this `page <https://github.com/join>`_.

Problems (not questions!) with the software or website can be reported as GitHub issues (`See here how to create one <https://help.github.com/articles/creating-an-issue/>`_).

**Problems include:**

- Bugs (or probable bugs) with the PyDM software
- Typos or other mistakes in the Reference or elsewhere on the documentation

If you create a new issue that’s really just a clarifying question about how to use PyDM, we’ll close it and nicely ask
you to visit the :doc:`help` channels in the future.

Ideas or suggestions for enhancements should be posted as GitHub issues with the 'REQUEST: ' prefix to your issue title.
When in doubt, start by reaching us through one of the :doc:`help` channels.


2. Write helpfully
-------------------

To write an effective issue report:

- Be precise
- Be clear
- Explain the steps required to reproduce the bug
- Cite your OS and version, and which version of PyDM you’re using
- If reporting an issue on the website, include the URL where the problem is
- Screenshots are super helpful! They let us see what you see. You can drag images directly onto the issue text to upload them.
- Errors are super helpful! (Sometimes.) Copy and paste any errors into the issue.
- Include only one bug per report
- Separate fact from speculation
- No bug is too trivial to report, as small bugs may hide big bugs.


Template for Bugs and Requests
------------------------------

We strongly recommend that you follow the template below but feel free to add more information (More is always better in this case):


**Expected Behavior**
    - Provide a general summary of the issue in the Title above
    - If you are describing a bug, tell us what should happen
    - If you are suggesting a change/improvement, tell us how it should work

**Current Behavior**
    - If describing a bug, tell us what happens instead of the expected behavior
    - If suggesting a change/improvement, explain the difference from current behavior

**Possible Solution**
    - Not obligatory, but suggest a fix/reason for the bug, or ideas how to implement the addition or change

**Steps to Reproduce (for bugs)**
    - Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code to reproduce, if relevant

    1. Step 1
    2. Step 2
    3. Step 3

**Context**
    - How has this issue affected you? What are you trying to accomplish?
    - Providing context helps us come up with a solution that is most useful in the real world

**Your Environment**
    - Include as many relevant details about the environment you experienced the bug in
    - One good start point is the **File > About** screen at PyDM.

