# How to contribute

We'd love to accept your patches and contributions to this project.

To get started with contributing, please take a look at the
[Contributing](https://iree.dev/developers/general/contributing/) guide.

## Getting in touch

*   [GitHub issues](https://github.com/iree-org/iree/issues): Feature requests,
    bugs, and other work tracking
*   [IREE Discord server](https://discord.gg/wEWh6Z9nMU): Daily development
    discussions with the core team and collaborators
*   [iree-technical-discussion email list](https://lists.lfaidata.foundation/g/iree-technical-discussion):
    General and low-priority discussion

## Community guidelines

This project follows the
[LF Projects code of conduct](https://lfprojects.org/policies/code-of-conduct/).
