Contributing


Whether you’re fixing bugs, adding new functionality, improving documentation, or creating your own projects, your contribution is highly valued and appreciated!

Getting Started

Before diving in, familiarize yourself with SensEdu:

  1. Read through this wiki
  2. Run basic examples and finished projects
  3. Explore existing issues
  4. Review styling guidelines

If you are still not sure what to do, feel free to open a discussion, and we’ll find a task for you!

Styling Guidelines

Please familiarize yourself with the following conventions to ensure styling consistency. It keeps the project manageable, easy to navigate for other developers, and make releases easier to create.

Branch Naming

Follow the format:

<type>/<issue-number>/<short-name>

Try to avoid creating a branch without a linked issue. If you must, follow the format:

<type>/<descriptive-name>

Types

  • pcb: Hardware design
  • lib: STM32 library
  • proj: SensEdu projects
  • docs: Website or README documentation
  • deploy: Website deployment

Good Examples

proj/7/record-audio
lib/13/dma-integration
pcb/34/tweak-rx-schematics
docs/10/web-emg-page

Commit Messages

Follow the format:

<type>: <subject>

<optional body>
  • Subject line: maximum 50 characters, use imperative mood (“Add” not “Added”)
  • No period at the end of subject line
  • During PR review, reference the PR number in subject line

Types

  • feat: New features/additions
  • fix: Bug fixes and other broken behaviour
  • refactor: Code or project restructuring
  • docs: Website or README documentation
  • deploy: Website deployment

Good Examples

# New lib feature:
feat: Add ADC3 support
# PCB design:
feat: Draw power supply schematic
# Docs editing:
docs: Finish EMG implementation section

Document hardware setup
Explain RC values for amplifier circuit
Add data acquisition code snippet
# Bug fix:
fix: Rewrite ADC polling

Fix improper ADC initialization in CFGR1 register
# PR review:
refactor: Rename lib example (#90)

Rename `adc_Record` to `ADC_Record` 

How to Contribute

Report Bugs

Found a bug or unexpected behaviour? Help us fix it:

  1. Search for existing issues to avoid duplicates
  2. Create a new issue with bug label, providing:
    1. Steps to reproduce
    2. Expected vs actual behaviour
    3. Screenshots, logs, oscilloscope waveforms or any additional data

Suggest Features

Have an idea for a new sensor driver, project or optimization?

  1. Create an issue with the enhancement label:
    1. Describe your idea in detail
    2. Provide some usage examples

Improve Documentation

Clear documentation is essential for our educational purposes, help us:

  • Fix typos or grammatical errors
  • Clarify ambiguous explanations to ensure everything is easy to understand
  • Fill in missing explanations

Check Documentation Contributions for detailed instructions.

For educational purposes, the documentation is aimed not only at developers but at beginner students as well. Try to avoid logical skips, use simple language, and add diagrams, images or code examples!

Improve Code

If you are an experienced embedded systems developer, feel free to optimize library code for better performance.

  1. Review the library wiki section and Library Contributions
  2. Assign yourself an issue to ensure collaboration with others who are working on the same feature and to avoid duplicates
  3. Create a fork and develop your feature
  4. Submit a Pull Request (PR) and ask for a review

Try to keep PRs small, focusing on one feature/fix per PR.

Submit Project

Created something amazing using SensEdu? Share it with us! Check Project Contributions for detailed instructions.

Roadmap

Please refer to the issues, all planned new features are listed there.

roadmap


Thank You to All Contributors!

  • fanfare-ff
  • svire-at
  • PaulThbt
  • LorenzoBuldorini
  • ShiegeChan
  • thodob
  • Arshad-Pattathil
  • integratedjoy
  • Ferni41359

Table of contents