# Contributing

Monoio is still relatively incomplete, and we welcome anyone to contribute to Monoio :)

If you don't know where to start, you can try to use Monoio to write a specific example project, maybe you can find areas for improvement. Currently Monoio only provides some network components, and they also have major problems in the compatibility of the existing ecosystem. You can contribute to the main Monoio project, or you can align some existing components based on Monoio's IO interface.

## Code of Conduct
The Monoio project complies with the [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct). Violations can be reported to the administrator via email: chihai.hain@bytedance.com / john.xu@bytedance.com.

## Pull Requests
We welcome any code contributions, please try to make them follow the following rules:

1. Pass the test and format. Although we have CI to automate testing, it is recommended that you pass `cargo test` and `cargo fmt` locally before submitting. In many cases, you may need to bring `--all-features` to ensure that it can work properly under different features.
2. In the PR, describe your **problem to be solved**, **thought to solve the problem**, and **architecture design** in as much detail as possible. And as far as possible, the working logic of the code is described through rich documents.
3. Describe your commit concisely and clearly in the git message.

It is recommended to use GPG to sign your commit.

## Discussion group
If you have any needs, welcome to join our discussion group.

Feishu(Lark) Group can scan the following QR code:

<img src=".github/resources/monoio-lark.png" height="310px" width="274px">

To join the Telegram discussion group, please use the [Link](https://t.me/+zVUaFzxnmK43Yzk1).