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
Read the Documentation
Familiarize yourself with OpenTrack:
- Quick Start Guide
- Hacking OpenTrack - Core development guide
- Plugin API documentation
Set Up Development Environment
Build OpenTrack from source:
Building from Source
Complete build instructions for all platforms
Plugin Development
Guide to creating custom plugins
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
Join the Community
- Create a GitHub account
- Star the OpenTrack repository
- Watch for updates
Contributing Code
Development Workflow
Fork the Repository
Create your own fork on GitHub:
- Visit opentrack/opentrack
- Click “Fork” in the top-right corner
- Clone your fork:
Create a Feature Branch
Create a branch for your changes:Branch naming conventions:
feature/- New featuresfix/- Bug fixesdocs/- Documentation changesrefactor/- Code refactoring
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
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
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
Search Existing Issues
Check if the bug is already reported:
- OpenTrack Issues
- Search closed issues too
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
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: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
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!