Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Getting Started (contributors)

This page is for people who want to contribute to jetwarp itself — whether that’s a bug fix, a new driver, a suite test, or documentation.


Prerequisites

  • Go 1.26+ — all modules in the repo declare go 1.26.0.
  • git
  • golangci-lint (for linting; install via the script or your package manager)

Optional but useful:

  • mdBook v0.4.40 — for building the docs site locally.

1) Clone

git clone https://codeberg.org/iaconlabs/jetwarp
cd jetwarp

2) Set up a workspace

jetwarp is a multi-module repository. For local development across modules, use a Go workspace:

go work init .
go work use \
  ./adapter/chi ./adapter/echo ./adapter/fiber ./adapter/gin ./adapter/stdlib \
  ./drivers/v1/chi ./drivers/v1/echo ./drivers/v1/fiber ./drivers/v1/gin ./drivers/v1/stdlib \
  ./openapi/oas3 ./openapi/oas3/validate
go work sync

The go.work file is not committed to the repo. It is a contributor convenience and is invisible to downstream users.


3) Run the tests

Quick check (all modules)

bash tools/test-all.sh

This runs go test ./... for every module in the workspace, including the OpenAPI smoke gate.

With the race detector:

TW_TEST_ALL_RACE=1 bash tools/test-all.sh

Module-by-module (if you don’t have a workspace)

go test ./...                       # root module
(cd adapter/chi && go test ./...)
(cd drivers/v1/chi && go test ./...)
(cd openapi/oas3 && go test ./...)

Lint

bash tools/lint-all.sh

4) Before opening a PR

Run the full gate that the release script checks:

bash tools/test-all.sh
bash tools/lint-all.sh

Then make sure:

  • gofmt -l . outputs nothing (no unformatted files)
  • go vet ./... passes (per module)
  • Any new driver or behavior change is covered by the conformance suite

See Tests & suite for guidance on adding suite tests.


5) Building the docs locally (optional)

# install mdBook once
curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.40/mdbook-v0.4.40-x86_64-unknown-linux-gnu.tar.gz \
  | tar -xz --directory /usr/local/bin

# live preview
mdbook serve docs

# static build
mdbook build docs