Contributing to Random Decision Maker
March 23, 2026 ยท View on GitHub
Thank you for your interest in contributing! This document explains how to report bugs, request features, and submit code changes.
Table of Contents
- Code of Conduct
- Getting Started
- How to Contribute
- Development Setup
- Coding Guidelines
- Commit Message Format
Code of Conduct
Be respectful and constructive. Harassment, trolling, or discriminatory language of any kind will not be tolerated.
Getting Started
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/<your-username>/random_decision_maker.git cd random_decision_maker - Set up the Flipper Zero build environment following the official fbt guide.
- Place (or symlink) the repository inside
applications_user/in your firmware tree.
How to Contribute
Reporting Bugs
Open an issue and include:
- Flipper Zero firmware version (e.g.,
0.98.3orunleashed-07.xx) - Steps to reproduce the bug
- Expected vs. actual behaviour
- Any relevant screenshots or logs
Requesting Features
Open an issue with the enhancement label. Describe:
- The problem you are trying to solve
- Your proposed solution (if any)
- Any Flipper Zero API constraints you are aware of
Submitting a Pull Request
- Create a branch from
mainwith a descriptive name:git checkout -b fix/crash-on-empty-list # or git checkout -b feat/persistent-storage - Make your changes (see Coding Guidelines).
- Build and test on a real device or in qFlipper if possible.
- Push your branch and open a pull request against
main. - Fill in the PR description explaining what changed and why.
Pull requests should:
- Target a single logical change
- Not break existing functionality
- Keep all user-facing strings in English
- Pass the firmware's built-in linter (
./fbt lint)
Development Setup
# From the root of the flipperzero-firmware tree:
./fbt APPSRC=applications_user/random_decision_maker launch
Useful targets:
| Command | Description |
|---|---|
./fbt APPSRC=... launch | Build, flash, and run on a connected Flipper |
./fbt APPSRC=... fap | Build .fap file only |
./fbt lint | Run the firmware code style linter |
Coding Guidelines
- Language: C11 (
-std=c11). No C++. - Style: Follow the Flipper Zero firmware code style โ 4-space indentation, snake_case, Allman braces.
- Safety: Always bounds-check string copies (
strncpy+ explicit null-terminator). No dynamic allocation inside draw/input callbacks. - Thread safety: Never access view models directly from the timer callback. Use
view_dispatcher_send_custom_event()instead. - Strings: All user-visible text must be in English.
- Constants: Add named
#defineconstants rather than magic numbers.
Commit Message Format
Use the imperative mood and keep the subject line under 72 characters:
<type>: <short summary>
[Optional body explaining why, not what]
Types: feat, fix, refactor, docs, chore, test.
Examples:
feat: add persistent storage for decisions
fix: prevent crash when decision list is empty
docs: update controls table in README
Thank you for helping make this project better!