Skip to main content

Contributing

Thanks for your interest in contributing to the Tencent GooseFS Rust / Python SDK.

Before you start

  1. Search existing issues or open a new one to discuss larger changes.
  2. Fork the repository and create a topic branch from main.
  3. 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 fmt and cargo clippy for 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