# Contributing to TurboQuant Elyan Thanks for your interest in contributing! ## How to Contribute ### Bug Reports 1. Search existing issues to avoid duplicates 2. Open a new issue with clear reproduction steps 3. Include compiler, OS/arch, and whether the VSX or scalar path was used ### Code Contributions 1. **Fork** this repository 2. **Create a branch**: `git checkout -b feature/your-feature` 3. **Write code** in the style of the file you are touching 4. **Add tests** for new functionality 5. **Submit a PR** with a clear description ### Code Style - C11 for `ggml-turboquant-vsx.h`, CUDA C++ for `turboquant_cuda_kernel.cu` - 4-space indent, `_tq3_` prefix on internal helpers - The header must keep building with no `-mvsx`: the scalar fallback is the reference implementation ### Testing ```bash make test # suite + tq3_self_test(), scalar or native VSX make test-vsx # cross-build for POWER8 sh tests/check_backends_agree.sh # header, CUDA kernel and README agree ``` - New features require new tests - All tests must pass on CI - Anything that changes `norm`, `scale` or the packed indices also changes the golden block in `tests/test_turboquant_vsx.c`; regenerate it and say so in the PR, since it is what pins cross-backend bit-exactness ### Quality Checklist - [ ] Code follows project style - [ ] New code has tests - [ ] All existing tests pass - [ ] No hardcoded secrets or API keys - [ ] Documentation updated if needed ## Code of Conduct Be respectful. Constructive feedback only. No harassment. ## License By contributing, you agree your code is licensed under the same license as this project.