# Contributing to glam
Thanks for contributing to `glam`! These guidelines will try to make the
process painless and efficient.
The short guide to contributing is [start a discussion] on GitHub. Pull
requests are welcome for bug fixes, documentation improvements and
optimizations. For anything else it would be best to discuss it first.
## Questions
If you have a question about the usage of this library please [ask a question]
with GitHub Discussions. That's the easiest way to get support right now.
## Bugs
If you find a bug please [open an issue] on GitHub or submit a pull request. A
unit test for any bug that slipped through existing coverage would also be
greatly appreciated.
## New functions and methods
If `glam` is missing functionality on existing types, [suggest a new feature]
with GitHub Discussions describing what feature you would like added and
ideally what your use case is for it just so I have a better understanding of
the feature. I'd like to keep `glam` reasonably light functionality wise
initially but commonly used functionality that is missing is very welcome. If
you do submit a pull request please ensure any new functionality also has a
test.
## Optimizations
If you feel some functionality could be optimized please [open an issue] on
GitHub or submit a pull request. Any optimization pull request should include a
benchmark if there isn't one already, so I can confirm the performance
improvement.
## Documentation
If you feel any documentation could be added or improved please
[open a GitHub issue] or submit a pull request.
## Code contributions
Most of `glam`'s source code is generated. See the [codegen README] on how
to modify the code templates and generate new source code.
You can run some of `glam`'s test suite locally by running the
`build_and_test_features.sh` script. It's worth running that before creating a
PR.
Also run `cargo fmt` and `cargo clippy` on any new code.
[start a discussion]: https://github.com/bitshifter/glam-rs/discussions/new
[open an issue]: https://GitHub.com/bitshifter/glam-rs/issues/new
[ask a question]: https://github.com/bitshifter/glam-rs/discussions/new?category=q-a
[suggest a new feature]: https://github.com/bitshifter/glam-rs/discussions/new?category=ideas
[codegen README]: codegen/README.md