Contributing

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

1

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 faustbot
2

Set 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 build
3

Create 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-description
4

Make Your Changes

Implement your feature or fix. Follow the coding standards and include tests.

5

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

1

Check Existing Translations

Translation files are in resources/translations/. Check if your language already has a file.

2

Create or Update

Copy en.json as a starting point for a new language, or update an existing translation file.

3

Submit Pull Request

Submit your translation via pull request. Include your native speaker status in the PR description.

Currently Supported Languages

English German Spanish French Portuguese Japanese (partial) Korean (partial)

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

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

  1. Ensure your code follows the project's style guidelines
  2. Update documentation if you're changing public APIs
  3. Add or update tests as needed
  4. Make sure all tests pass locally
  5. Write a clear PR description explaining the changes
  6. Link any related issues in your PR
  7. 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