Contributing guidelines
=======================

Any kind of contribution to `chaospy` is very much welcome. Everything from
simple comments or question to a full fledged `pull request
<https://help.github.com/articles/about-pull-requests/>`_.

A contribution can be one of the following cases:

#. you have a question about usage;
#. you think you may have found a bug (including unexpected behavior);
#. you want to make some kind of change to the code base (e.g. to fix a bug, to
   add a new feature, to update documentation).

The sections below outline the steps in each case.

You have a question about usage
-------------------------------

#. Use the search functionality `here
   <https://github.com/jonathf/chaospy/issues>`_ to see if someone already
   filed an issue on the same topic;
#. If your issue search did not yield any relevant results, make a new issue;
#. Choose the "Usage Question" template, and fill in the appropriate fields.

You think you may have found a bug
----------------------------------

#. Use the search functionality `here
   <https://github.com/jonathf/chaospy/issues>`_ to see if someone already
   filed the same issue;
#. If your issue search did not yield any relevant results, make a new issue;
#. Choose the "Bug report" template, and fill in the appropriate fields.
   Make sure to provide enough information to the rest of the community to
   understand the cause and context of the problem.

You want to make some kind of change to the code base
-----------------------------------------------------

#. Make an issue `here <https://github.com/jonathf/chaospy/issues>` and use the
   "Functionality Request" template.
   Announce your plan to the community *before you start working*.
   Note in the issue that you are willing to make the proposed changes yourself.
#. Wait until a maintainer comments and tells you the idea is approved for
   implementation;
#. If needed, fork the repository to your own Github profile and create your
   own feature branch off of the latest master commit. While working on your
   feature branch, make sure to stay up to date with the master branch by
   rebasing changes on top, possibly from the 'upstream' repository (follow the
   instructions `here
   <https://help.github.com/articles/configuring-a-remote-for-a-fork/>`_ and
   `here <https://help.github.com/articles/syncing-a-fork/>`_);
#. Make sure the existing tests still work;
#. Add your own tests (if necessary);
#. Update or expand the documentation;
#. `Push <http://rogerdudler.github.io/git-guide/>`_ your feature branch to
   (your fork of) the Chaospy repository on GitHub;
#. Create the pull request, e.g. following the instructions `here
   <https://help.github.com/articles/creating-a-pull-request/>`_.

In case you feel like you've made a valuable contribution, but you don't know
how to write or run tests for it, or how to generate the documentation: don't
let this discourage you from making the pull request; we can help you! Just go
ahead and submit the pull request, but keep in mind that you might be asked to
append additional commits to your pull request.
