How to Contribute
Help make FaustBot better for everyone. There are many ways to contribute, from code and documentation to community support.
Overview
FaustBot is a community-driven project, and we welcome contributions of all kinds. Whether you're a developer, writer, translator, or just an enthusiastic user, there's a way for you to help.
Code
Fix bugs, add features, improve performance
Documentation
Write guides, improve existing docs
Translations
Help localize FaustBot for your language
Community
Help others, share knowledge
Getting Started
Fork the Repository
Start by forking the FaustBot repository on GitHub. This creates your own copy where you can make changes.
git clone https://github.com/YOUR_USERNAME/faustbot.git
cd faustbotSet Up Development Environment
Install the required dependencies and build tools.
# Install Qt6 and dependencies
# See BUILD.md for platform-specific instructions
# Configure and build
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build buildCreate a Branch
Create a new branch for your changes with a descriptive name.
git checkout -b feature/my-new-feature
# or
git checkout -b fix/bug-descriptionMake Your Changes
Implement your feature or fix. Follow the coding standards and include tests.
Submit a Pull Request
Push your changes and open a pull request on GitHub with a clear description of what you've done and why.
Code Contributions
Areas to Contribute
Core Application
C++ code in src/ - action system, scripting engine, plugin framework
Platform Plugins
Twitch, YouTube, Kick, TikTok integrations in plugins/platforms/
Integration Plugins
OBS, Discord, Streamlabs, etc. in plugins/integrations/
Service Plugins
TTS, sounds, HTTP server in plugins/services/
Script Engines
Python, Lua, JavaScript, C# engines in plugins/scripting/
Website
Documentation site using SvelteKit in website/
Code Standards
Formatting
Use clang-format with the provided .clang-format configuration.
Naming
Classes: PascalCase, Functions: camelCase,
Variables: camelCase, Constants: UPPER_SNAKE_CASE
Comments
Document public APIs with Doxygen-style comments. Add inline comments for complex logic.
Testing
Add unit tests for new features. Ensure existing tests pass before submitting.
Documentation
Good documentation helps users get the most out of FaustBot. There are several ways to contribute to docs:
Fix Errors
Found a typo or incorrect information? Submit a quick fix!
Improve Clarity
Help make existing docs clearer and easier to understand.
Add Examples
More code examples help users learn faster.
Write Guides
Create tutorials for common use cases and advanced topics.
Documentation Location
Documentation source files are in website/src/routes/docs/.
Each page is a SvelteKit route with its own +page.svelte file.
Translations
Help make FaustBot accessible to users worldwide by contributing translations.
How to Translate
Check Existing Translations
Translation files are in resources/translations/. Check if your
language already has a file.
Create or Update
Copy en.json as a starting point for a new language, or update
an existing translation file.
Submit Pull Request
Submit your translation via pull request. Include your native speaker status in the PR description.
Currently Supported Languages
Community
Even without writing code, you can make a huge impact by helping the community.
Answer Questions
Help other users on Discord and GitHub Discussions. Share your knowledge and experience.
Report Bugs
Found a bug? Report it on GitHub Issues with steps to reproduce. Include logs and system information.
Suggest Features
Have an idea? Open a feature request and discuss it with the community before implementing.
Share Scripts
Created a useful script? Share it in the community examples repository or on Discord.
Join the Community
- Discord Server - Chat with developers and users
- GitHub Discussions - Long-form discussions and Q&A
- GitHub Issues - Bug reports and feature requests
Guidelines
Code of Conduct
We are committed to providing a welcoming and inclusive environment. All contributors must follow our Code of Conduct:
- Be respectful and inclusive
- Be patient with newcomers
- Focus on constructive feedback
- No harassment, discrimination, or personal attacks
Pull Request Process
- Ensure your code follows the project's style guidelines
- Update documentation if you're changing public APIs
- Add or update tests as needed
- Make sure all tests pass locally
- Write a clear PR description explaining the changes
- Link any related issues in your PR
- Be responsive to review feedback
Commit Messages
Use clear, descriptive commit messages following this format:
type(scope): Short description
Longer description if needed.
Fixes #123 Types: feat, fix, docs, style, refactor, test, chore