# Contributing

Contributions are welcome and greatly appreciated!

### Report Bugs

Report bugs at https://github.com/fpicetti/occamypy/issues with tag *bug* including:

* Your operating system name and version, and computing facilies details (e.g., a cluster).
* Your Python environment variables, packages, etc.
* Minimum working example.

### Propose New Objects and Features

Open an issue at https://github.com/fpicetti/occamypy/issues
with tag *enhancement* including:
* Detailed explanation about what you would like, how it would work, etc.
* Keep the scope as narrow as possible, to make it easier to implement.

### Implement Your Own Codes

You are super-welcome to add your own tutorial, discuss and improve the documentation,
and code your own operators, problems and solvers. Also, check the *enhancement* issue tag!
We would love to expand our users pool to different areas of scientific computing and engineering!

## Getting Started to contribute

Ready to contribute?

1. Fork the `occamypy` repo.

2. Clone your fork locally:
    ```
    git clone https://github.com/your_name_here/occamypy.git
    ```

3. Follow the installation instructions for *developers* that you find
in the README.md or in the online documentation.
Ensure that you are able to *pass all the tests before moving forward*.

4. Create a branch for local development:
    ```
    git checkout -b name-of-your-branch
    ```
    Now you can make your changes locally.

5. Commit your changes and push your branch to GitHub:
    ```
    git add .
    git commit -m "Your detailed description of your changes."
    git push origin name-of-your-branch
    ```
    Remember to add ``-u`` when pushing the branch for the first time.

6. Submit a pull request through the GitHub website.


### Pull Request Guidelines

Before you submit a pull request, check that it meets these guidelines:

1. The pull request should include new tests for all the core routines that have been developed.
2. If the pull request adds functionality, please add a tutorial notebook or example script.
Remember to write a docstring, keeping in mind that these codes will be read mainly by humans.
