Thank you for reading this page! We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
We recommend reaching us via QuISP Slack team.
The following is a set of guidelines, not rules. Use your best judgment, and feel free to propose change to this document via discussing with us on slack or pull request.
Table of Contents
I just have a question about using QuISP!
What should I know before getting started?
Please note we have a code of conduct, please follow it in all your interactions with the project. If you find unacceptable behaviour please report to us by email or slack.
Questions are welcome! Please don't file an issue to ask a question. We have quite detailed documents regarding the functionality of QuISP. We admit that most documents are still in progress and contribution are welcome!
We also encourage you to join our slack and ask questions there!
- Even though slack is a chat service, it can take several hours for us to respond - please be patient!
- We have channels for most of the important topics (e.g.
#links
,#app-traffic
,#muxing
,#purificaton
) but if you aren't sure which channel to ask, we recommend asking in#questions
.
We use github to host code, to track issues and feature requests, as well as accept pull requests.
We Use Github Flow
All code changes should happen through pull requests.
(TBD)
We want to make QuISP development as easy as possible, be it installation, setting up working evironment, writing tests, or adding new features. We provide some guides on how to do that depending on your machine operating system and how you want to run QuISP.
Report bugs using Github's issues
We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!
Write bug reports with detail, background, and sample code
Great bug reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- Tell us what your setup is (OS, are you using local installation or docker version etc.)
- Be specific! (give us your
.ini
file, network name, parameters setting, actions that caused the bug, etc) - Give sample code if you can. The report should includes sample code that anyone with a base QuISP setup can run to reproduce what you were seeing.
- What you expected would happen
- What actually happens (screenshots and timestamp/events# if it's deep in simulation)
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
People love thorough bug reports.
Pull requests are the best way to propose changes to the codebase (we use Github Flow). We actively welcome your pull requests:
- Fork the repo and create your branch from
master
. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Verify that code can successfully build and simulation is working on your system.
- Ensure the test suite passes.
- Make sure your code lints. We treat warning from linter (
clang-tidy
) as errors (refer to styleguides). - Issue that pull request!
We define how to format code via .clang-format
and lint vs .clang-tidy
at project root. We also have a script which you can use to run the formatter and linter via $ make format
or $ sh docker_run_lint.sh
before committing. We follow code format from Google C++ Style Guide.
- If you're writing code using Visual Studio Code, we have a guide on how to setup.
- If you're using OMNeT++ IDE, you can format the code seamlessly using CppStyle.
To ensure compatibility of the network definition, we need to update the version. We use the tbump to automate the bumping the version. This commands add the new version tag and push it.
pip install tbump
tbump <new-version>
By contributing, you agree that your contributions will be licensed under 3-Clause BSD License.
In short, when you submit code changes, your submissions are understood to be under the same 3-Clause BSD License that covers the project. Feel free to contact the maintainers if that's a concern.
This document was adapted from two open-source contribution guidelines templates here and here.