# Contributing guidelines

## Contribution process

Please follow these steps to make a contribution:

1. If there is no issue yet, [make an issue](#creating-a-new-issue) and follow the instructions of the issue template.
2. Comment on the issue you are going to work on and say you are working on it.
3. Fork our repository and create a branch.
4. Write your code following our [coding guidelines](./CODING_GUIDELINES.md) and submit your pull request. Be sure to read and follow our pull request guidelines, otherwise it will not be accepted!
5. Wait for your code to be reviewed and address any issues in a timely manner.

We encourage people to review each others pull requests and issues, but please [**be kind, constructive and respectful to each other**](./CODE_OF_CONDUCT.md)!

## Creating a new issue

To make it easy for you to fill in all the necessary information, we make use of [Github forms](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms).

If you find a bug, or want to add or change a feature, go to [issues](https://github.com/atopile/atopile/issues) page and follow the steps described there. Please be as elaborate as possible to have the issue resolved as soon as possible. We will add [labels](#labels) to your issue when it's reviewed.

When in doubt, ask a question on our [Discord](https://discord.gg/95jYuPmnUW) community.

## Creating a pull request

Like with new issues, we use a template for creating pull requests. Please fill in the template and be elaborate so we can try to merge your pr as soon as possible.

**Run the [Black](https://github.com/psf/black) code formatting tool before creating the pr!!**
``python -m black {source_file_or_directory}``

Be sure there is an issue linked to your pr.

## Labels

Our labels are divided into three fields for ease of use. The format is as follows where ⎵ denotes a single space character:

\<emoji>⎵\<category>:⎵\<name>

A list of labels can be found [here](https://github.com/atopile/atopile/labels)
