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.workfile 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