# Contributing Guidelines

> [<- Back to README](README.md)

## Overview

This project is an open-source library and set of plugins for advanced input systems in games and software (eye tracking, emotion-based inputs, etc.), including sample projects for supported game engines.

All contributions are subject to the terms described below.

## Accepted Types of Contributions

We accept the following types of contributions:

- Bug fixes
- Performance improvements
- New input device integrations
- Platform or engine-specific plugins
- Documentation improvements
- Test coverage improvements

We do **not** accept:

- Unreviewed large architectural changes
- Breaking API changes without prior discussion
- Code generated by proprietary tools without redistribution rights

## Contribution Process

1. Fork the repository
2. Create a feature (or fix) branch from the main branch
3. Make focused, atomic commits
4. Ensure the project builds and tests pass
5. Submit a pull request with a clear description of:

   - What was changed
   - Why the change is necessary
   - Any relevant limitations or trade-offs

Pull requests that do not follow this process may be rejected without review.

## Coding Standards

All contributions must:

- Follow the existing project structure and conventions
- Avoid unnecessary dependencies
- Don't be platform-dependant unless explicitly targeting a plugin
- Update documentation for any public API changes
- Avoid breaking existing public APIs

Contributors are responsible for maintaining backward compatibility where applicable.

## Commit Message Format

We accept these commit message formats:

- ```feat: new launching script```
- ```fix: upscale width for doors selection GUI```

We do **not** accept:

- ```feat: add bpm-related music in rhythm game scene + link heartbeat sensor web server with python server + update python server structure + add new eye tracking features``` (non-atomic)
- ```value``` (doesn't explain anything)

## Legal Requirements

### License

This project is licensed under the **MIT**.

By submitting a contribution, you agree that:

- You have the right to submit the contribution
- Your contribution is licensed under the MIT.
- You grant the project and its users a perpetual, worldwide, royalty-free license to use, modify, and distribute your contribution

No additional contributor license agreement (CLA) is required.

## Patents

By contributing, you grant a patent license as described in Section 3 of the MIT.
Do not submit contributions that are encumbered by patent claims you cannot license.

## Attribution

- Do not remove existing copyright notices.
- New files must include appropriate copyright headers consistent with the project.

## Communication and Review

- Maintain a professional and technical tone
- Design decisions may be challenged during review
- Maintainers reserve the right to reject contributions that do not align with the project's goals

All decisions by maintainers are final.

We may respond within 5 business days.

## Questions and Proposals

For significant changes or new features, open an issue before starting implementation.
Uncoordinated major changes are likely to be rejected.

## Final Notes

Contributions are evaluated on correctness, clarity, and maintainability.
