Thank you for investing your time in contributing to our project!
Read our Code of Conduct to keep our community approachable and respectable.
In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging PRs.
See the ReadMe file to get an overview of the project. Also, read these helpful resources to get you comfortable with open source contribution:
Before writing code and creating a PR, make sure your contribution aligns with our mission and guidelines:
- All our devices are intended for research and education.
- We won't accept code intended to commit crimes.
- Follow our Coding Style.
- Use code compatible with the project License.
- Your PR will only be merged if it passes CI/CD.
- A code owner must approve the PR.
- AI-generated PRs (especially changes in core parts like FURI, FreeRTOS, Libs, SDK) will be reviewed separately from others. PRs that do not provide sufficient value to the project may be rejected by maintainers or remain in draft.
Feel free to ask questions in issues or discussions if you're not sure. For feature requests and voting, follow our Discussion Guidelines.
Before you start working on something, check if this problem was already reported. Search the existing issues first to avoid duplicating effort. Here is more info on how to search issues.
If an issue doesn't exist, you can open a new one using a relevant issue form.
-
Fork the repository to your own GitHub account. This creates a copy you can push to freely. (New to forking? See GitHub's fork a repo guide, or do it from GitHub Desktop.)
-
Clone your fork to your computer. Use
--recursiveso all submodules are fully loaded:
git clone --recursive https://github.com/YOUR-USERNAME/flipperzero-firmware.git
-
Create a working branch. Use a descriptive name such as
feature/your-changethen start making your changes. -
Install build requirements and build with the Flipper Build Tool (FBT). See FBT documentation for details. Basic commands:
./fbt— build firmware with debug flags enabled../fbt COMPACT=1 DEBUG=0 updater_package— build full updater package.tgzwith release flags../fbt vscode_dist— add VS Code environment to the project../fbt format— format code in the project folder (apply this before making a PR).
Implement the changes to the firmware code, following the Coding Style guidelines.
Commit the changes once you are happy with them. Make sure code compilation succeeds, tests pass, and formatting follows Coding Style and ./fbt format is applied. Use clear, descriptive commit messages.
When you're done making the changes, open a pull request:
- Fill out the "Ready for review" template, so we can review your PR. This template helps reviewers understand your changes and the purpose of your pull request.
- Don't forget to link PR to issue if you are solving one.
- Make sure the Allow edits from maintainers checkbox is checked so the branch can be updated before merging.
- We may ask for changes to be made before a PR can be merged, either using suggested changes or pull request comments. You can apply suggested changes directly through the UI. You can make any other changes in your fork, then commit them to your branch.
- As you update your PR and apply changes, mark each conversation as resolved.
- If you run into any merge issues, check out this tutorial to help you resolve merge conflicts and other issues.
Congratulations 🎉! The Flipper Devices team thanks you for your contribution ✨