Thanks for helping improve DiffKeeper! This guide covers how to set up a dev environment, coding standards, and what we expect in pull requests.
- Go 1.23+
- Docker 24+ (for demos/tests)
- Optional: clang/llvm + kernel
vmlinux.hfor eBPF builds (seedocs/ebpf-guide.md) - Optional:
make(recommended for repeatable builds)
git clone https://github.com/saworbit/diffkeeper.git
cd diffkeeper
go mod download
make build # or: go build ./...go test ./... # unit + integration tests
golangci-lint run ./... # uses .golangci.yml defaults
make demo # optional: end-to-end demo (Postgres survive kill -9)Please run gofmt -w (or go fmt ./...) before sending a PR. If you modify Docker or docs, keep examples runnable and verified locally.
- Prefer small, focused changes with clear rationale in commit messages.
- Add tests for new behavior and regression coverage for bug fixes.
- Keep log messages actionable (what failed, what path, next step).
- Default to eBPF-first behavior but keep fsnotify parity; avoid regressions on Windows.
- Document new flags, env vars, and metrics in
docs/quickstart.mdor relevant docs.
- Tests pass:
go test ./... - Lint clean:
golangci-lint run ./... - New/changed behavior is documented
- Added/updated examples or demos if applicable
- Screenshots or logs included for UI/UX changes (if any)
Create a GitHub issue with:
- Repro steps (commands, environment, OS/kernel)
- Expected vs. actual behavior
- Relevant logs (
--debugoutput) and metrics (diffkeeper_*)
- Open items and roadmap:
docs/history/implementation-checklist.md - Architecture:
docs/architecture.md - Kubernetes:
k8s/anddocs/guides/kubernetes-testing.md - Demos/examples:
demo/
- Issues: https://github.com/saworbit/diffkeeper/issues
- Discussions: https://github.com/saworbit/diffkeeper/discussions
- Email: shaneawall@gmail.com
Thanks for contributing!