Thank you for your interest in contributing. This document explains how to submit changes and what we expect from contributors.
This project adheres to the Code of Conduct. By participating, you are expected to uphold this code.
This project uses the Developer Certificate of Origin (DCO). By contributing, you agree to the terms of the DCO. You certify that you have the right to submit your contribution under the project's license (Apache 2.0).
Sign-off: Each commit must include a sign-off line:
Signed-off-by: Your Name <your.email@example.com>
Use git commit -s to add the sign-off automatically.
- Bugs: Open an issue using the bug report template. Include steps to reproduce, environment (Kubernetes version, IPFS setup), and logs if relevant.
- Features: Open an issue with the feature request template and describe the use case and proposed behavior.
-
Fork the repository and create a branch from
main. -
Make your changes: Follow the style and conventions used in the project (see below).
-
Run checks locally:
make deps/all make verify/fmt make verify/lint make test/unit make -C charts lint/all make -C charts test/all
-
Commit with a clear subject and body. Prefer this shape: subject line
[<type>]: <summary>(for examplefeat,fix,docs,chore,test,ci,refactor), a blank line, a short description, a blank line, thenSigned-off-by:(usegit commit -sfor the sign-off line). Merge commits and subjects starting withRevertare fine as produced by Git. -
Push and open a Pull Request. Fill in the PR template and link any related issues.
- Formatting: Run
make verify/fmt(orgo fmt ./...). The project usesgolangci-lint; runmake verify/lintand fix any reported issues. Usemake verify/lint-fixfor auto-fixable linters. - Tests: Add or update tests for behavioral changes. Run
make test/unitand, if applicable,make test/unit-race. - Helm charts: Use
make -C charts(see charts/README.md): e.g.make -C charts lint/all,make -C charts test/all,make -C charts release/package/all,CR_TOKEN=... make -C charts release/upload/all. - License header: New source files must include the Apache 2.0 license header. Use
make gen/license-headerto add it, andmake verify/license-headerto check.
cmd/csi-driver-ipfs/— main entrypoint; wires config, informers, and the CSI driver.pkg/driver/— CSI driver implementation (controller, node, identity).pkg/ipfs/— IPFS/Kubo API client.pkg/kubernetes/— Kubernetes informers (PV, VolumeSnapshotContent) and store interfaces; no direct API polling.pkg/logging/,pkg/grpc/— logging and gRPC middleware.charts/— Helm charts (csi-driver-ipfs, ipfs-cluster).docs/— Docusaurus documentation source and docs build toolchain..markdownlint.json— rule overrides;.markdownlint-cli2.jsonc— globs and ignores formarkdownlint-cli2(it does not read.markdownlintignore; that file is only for legacymarkdownlint-cli).hack/— license-header scripts.hack/ci/— shell scripts used only from GitHub Actions (seehack/ci/README.md).
All library code lives under pkg/. An internal/ package is not used so that the driver and helpers remain importable
if needed.
See MAINTAINERS.md for the list of maintainers and how to reach them.
Thank you for contributing.