# Contributing

We appreciate you want to help us by contributing to Consul Democracy. Here's a guide we made describing how to contribute changes to the project.

## Reporting an issue

If you have seen anything wrong in the platform performance or directly in the code, we encourage you to [open an issue in the Consul Democracy Github repository](https://github.com/consuldemocracy/consuldemocracy/issues/new).

Before doing it, **please take some time to check the** [**existing issues**](https://github.com/consuldemocracy/consuldemocracy/issues) **and make sure what you are about to report isn't already reported** by another person. In case someone else reported the same problem before, if you have more details about it you can write a comment in the issue page -a little more help can make a huge difference!

In order to write a new issue, take into account these few tips to make it easy to read and comprehend:

* Try to use a descriptive and to-the-point title.
* It's a good idea to include some sections -in case they're needed- such as: steps to reproduce the bug, expected behaviour/response, actual response or screenshots.
* Also it could be helpful to provide your operating system, browser version and installed plugins.

## Resolving an issue

[Issues in Consul Democracy](https://github.com/consuldemocracy/consuldemocracy/issues) labeled with `PRs-welcome` are well defined features ready to be implemented by whoever wants to do it. In the other hand, the `not-ready` label marks features or changes not well defined yet or subject to an internal decision, so we recommend not to try to resolve them until the admins come to a resolution.

We suggest to follow these steps to keep a good track of the changes you're about to make:

* First of all, add a comment to the issue to make everyone know you are going to work on it. If the issue has someone assigned it means that person is already solving it.
* Fork the project.
* Create a feature branch based on the `master` branch. To make it easier to identify, you can name it with the issue number followed by a concise and descriptive name (e.g. `123-fix_proposals_link`).
* Check our [coding conventions](https://docs.consuldemocracy.org/tech_docs/open_source/coding_conventions) to help you decide how to write your code.
* Work in your branch committing there your changes.
* If possible, we prefer small PRs.
* Make sure all tests are passing. In case you're extending or creating a new feature, consider adding its own specs.
* Once you've finished, send a **pull request** to the [Consul Democracy repository](https://github.com/consuldemocracy/consuldemocracy/) describing your solution to help us understand it. It's also important to tell what issue you're addressing, so specify it in the pull request description's first line (e.g. `Fixes #123`).
* Our core team will review your PR and suggest changes if necessary. If everything looks good, your changes will be merged :)

> **Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github).

## Other ways of contributing

We'll appreciate any kind of contribution to Consul Democracy. Even if you can't contribute to it coding, you still can:

* Create issues about any problem or error you've encountered.
* Help translate the platform to other languages you master at [Consul Democracy's Crowdin](https://crwd.in/consul).
* Help with [Consul Democracy's documentation](https://github.com/consuldemocracy/docs).
