# Contributing to BioCRNpyler 

Thank you for your interest in contributing to BioCRNpyler!

In this file you will find detailed instructions on how you can start making contributions to the package. BioCRNpyler is hosted on the [BuildACell](https://github.com/buildacell) organization page on GitHub. For more information on getting started with the package, refer to the README file on the [home page](https://github.com/BuildACell/biocrnpyler) and the tutorial style example jupyter notebooks under the [examples](https://github.com/BuildACell/BioCRNPyler/tree/master/examples) directory. For a detailed software documentation refer to the BioCRNpyler documentation [here](https://readthedocs.org/projects/biocrnpyler/). 

## How to contribute?
To get started, set up your BioCRNpyler fork - detailed instructions for doing so can be found [here](https://github.com/BuildACell/BioCRNPyler/wiki/How-to-sync-your-BioCRNPyler-fork). All contributions to BioCRNpyler should be made as a Github pull request to the **dev** branch [here](https://github.com/BuildACell/BioCRNPyler/tree/dev). 

### Reporting Bugs/Asking for help

Use the Github issues page on BioCRNpyler to report a bug or to ask for help with running BioCRNpyler. The Github issues have labels that you can use so that the issues can be filtered easily:

* If you are unsure where to begin contributing to BioCRNpyler, you can start by looking through the issues with the label `beginner` or `help-wanted`. A beginner issue usually requires only changing a few lines of code to fix something or add a new enhancement. The `help-wanted` issues are slightly more involved and may require an understanding of the BioCRNpyler modules.

* If you have a particular feature idea in mind, feel free to suggest that as an `enhancement` or a `feature-request` tagged issue. If you would like to get in touch with the developers working on the package to discuss your contribution ideas, you can also join our Slack channel (details at the end of this page).

### Pull Requests

All pull requests should be made to the `dev` branch of BioCRNpyler. To maintain code readability and validity, we encourage you to document your pull requests using the following ways:
* Add a detailed comment when creating the pull request that summarizes the changes, features and/or bugs fixed.
* All new functions and classes must have [docstrings](https://www.python.org/dev/peps/pep-0257/) so that automated documentation can be generated.
* If possible, we encourage you to add test functions in the Tests directory that validate the code contributions. 
* If your pull request is adding a new feature to the package, we also highly recommend a jupyter notebook example that goes along with that feature that discusses the use case. 

## Styleguides

* Following the PEP8 guideline, limit the first line to 72 characters or less
* Reference issues and pull requests in your pull request comment
* 

## Have any questions?

If you have questions or would like to connect to the BioCRNpyler team on a regular basis, you can join our Slack channel. BioCRNpyler is a channel under the Synthetic Biology Modeling and Analysis Tools (SBTools) slack team.

* [Join the SBTools Slack](https://join.slack.com/t/sbtools/shared_invite/zt-g82qjmvm-GAsNFLjyXGPlRBapqGDgFg)
    * Use the `#biocrnpyler` channel for general questions or discussion about BioCRNpyler
    * Use the `#general` channel for general questions about SBTools
    * There are many other channels available for other synthetic biology modeling and analysis tools, check the channel list
