Skip to main content
OpenTrack is an open-source project that welcomes contributions from the community. Whether you’re a developer, translator, documentation writer, or user reporting bugs, your contributions help make OpenTrack better for everyone.

Ways to Contribute

Code

Write trackers, filters, protocols, or improve core functionality

Bug Reports

Report issues and help identify problems

Documentation

Write guides, tutorials, and improve documentation

Translations

Translate OpenTrack to your language

Testing

Test new features and pre-release versions

Support

Help other users on forums and issue trackers

Getting Started

1

Read the Documentation

Familiarize yourself with OpenTrack:
2

Set Up Development Environment

Build OpenTrack from source:

Building from Source

Complete build instructions for all platforms

Plugin Development

Guide to creating custom plugins
3

Explore the Codebase

Clone the repository and explore:
Key directories:
  • api/ - Plugin API interfaces
  • tracker-*/ - Tracker implementations
  • filter-*/ - Filter implementations
  • proto-*/ - Protocol implementations
  • gui/ - Main application UI
  • cmake/ - Build system
4

Join the Community

Contributing Code

Development Workflow

1

Fork the Repository

Create your own fork on GitHub:
  1. Visit opentrack/opentrack
  2. Click “Fork” in the top-right corner
  3. Clone your fork:
2

Create a Feature Branch

Create a branch for your changes:
Branch naming conventions:
  • feature/ - New features
  • fix/ - Bug fixes
  • docs/ - Documentation changes
  • refactor/ - Code refactoring
3

Make Your Changes

Write your code following the project’s style:
  • Use consistent indentation (spaces, not tabs)
  • Follow existing code style
  • Comment complex logic
  • Keep commits focused and atomic
4

Test Your Changes

Build and test thoroughly:
5

Commit Your Changes

Write clear, descriptive commit messages:
Good commit messages:
  • Start with component prefix (tracker/, filter/, proto/, gui/)
  • Use imperative mood (“add” not “added”)
  • Explain why, not just what
  • Reference issue numbers with #123
6

Push and Create Pull Request

Push your changes and create a PR:
Then on GitHub:
  1. Navigate to your fork
  2. Click “Pull Request”
  3. Select your branch
  4. Write a detailed description:
    • What problem does it solve?
    • How to test the changes?
    • Any breaking changes?

Code Style Guidelines

Plugin Development Guidelines

When creating new plugins:

Follow API Conventions

  • Implement all required virtual methods
  • Return proper status codes
  • Handle errors gracefully
  • Document your API usage

Performance Matters

  • Don’t block in hot paths
  • Use separate threads for computation
  • Profile your code
  • Optimize critical sections

Test Thoroughly

  • Test on multiple platforms
  • Test error conditions
  • Test resource cleanup
  • Test with various configurations

Provide Configuration

  • Create intuitive UI dialogs
  • Use sensible defaults
  • Save/load settings properly
  • Support profile import/export

Reporting Bugs

Before Reporting

1

Search Existing Issues

Check if the bug is already reported:
2

Verify It's a Bug

Confirm the issue:
  • Test with latest version
  • Try with default settings
  • Test with different profiles
  • Check if it’s user error
3

Gather Information

Collect diagnostic information:
  • OpenTrack version (Help → About)
  • Operating system and version
  • Hardware details (CPU, GPU, camera)
  • Steps to reproduce
  • Error messages or logs

Creating a Bug Report

Don’t be afraid to submit an issue! The OpenTrack team is friendly and welcomes bug reports.
Create a detailed bug report on GitHub Issues:

Contributing Documentation

Wiki Contributions

The OpenTrack wiki is maintained in a separate repository:
1

Fork the Wiki Repository

2

Edit Markdown Files

Wiki pages are written in Markdown:
3

Submit Pull Request

Send your documentation improvements:
Create a PR to opentrack/wiki
The user-facing wiki automatically updates when commits are merged.

Contributing Translations

OpenTrack supports multiple languages:

Supported Languages

  • de_DE - German
  • nl_NL - Dutch
  • ru_RU - Russian
  • zh_CN - Chinese (Simplified)
  • stub - Template for new translations

Translation Workflow

1

Find Translation Files

Translation files are in lang/ subdirectories:
2

Edit with Qt Linguist

Use Qt Linguist to edit .ts files:
Or edit XML directly:
3

Test Translation

Build and test:
4

Submit Translation

Create a PR with your translations:

Adding a New Language

To add a new language:
  1. Add language code to CMakeLists.txt:
  2. Create .ts files in each module’s lang/ directory
  3. Translate using Qt Linguist
  4. Submit PR with new language support

Testing and QA

Beta Testing

Help test new features:
  1. Try pre-release builds:
  2. Report findings:
    • What works well
    • What doesn’t work
    • Performance issues
  3. Suggest improvements:
    • UI/UX feedback
    • Feature requests
    • Documentation gaps

Code of Conduct

Community Guidelines

Be Respectful

Treat all contributors with respect and professionalism

Be Constructive

Provide helpful feedback and constructive criticism

Be Patient

Maintainers are volunteers with limited time

Be Collaborative

Work together to solve problems and improve the project

Recognition

Contributors are recognized in multiple ways:

Credits

Significant contributors are listed in:
  • AUTHORS.md - Core contributors
  • README.md - Credits section
  • Module-specific files - Component authors

Current Contributors

From AUTHORS.md:
  • Stanislaw Halik - Project maintainer
  • Chris Thompson - Rift and Razer Hydra modules
  • Xavier Hallade - Intel RealSense tracker
  • Donovan Baarda - EWMA filter
  • Michael Welter - Kalman filter
  • Attila Csipa - S2Bot tracker
  • Wei Shuai - Wiimote tracker
  • Stéphane Lenclud - Kinect Face Tracker, Easy Tracker
See full list

License

OpenTrack is licensed under the ISC license (permissive open-source):
By contributing, you agree to license your contributions under the same terms.
See OPENTRACK-LICENSING.txt for complete licensing information.

Resources

GitHub Repository

Main codebase and issue tracker

Wiki

User documentation and guides

Plugin API

Complete API reference

Hacking Guide

Core development guide

Questions?

If you have questions about contributing:
  • Issues: Ask on GitHub Issues
  • Discussions: Start a discussion on GitHub
  • Email: Contact maintainers (see AUTHORS.md)
We’re a friendly community and welcome contributions of all sizes. Don’t hesitate to get involved!