Thank you for your interest in contributing to Zngur! There are many ways to contribute and all of them are appreciated.
This doc probably won't cover everything. Feel free to open an issue for asking questions. You can also join our telegram group for real time communication.
- Use
zngurin your C++/Rust projects and report bugs - See the issues and pick one
- Improve missing docs
Zngur is a simple cargo workspace so you can build each crate using cargo build using the stable toolchain.
For building the workspace as a whole, you need to generate codes needed by examples that use makefile.
cargo xtask ci will do it for you, but you need to install dependencies. You can use mise for that,
which is what used on ci.
I know that DX is not as great as it could be (but you are working with C++ so you know it is not that bad) specially for first time contributors, and I would appreciate contributions in this area.
We (ab)use examples as an end to end test platform. So please add examples for features that you add.
If your patch is not a feature, you can use regression_test example for that.
You can run the tests using cargo xtask ci or let the CI do that for you.
Adding a proper end to end test infra (e.g. with support for failing cases and diagnostics) is appreciated.
This generally follows the Rust project LLM policy and if a case is not covered here, please refer to that doc.
- ✅ Any private use of LLM is allowed. Including asking questions, summarizing, consulting, private code review, ...
- ❌ Posting any English text generated by LLM is banned. Including PR description, issue comments, docs, code comments, ...
⚠️ Text intended to be used with LLM (e.g. LLM prompt template) is excluded.
⚠️ Using LLM for code generation is conditionally allowed:- It should be disclosed. You should also disclose model name, tools and other major factors.
- For non trivial code changes, communicate with me before doing the change.
- Review the generated code yourself before submitting it.
- To make it easier for everyone, break task to smaller pieces, and use separate commits. As a rule of thumb, an LLM generated commit should not contain more than 100 line changes. This is not a hard requirement, but doing so would help yourself better understanding of the LLM code, which is required for submitting LLM patches.
- If a file is completely generated by LLM, mark it with a comment at top of the file. If a crate is completely generated,
write a
README.mdfile for it and tell it. The goal is to make other people able to find that it is LLM generated without looking at git blame. - Don't let LLM to write
unsafecode. This includes C++ code and code that may trigger other unsafe codes to behave unexpectedly.
For rationale behind these rules, see the Rust project LLM policy.