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:
- Quick Start Guide
- Hacking OpenTrack - Core development guide
- Plugin API documentation
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 interfacestracker-*/- Tracker implementationsfilter-*/- Filter implementationsproto-*/- Protocol implementationsgui/- Main application UIcmake/- Build system
4
Join the Community
- Create a GitHub account
- Star the OpenTrack repository
- Watch for updates
Contributing Code
Development Workflow
1
Fork the Repository
Create your own fork on GitHub:
- Visit opentrack/opentrack
- Click “Fork” in the top-right corner
- Clone your fork:
2
Create a Feature Branch
Create a branch for your changes:Branch naming conventions:
feature/- New featuresfix/- Bug fixesdocs/- Documentation changesrefactor/- 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:
- Navigate to your fork
- Click “Pull Request”
- Select your branch
- Write a detailed description:
- What problem does it solve?
- How to test the changes?
- Any breaking changes?
Code Style Guidelines
- C++
- CMake
- Qt
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:
- OpenTrack Issues
- Search closed issues too
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.
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
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 Or edit XML directly:
.ts files:3
Test Translation
Build and test:
4
Submit Translation
Create a PR with your translations:
Adding a New Language
To add a new language:-
Add language code to
CMakeLists.txt: -
Create
.tsfiles in each module’slang/directory - Translate using Qt Linguist
- Submit PR with new language support
Testing and QA
Beta Testing
Help test new features:-
Try pre-release builds:
- Check GitHub Actions for CI builds
- Test on your hardware
-
Report findings:
- What works well
- What doesn’t work
- Performance issues
-
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 contributorsREADME.md- Credits section- Module-specific files - Component authors
Current Contributors
FromAUTHORS.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
License
OpenTrack is licensed under the ISC license (permissive open-source):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!