# Contributing Guidelines
----------------------
Contributions are welcome and an important part of any open source project!
---
gl-matrix is downstream of [glMatrix](http://glmatrix.net/). New functionality in this project that is
not first accepted into [glMatrix](http://glmatrix.net/) will not be accepted here.
## Project objectives
gl-matrix is intended to be a complete Rust port of [glMatrix](http://glmatrix.net/) for those who want
to compile Rust to [WebÂAssembly](https://www.rust-lang.org/what/wasm) for [WebGL](https://rustwasm.github.io/wasm-bindgen/examples/webgl.html)
programs.
## What to contribute
- Missing functionality (Features available in [glMatrix](http://glmatrix.net/) not available in gl-matrix).
- Fixes to missing coverage.
- Fixes to bad tests.
- Optimizations (Improvements to compilation into wasm).
- Bug fixes.
- Fixes to missing or bad documentation.
## Bugs
Make sure you have the latest version of the package installed and see if that does not fix your issue.
If the issue still exists consider opening an issue or submit a pull request with the bug fix.
## Submitting pull requests
For optimization please provide a reasoning and a way to show that the optimization is an improvement to
the code base. gl-matrix uses ```#[deny(missing_docs)]``` on each module...so please add documentation to new/missing
functionality by following the conventions of the existing documentation.
### Tests
Read this before submitting your pull request.
See [TESTING.md](./TESTING.md)
### Code review
Maintainers tend to be picky. Make sure to:
- Follow the conventions of the existing code
- Follow Rust's naming conventions
- Have no warnings when building
- read [TESTING.md](./TESTING.md)