aboutsummaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md109
1 files changed, 51 insertions, 58 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6e34e93..60c1dbe 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,35 +1,45 @@
# Contribution Guide
-First of all, thank you for your interest in Mingling! 🎉 Whether it's fixing bugs, improving documentation, adding new features, or making suggestions, we welcome all contributions.
+First of all, thank you for your interest in Mingling! 🎉
+Whether it's fixing bugs, improving documentation, adding new features, or making suggestions,
+we welcome all contributions.
Before contributing, we recommend reading [README](README.md) to get an overview of the project.
## 1. Project Structure 📦
-| Category | Path/Name | Description |
-| --------------------------- | -------------------- | ----------------------------------------------------------------------- |
-| **Entry crate** | `mingling/` | Project entry point |
-| **Core library** | `mingling_core/` | Imported as an external dependency |
-| **Macro library** | `mingling_macros/` | Imported as an external dependency |
-| **Mingling Pathfinder** | `mingling_pathf/` | Build-time module path resolution for types |
-| **Mingling Picker2** | `arg_picker/` | Mingling Arguments Parser |
-| **Mingling Picker2 Macros** | `arg_picker_macros/` | Mingling Arguments Parser Macros |
-| **Scaffolding tool** | `mling/` | Scaffolding tool `mingling-cli` |
-| **Examples** | `examples/` | To add expected output tests, add a `test.toml` in the example's dir |
-| **Documents** | `docs/` | All documents |
-| **Dev Documents** | `docs/dev/` | Internal documents |
-| **Resources** | `docs/res/` | All resources |
-| **CI system** | `mingling_ci/` | CI crate built on the Mingling framework, invoked via `cargo ci` |
-| **CI orchestration** | `.run/src/bin/ci.py` | Full pipeline script (lock → checks → refresh → unlock) |
-| **Development tools** | `.run/src/bin` | Contains scripts and Rust tools (`deploy-api-docs`, `install-mling`, …) |
-| **CI configs** | `.config/` | `ci-ignored-dirs.txt`, `verified-docs.toml`, `docs-lang.txt` |
-| **Temporary files** | `.temp/` | Ignored by `.gitignore` |
+| Category | Path/Name | Description |
+| ----------------------- | -------------------- | ----------------------------------------------------------------------- |
+| Main | | |
+| **Entry crate** | `mingling/` | Project entry point |
+| **Mingling CLI** | `mingling_cli/` | Mingling's toolchains |
+| **Core library** | `mingling_core/` | Imported as an external dependency |
+| **Macro library** | `mingling_macros/` | Imported as an external dependency |
+| **Mingling Pathfinder** | `mingling_pathf/` | Build-time module path resolution for types |
+| **Arg Picker** | `arg_picker/` | Mingling Arguments Parser |
+| **Arg Picker Macros** | `arg_picker_macros/` | Mingling Arguments Parser Macros |
+| Documents | | |
+| **Examples** | `examples/` | To add expected output tests, add a `test.toml` in the example's dir |
+| **Help Documents** | `docs/pages/` | User-facing help documents (raw) |
+| **Help Documents** | `docs/[LANG]/pages` | User-facing help documents (translations) |
+| **Dev Documents** | `docs/dev/` | Internal documents |
+| **Resources** | `docs/res/` | All resources |
+| Dev Tools | | |
+| **CI system** | `dev/ci/` | CI crate built on the Mingling framework, invoked via `cargo ci` |
+| **CI configs** | `dev/configs/` | `ci-ignored-dirs.txt`, `verified-docs.toml`, `docs-lang.txt` |
+| **CI orchestration** | `.run/src/bin/ci.py` | Full pipeline script (lock → checks → refresh → unlock) |
+| **Development tools** | `.run/src/bin` | Contains scripts and Rust tools (`deploy-api-docs`, `install-mling`, …) |
+| Misc | | |
+| **Temporary files** | `.temp/` | Ignored by `.gitignore` |
## 2. How to Contribute
+To ensure your contribution goes smoothly, please choose the guide that best fits your contribution area.
+
### Code Contribution
-If you'd like to contribute to `mingling`, `mingling_core`, `mingling_macros`, or `mingling_pathf`, first share your idea on the [Github Issue](https://github.com/mingling-rs/mingling/issues) page to confirm before starting work.
+If you'd like to contribute to `mingling`, `mingling_core`, `mingling_macros`, or `mingling_pathf`,
+first share your idea on the [Github Issue](https://github.com/mingling-rs/mingling/issues) page to confirm before starting work.
- **Before making changes**, make sure your branch stays **as close as possible** to the upstream `main` branch.
- **After finishing**, run the full CI pipeline locally (see [ABOUT CI](https://mingling-rs.github.io/mingling/docs/dev/#/pages/abouts/ci) for how it works):
@@ -38,13 +48,15 @@ If you'd like to contribute to `mingling`, `mingling_core`, `mingling_macros`, o
./run.sh ci
```
-If it passes locally, your changes are most likely correct. (`./run.sh ci` runs `python .run/src/bin/ci.py`, which locks the workspace, runs every check and refresh step, then unlocks — the final unlock fails if the run left the tree dirty.)
+If it passes locally, your changes are most likely correct. (`./run.sh ci` runs `python .run/src/bin/ci.py`,
+which locks the workspace, runs every check and refresh step, then unlocks — the final unlock fails
+if the run left the tree dirty.)
### Example Code Contribution
To add or modify examples under `examples/`, follow these rules:
-- Place each example in `examples/<example-dir>/`
+- Place each example in `examples/{{example-dir}}/`
- Each dir must contain a `page.toml` file describing the example's metadata
- `page.toml` format:
@@ -77,12 +89,6 @@ If you change expected behavior, update the assertions in the example's `test.to
After editing examples, run these commands to keep things in sync:
```bash
-# Ensure code compiles
-cargo ci build-check
-
-# Ensure code style
-cargo ci clippy-check
-
# Check all examples behave as expected
cargo ci example-check
@@ -97,11 +103,21 @@ cargo ci example-refresh
### Documentation Contribution
-To contribute docs, edit files under `docs/`. For other language translations, refer to the structure under `docs/zh_CN`.
+To contribute to the documentation, please edit the files under `docs/`.
+For translations into other languages, refer to the directory structure under `docs/zh_CN`.
+
+> [!Warning]
+>
+> Mingling's API is currently unstable, so adding documentation content may not be
+> the best use of effort at this stage.
+>
+> It is recommended to **only fix typos, grammar issues, etc.**
+
+#### Verify
-- **When editing docs**, prioritize **Chinese docs** first, then **English docs** — since I ([@Weicao-CatilGrass](https://github.com/Weicao-CatilGrass)) am a native Chinese speaker, this is more efficient.
-- If your changes involve code, check the [Code Verify System](https://mingling-rs.github.io/mingling/docs/dev/#/pages/abouts/code-verify-system), which explains how CI checks code.
-- **Before submitting**, always run:
+Documentation is checked by `cargo ci markdown-check-all` and `cargo ci markdown-compare-all` to ensure that **all** languages have consistent documentation structure and that the code compiles.
+
+You can verify the documentation with the following commands:
```bash
# Fix code box issues and regenerate sidebars
@@ -126,7 +142,8 @@ No strict requirements here — just modify the relevant `*.html` files. Preview
### Dev Tool Contribution
-`Mingling CI` code is under strict review. If you want to improve `mingling`'s CI pipeline (`mingling_ci/`) or other dev tools (under `.run/`), **please** first file an [Issue](https://github.com/mingling-rs/mingling/issues) and contact [Weicao-CatilGrass](https://github.com/Weicao-CatilGrass)!
+`Mingling CI` code is under strict review. If you want to improve `mingling`'s CI pipeline (`dev/ci/`) or other dev tools (under `.run/`),
+**please** first file an [Issue](https://github.com/mingling-rs/mingling/issues) and contact [Weicao-CatilGrass](https://github.com/Weicao-CatilGrass)!
## 3. Submission Guide 🖊
@@ -154,30 +171,6 @@ No strict requirements here — just modify the relevant `*.html` files. Preview
6. **Binary Resources**
- For binary resource files (images, etc.), please be cautious about adding them to avoid repository bloat
-## 4. Documentation Contribution 📕
-
-### Documentation Location
-
-- English documentation: `docs/pages/`
-- Chinese documentation: `docs/_zh_CN/pages/`
-
-### Documentation Build
-
-After editing documentation, refresh relevant files:
-
-```bash
-# Fix code block blank line issues and regenerate sidebars
-cargo ci docsify-refresh
-
-# Regenerate example docs module and examples index
-cargo ci example-refresh
-```
-
-These steps are part of the full pipeline; `./run.sh ci` executes them automatically and fails if they leave the tree dirty (i.e. the generated files were stale).
-
-> [!TIP]
-> You can check the [ABOUT CI](https://mingling-rs.github.io/mingling/docs/dev/#/pages/abouts/ci) section to learn how "Mingling CI" works.
-
## 5. Regarding AI Agent Usage 🤖
- You are free to use AI agents to assist development — no restrictions
@@ -191,6 +184,6 @@ Mingling uses the **MIT + Apache 2.0** dual license. For details, please see:
- [LICENSE-MIT](LICENSE-MIT)
- [LICENSE-APACHE](LICENSE-APACHE)
-# Contributors
+# Contributors ❤
<img src="https://contrib.rocks/image?repo=mingling-rs/mingling" />