How to Contribute a Feature
- Create an issue in this repository with a short summary of the feature and any specs you want to write. Summaries and specs are a great way to make sure everyone is on the same page before writing code. No one likes writing a feature only to have to rewrite or scrap it later due to a misunderstanding. Specs also make writing documentation like user guides easier.
- Fork this repository to create your own personal copy of the project. Working in your own forked repository guarantees no one else will mess with the project in unexpected ways during your development (and you won't mess with anyone else either!).
- If you're going to develop multiple features in your fork, you should create a branch for each feature. Keeping a single feature per-branch leads to cleaner and easier to understand pull requests.
- This is the fun part, write your feature!
- Please comment your code. This makes it easier for everyone to understand.
- Doxygen comments will be especially appreciated. You can set up VSCode to automatically add empty Doxygen templates to functions
- You should run clang-format with this project's .clang-format file to beautify the code. Everyone loves pretty code. There's a VSCode Extension for this too.
- The code should compile without any warnings.
- Please write small, useful messages in each commit.
- Test your feature. Try everything, mash buttons, whatever. Get creative. Users certainly will. Write your test plan and steps in the ticket you opened.
- Once your feature is written and tested, create a pull request to merge the feature back to the master project. Please reference the ticket from step 1 in the pull request.
- The new code will be reviewed and either merge it or have changes requested. The better the spec and conversation in step 1, the better the chances it gets merged quickly.
How to Report a Bug
Create an issue in this project with the following information:
- What the expected behavior is.
- What the actual behavior is. Pictures or video could be useful here.
- If repeatable, steps to reproduce the buggy behavior.
- If not repeatable, what you were doing when the bug occurred.
- Serial logs, if you were logging.