Thank you for your interest in contributing to ColdBrew! This guide will help you get started.
- Go 1.25+
- golangci-lint
- gomarkdoc (for regenerating README docs)
- buf (for protobuf work in core/cookiecutter)
Each ColdBrew package is an independent Go module with its own repository:
# Clone the package you want to work on
git clone https://github.com/go-coldbrew/<package-name>.git
cd <package-name>
# Build
make build
# Run tests with race detection
make test
# Run linter
make lint
# Run benchmarks
make benchPackages are organized in dependency order. If your change spans multiple packages, work in this order:
options → errors → log → tracing → grpcpool → interceptors → data-builder → core
- Open an issue first — discuss the change before investing time in a PR. (Do not open public issues for security vulnerabilities; see SECURITY.md for private disclosure instructions.)
- Check existing issues — someone may already be working on it
- One concern per PR — keep changes focused and reviewable
- Follow standard Go conventions (
gofmt,go vet) - All exported functions and types must have doc comments
- Configuration functions follow the "init-only" pattern (called during startup, not thread-safe) — this is intentional and consistent across the codebase
context.Contextis always the first parameter
- All changes must include tests
- Tests must pass with the race detector:
make test(runsgo test -race ./...) - Linting must pass:
make lint - If you add or change exported APIs, regenerate the README:
make doc
- Use clear, descriptive commit messages
- Start with a verb in imperative mood (e.g., "Add support for...", "Fix race condition in...")
- Fork the repository
- Create a feature branch from
main - Make your changes with tests
- Run
make test && make lint - If you changed exported APIs or doc comments, run
make docand commit the updatedREADME.md - Open a PR against
main
- Tests pass (
make test) - Linter passes (
make lint) - README regenerated if APIs changed (
make doc) - No breaking changes (ColdBrew is used by 100+ services in production)
- Doc comments added for new exported APIs
ColdBrew powers 100+ microservices in production. Breaking changes — especially runtime breakage — are not acceptable. If you need to deprecate something, add a new API alongside the old one.
READMEs are auto-generated from Go doc comments using gomarkdoc. To update documentation:
- Edit the doc comments in the Go source code
- Run
make docto regenerateREADME.md - Commit the updated
README.mdalong with your code changes
Full documentation lives at docs.coldbrew.cloud.
- Open an issue on the relevant package repository
- Check the How-To Guides for usage examples
- Review the Packages page for API documentation
By contributing to ColdBrew, you agree that your contributions will be licensed under the Apache License 2.0.