Contributing to LeonsDB
Thanks for helping make LeonsDB better. This page explains how to build the project, what we expect from a pull request, and the one piece of paperwork we need.
The Contributor License Agreement (CLA)
Before we can merge your first pull request, you need to accept the LeonsDB CLA. A bot comments on your pull request with instructions; accepting takes one comment and you only do it once.
Why we ask for it. LeonsDB is funded by commercial agreements, such as hosting partnerships, and by paid products built on the free core. To offer those we need the right to license every line of the server under different terms, including yours. The CLA gives us that right. In return, it guarantees your contribution always stays available under the license it was submitted under, and you keep the copyright to your work.
Building
You need Go (see server/go.mod for the version) and a JDK 21 or newer.
# Server
cd server
go test ./...
go build -o leonsdb ./cmd/leonsdb
# Connector
cd connector
./gradlew build
After changing a .proto file, regenerate the Go code with
scripts/gen-proto.sh (needs protoc, protoc-gen-go and
protoc-gen-go-grpc) and commit the result. The Java code is generated
during the Gradle build.
Pull requests
-
Data safety comes first. A change that can lose or corrupt data will not be merged, however fast it is. Changes to the storage engine need tests that cover crashes and restarts.
-
Every change needs tests. Bug fixes need a test that fails without the fix.
-
Every new source file needs a license header matching its folder (see LICENSING.md):
// SPDX-License-Identifier: BUSL-1.1 // Copyright (c) 2026 Leoon-XCI checks this.
-
Dependencies must have a permissive license (MIT, BSD, Apache-2.0 and similar). CI rejects copyleft dependencies everywhere. If you add a dependency, add it to
NOTICE. -
Run
gofmton Go code. Keep the existing style in Java code. -
Keep pull requests focused: one change per pull request.
Reporting bugs and security issues
Open a GitHub issue for bugs. Do not open public issues for security problems; follow SECURITY.md instead.