Skip to content

Commit

Permalink
Update contribution doc, issue templates
Browse files Browse the repository at this point in the history
  • Loading branch information
AEFeinstein committed Feb 7, 2025
1 parent cd55097 commit c8bf3d6
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 48 deletions.
32 changes: 16 additions & 16 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,25 @@ assignees: ''

---

**Description**
_A clear and concise description of what the bug is._
## Description
<!-- A clear and concise description of what the bug is. -->

**Expected behavior**
_A clear and concise description of what you expected to happen._
## Expected behavior
<!-- A clear and concise description of what you expected to happen. -->

**Reproduction Steps**
_Steps to reproduce the behavior and how often it occurs._
## Reproduction Steps
<!-- Steps to reproduce the behavior and how often it occurs. -->

**Screenshots**
_If applicable, add screenshots to help explain your problem._
## Screenshots
<!-- If applicable, add screenshots to help explain your problem. -->

**Logs**
_If applicable, add logs from when the problem occurred._
## Logs
<!-- If applicable, add logs from when the problem occurred. -->

**Affected Version**
- Platform: [Windows, Linux, and/or Firmware]
- git branch: [e.g. `main`]
- git hash: [e.g. a2a1a77 ]
## Affected Version
- Platform: <!-- [Windows, Linux, and/or Firmware] -->
- git branch: <!-- [e.g. `main`] -->
- git hash: <!-- [e.g. a2a1a77 ] -->

**Additional Notes**
_Add any other notes about the problem_
## Additional Notes
<!-- Add any other notes about the problem -->
24 changes: 12 additions & 12 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ assignees: ''

---

**Summary**
_What is the feature all about? Is it a game, a utility, an enhancement, or something else?_
## Summary
<!-- What is the feature all about? Is it a game, a utility, an enhancement, or something else? -->

**Technical Spec**
_How will this be implemented?_
_What peripherals will be used, and how?_
## Technical Spec
<!-- How will this be implemented? -->
<!-- What peripherals will be used, and how? -->

**UI**
_What are the display screens & menus (if applicable)?_
_What user inputs are there for each screen?_
## UI
<!-- What are the display screens & menus (if applicable)? -->
<!-- What user inputs are there for each screen? -->

**Mockups**
_Paste any mockups of screens or anything else here._
## Mockups
<!-- Paste any mockups of screens or anything else here. -->

**How to Test**
How can we verify the feature is working?
## How to Test
<!-- How can we verify the feature is working? -->
64 changes: 44 additions & 20 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,50 @@
# Contribution Guide {#contribution_guide}

## How to Contribute a Feature
## How To Create Github Issues

1. 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.
2. [Fork this repository](https://help.github.com/en/articles/fork-a-repo) 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!).
3. If you're going to develop multiple features in your fork, you should [create a branch](https://help.github.com/en/articles/creating-and-deleting-branches-within-your-repository) for each feature. Keeping a single feature per-branch leads to cleaner and easier to understand pull requests.
4. This is the fun part, write your feature!
1. Please comment your code. This makes it easier for everyone to understand.
2. [Doxygen comments](http://www.doxygen.nl/manual/docblocks.html) will be especially appreciated. You can [set up VSCode](https://marketplace.visualstudio.com/items?itemName=cschlosser.doxdocgen) to automatically add empty Doxygen templates to functions
3. You should [run clang-format](https://clang.llvm.org/docs/ClangFormat.html) with [this project's .clang-format file](https://github.com/AEFeinstein/Super-2024-Swadge-FW/blob/main/.clang-format) to beautify the code. Everyone loves pretty code. There's a [VSCode Extension](https://marketplace.visualstudio.com/items?itemName=xaver.clang-format) for this too.
4. The code should compile without any warnings.
5. Please write small, useful messages in each commit.
5. Test your feature. Try everything, mash buttons, whatever. Get creative. Users certainly will. Write your test plan and steps in the ticket you opened.
6. Once your feature is written and tested, [create a pull request](https://help.github.com/en/articles/creating-a-pull-request) to merge the feature back to the master project. Please reference the ticket from step 1 in the pull request.
7. 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.
Work is tracked through [GitHub Issues here](https://github.com/AEFeinstein/Super-2024-Swadge-FW/issues). Issues are much less likely to get lost than Slack threads. Issues should be appropriately labeled and assigned to someone. Issues can be linked to Pull Requests and should be closed when the work is done, which may take multiple Pull Requests. We're currently not using any project management tracking more sophisticated than Issues, so please fill them out. There are Issue templates too, which make creation easier!

### Feature Requests

When you want a new feature added to the Swadge, use the Feature Request template. There are five sections in the template to consider, and you can add more if you want.

* Summary - What is the feature all about? Is it a game, a utility, an enhancement, or something else?
* Technical Spec - How will this be implemented? What peripherals will be used, and how?
* UI - What are the display screens & menus (if applicable)? What user inputs are there for each screen?
* Mockups - Paste any mockups of screens or anything else here.
* How to Test - How can we verify the feature is working?

Summaries and specifications 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. Specifications also make writing documentation like user guides easier.

## How to Report a Bug
### Bug Reports

Create an issue in this project with the following information:
When you find a bug that needs to be fixed, use the Bug Report template. There are seven sections in the template to consider.

* 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.
* Description - A clear and concise description of what the bug is.
* Expected behavior - A clear and concise description of what you expected to happen.
* Reproduction Steps - Steps to reproduce the behavior and how often it occurs.
* Screenshots - If applicable, add screenshots to help explain your problem.
* Logs - If applicable, add logs from when the problem occurred.
* Affected Version - The platform, git branch, and git hash the bug occurred on.
* Additional Notes - Add any other notes about the problem.

### Other Issues

If there's firmware work that's neither a feature nor a bug, you can start with a blank Issue. Please write a thorough description so the whole team can understand and help.

## How to Contribute a Feature

1. [Create a Feature Request Issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/creating-an-issue) in this repository as noted above. This is a great place to discuss the feature and have any questions answered before writing any code.
2. If you aren't already a collaborator in this repository, ask on Slack to be added. We've found that it's easier to manage many branches in this single repository than across many forks and branches.
* Alternatively, if you want to do development for yourself and not contribute it to official Swadge firmware, [fork this repository](https://help.github.com/en/articles/fork-a-repo) to create your own personal copy of the project.
3. [Create a branch](https://help.github.com/en/articles/creating-and-deleting-branches-within-your-repository) for the feature you want to develop. Keeping a single feature per-branch leads to cleaner and easier to understand pull requests.
4. [Link the branch to the Github Issue](https://github.blog/changelog/2022-09-07-link-existing-branches-to-an-issue/) you made in step one.
5. This is the fun part, write your feature!
1. Please comment your code. This makes it easier for everyone to understand.
2. [Doxygen comments](http://www.doxygen.nl/manual/docblocks.html) will be especially appreciated. You can [set up VSCode](https://marketplace.visualstudio.com/items?itemName=cschlosser.doxdocgen) to automatically add empty Doxygen templates to functions.
3. You should [run clang-format](https://clang.llvm.org/docs/ClangFormat.html) with [this project's .clang-format file](https://github.com/AEFeinstein/Super-2024-Swadge-FW/blob/main/.clang-format) to beautify the code. Everyone loves pretty code. You can run `make format` or there's a [VSCode Extension](https://marketplace.visualstudio.com/items?itemName=xaver.clang-format) for this too.
4. The code should compile without any warnings. Be sure to compile both the emulator (`make all`) and firmware (`idf.py build`).
5. Please write small, useful messages in each commit.
6. Test your feature. Try everything, mash buttons, whatever. Get creative. Users certainly will. Write your test plan and steps in the ticket you opened.
7. Once your feature is written and tested, [create a pull request](https://help.github.com/en/articles/creating-a-pull-request) to merge the feature back to the master project. Please reference the ticket from step 1 in the pull request.
8. 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.

0 comments on commit c8bf3d6

Please sign in to comment.