Thanks for your interest in contributing! This file covers the basics of how
to file issues, send a pull request, and report security problems. If you're
looking for the full architecture or extension guide, that lives in
docs/.
Bug reports, feature requests, and design discussions all live in GitHub Issues. Before opening a new issue, please search existing ones — there's a good chance someone has already raised the same point.
For bugs, please include:
- The Hoptimator version (or commit hash) you're running.
- The Kubernetes context — managed cluster, kind, Docker Desktop, etc.
- The minimum SQL or YAML that reproduces the problem.
- Relevant log output or
kubectl describeoutput.
-
Fork the repo and create a branch off
main. -
Build and test locally:
make build make testIntegration tests (which spin up a real Kubernetes-backed dev environment) live behind
make integration-tests— please run them when changing anything that touches deployment or planning.SQL-level test cases live in
*.idfiles under each module'ssrc/test/resources/and are driven by Quidem — a script of.idlines likecreate table foo ...;followed by the expected output. Quidem runs them through a real JDBC connection and compares output line by line. Add or extend a.idfile when you change DDL parsing, planning, or any user-facing SQL behavior; runningmake testregenerates the diff. TheQuidemTestBaseclass inhoptimator-jdbcis the shared harness. -
Cover your changes. New code needs tests; don't ship behavior that isn't exercised by either a unit or an integration test. Generate a coverage report with:
make coverage # report at build/reports/jacoco/aggregate/index.htmlWe aim for 80% line coverage on changed code. The CI workflow currently enforces a softer 60% on changed files and 40% overall, but targeting 80% locally keeps the trend in the right direction.
-
Regenerate Java models if you touched a CRD. The Java classes under
hoptimator-k8s/src/main/.../models/are auto-generated from the CRD YAMLs inhoptimator-k8s/src/main/resources/. After adding, removing, or modifying a CRD field, run:make generate-models
The script uses the upstream Kubernetes Java client's
crd-model-genDocker image, so Docker must be running. Commit the regenerated files alongside your CRD change. -
Match the existing style. The project runs Checkstyle and SpotBugs as part of the build; CI will fail if either complains.
-
Keep commits focused. One logical change per commit, with a descriptive message. Reference the issue number if there is one.
-
Open the PR. Describe what changed and why. Link any relevant issues.
As a contributor, you represent that the code you submit is your original work or that of your employer (in which case you represent you have the right to bind your employer). By submitting code, you (and, if applicable, your employer) are licensing the submitted code to LinkedIn and the open source community subject to the BSD 2-Clause license that ships with this repository.
Please do not file GitHub issues for security problems. Send reports privately
to security@linkedin.com, preferably with the
subject line linkedin/Hoptimator - <short summary>.