# How to contribute

This project relies on your contributions for it's continued success.  We want to make the process as easy as possible but a few guidelines are needed.

First please note that participation is bound by our [Code Of Conduct](CODE_OF_CONDUCT.md).

# Issues

We do not have strong guidelines on what you put in an issue, we'll gladly work with you to gather the information we require. We do ask that you try to put as much detail as possible to help everyone use their time in a meaningful way.

# PRs

Almost every PR will need an issue first.  You do not need issues for trivial updates like typos, most documentation updates etc.  But if you're doing a PR that adjusts behavior we will need a issue to go with it.

Once you have an issue note the number and once you are ready to send your PR please squash your commits then make a single commit with something like the following format:

```
(#123) Add a super awesome feature

This adds a new super awesome feature that everyone would love,
it can be used for such and such.

To deliver this feature we had to extend, this that and the other
with new behaviours

Backwards compatibility is kept
```

Please see [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/) for excellent coverage of the topic of commit messages.  We don't require things to be as detailed or strict as that but it's a great resource to keep in mind.

Short updates obviously do not need all this, very often I am happy with just a 1 line commit message that matches the first line above.

For trivial updates without issues and where context is not needed:

```
(misc) Fix typo in README.md
```

# Finding others in the community

Usually we like to keep discussions on issues where they relate but of course we are very happy to chat in a more real time manner, especially useful if you want to find out our thoughts on your proposed changes ahead of spending your valuable time on them:

 * [Mailing List](https://groups.google.com/forum/#!forum/choria-users)
 * [#choria on the Puppet Slack](http://slack.puppet.com/)
 * #mcollective on Freenode
