Contributing
Thanks for your interest in contributing to the Tencent GooseFS Rust / Python SDK.
Before you start
- Search existing issues or open a new one to discuss larger changes.
- Fork the repository and create a topic branch from
main. - Keep pull requests focused. Prefer small, reviewable diffs.
By contributing, you agree that your contributions will be licensed under the Apache License, Version 2.0. Please follow the Code of Conduct.
Development setup
Requirements:
- Rust 1.88+
- Optional: Docker (integration tests / examples)
- Optional: Python 3.9+ and uv for the Python binding
git clone https://github.com/Tencent/tencent-goosefs-rust-sdk.git
cd tencent-goosefs-rust-sdk
cargo build
cargo test
Local GooseFS cluster
bash scripts/ci/goosefs-up.sh
export GOOSEFS_MASTER_ADDR=127.0.0.1:9200
export GOOSEFS_AUTH_TYPE=simple
bash scripts/ci/run_rust_integration.sh
bash scripts/ci/run_rust_examples.sh
bash scripts/ci/goosefs-down.sh
Python binding
cd bindings/python
uv sync --all-extras --group dev --group test
uv run maturin develop --uv
uv run pytest -v
Pull requests
- Describe why the change is needed and how you tested it.
- Match existing style; run
cargo fmtandcargo clippyfor Rust. - Update docs or examples when user-facing behavior changes.
- Do not commit secrets or machine-local absolute paths.
PR title convention
[area] Short summary
Examples: [sdk] Reduce log verbosity, [sdk][py] Add retry to Python upload. Areas are lowercase identifiers such as sdk, py, ci, docs, rust.
Website docs
This documentation site lives under website/. To preview locally:
cd website
npm install
npm start