Thanks for your interest in contributing to breseq! This document covers how to
get involved in the project. For build/test/distribution instructions, see the
DEVELOPER file. Please also read our
Code of Conduct before participating.
We welcome your contributions! You can check out suggested coding project issues or look for bugs to fix. Please comment on an issue if you are working on it so that we can avoid duplicating efforts and provide guidance.
To contribute your code, you should:
- Fork the breseq repository.
- Work on your code, create tests for the code, have others try it out...
- Submit a pull request to the breseq repository, so that it can be integrated into the project.
If you are creating a Python or R package that operates on the output of breseq runs, these tools may require the installation of other programs (e.g., Circos, de novo assemblers).
- Install breseq as described in
DEVELOPER, or download the most recent release version and follow the installation instructions.
If you are developing code that reads in genomediff files output by
breseq, we recommend that you use the official
genomediff Python module
for this purpose rather than re-inventing the wheel. If you need to update the
functionality of the genomediff Python parser, please contribute to that
GitHub project.
If you are coding in C++ to change the core breseq and/or gdtools
commands:
- Clone the GitHub repository. (Do not download a release version.)
- Follow the "Developing with Command-Line Compilation" instructions in
DEVELOPER.
You should familiarize yourself with how breseq works and its output files by completing these activities from the breseq documentation:
- Test Drive
- Tutorials: Clonal Samples | Mixed Populations
Our philosophy is that the breseq core executables should have minimal external requirements and maximum compatibility for installation and compilation on a wide range of systems.
In order to ensure this is the case and for maintainability of the code, please follow these coding conventions:
- C++ code
- In general, follow the Google C++ Style Guide.
- Only utilize features available in the C++11 standard.
- Do not link to any external convenience libraries (e.g., Boost).
- R code
- In general, follow the Google R Style Guide.
- Use only core libraries/functionality included with a base R install.
If you are writing a breseq extension in Python or R, you can utilize whatever other modules are needed for functionality. In these cases, we recommend releasing your code via PyPI or CRAN to manage requirements.