Implementation Roadmap & Future Design
This document outlines the planned improvements, feature priorities, and strategic vision for jhelm.
1. 0.1.0 Prerelease Target
The first published prerelease (0.1.0, on Maven Central, marked pre-release) is defined
by two things being true at once: a broad real-world conformance bar and a stable,
extraction-ready engine. The release is cut via maven_release.yml
(releaseVersion=0.1.0, nextVersion=0.2.0-SNAPSHOT).
1.1. Exit criteria (Definition of Done)
| Area | Criterion | Status |
|---|---|---|
Conformance gate |
≥ 300 charts render byte-identical to |
✅ 540 / 540 |
Engine maturity |
The Go template + Sprig engine ships as the standalone
gotmpl4j library on Maven Central; jhelm consumes it
as a dependency ( |
✅ Extracted — gotmpl4j on Maven Central; 540-chart suite green |
Supported surface |
All modules ship as supported: |
— |
Repo + deps |
HTTP and OCI repositories with digest verification; Helm-faithful SemVer version selection; recursive dependency value coalescing; hooks; JSON-Schema validation. |
Mostly done |
Quality gates |
|
Green |
Docs |
Antora docs current; |
In progress |
1.2. gotmpl4j (engine extraction — done)
The Go template engine has been extracted into the standalone
gotmpl4j library, published to Maven Central
(org.alexmond:gotmpl4j-core, gotmpl4j-sprig, plus a Spring Boot starter; gotmpl4j 1.2.0).
jhelm consumes
it as an ordinary dependency, keeping only the Helm-specific function layer
(jhelm-gotemplate-helm) in this repository. The extraction holds the properties that made it
mechanical rather than a redesign:
-
Correctness — no known rendering gaps; the 540-chart parity suite is the conformance bar.
-
Clean boundary — the engine has zero dependencies on Sprig, Helm, or
core; Sprig (priority 100) and Helm (priority 200) functions load only viaServiceLoader. -
Stable API —
GoTemplate,Function,FunctionProviderare settled. -
Coverage — comprehensive unit tests for lexer/parser/executor and every function category, independent of the chart suite.
1.3. API freeze (shipped in 0.4.0 — toward 1.0)
The pre-1.0 API freeze milestone landed in 0.4.0, settling the public surface ahead of a
stable 1.0:
-
Unchecked exceptions — the action layer and
KubeServicethrow theJhelmExceptionhierarchy instead ofthrows Exception. -
No leaked Kubernetes-client types —
ApiException/ApiClientare wrapped behindKubeClient; BouncyCastle PGP types behindSigningKey/VerificationKeyring. -
Options objects — the action API takes immutable
InstallOptions/UpgradeOptions/UninstallOptions/RollbackOptionsinstead of long parameter lists. -
Immutable result models —
Release/ReleaseInfo/MapConfigare immutable; releasestatusis a typedReleaseStatusenum and the lifecycle phase aLifecyclePhaseenum.
1.4. Explicit non-goals for 0.1.0
-
Full gitlab parity — blocked on a complete Helm
CoalesceValues/ProcessDependenciesreimplementation (deep, high-risk); tracked separately. -
The
gotmpl4jextraction itself —0.1.0makes the engine ready; the split lands post-0.1.0. -
Charts that are inherently uncomparable to a separate
helm templaterun (wall-clock timestamps or random suffixes in resource names). -
Server-Side Apply, WASM plugins, post-renderers, and chart signing (later phases below).
2. Recommended Implementation Roadmap
The roadmap is divided into several phases focusing on compatibility, feature completeness, and architectural modernization.
2.1. Phase 1: Helm 4 Core Compatibility (2-3 weeks)
-
Add missing template functions (
mustToYaml,mustToJson, etc.) - ✅ COMPLETED -
Category-based function refactoring - ✅ COMPLETED
-
Remove duplicate legacy functions - ✅ COMPLETED
-
Implement Server-Side Apply in
HelmKubeService -
Enhanced OCI registry support with digest verification
-
Content-based chart caching
-
Multi-document values file support
2.2. Phase 2: Feature Completeness (3-4 weeks)
-
Dependency management system
-
Hooks support (pre/post install/upgrade)
-
Missing commands (
get,show,dependency) -
JSON Schema validation - ✅ COMPLETED
-
Improved resource status watching
2.3. Phase 3: Architecture & Quality (2-3 weeks)
-
Remove Spring Boot from core modules (making them library-first)
-
Async/reactive support - ✅ COMPLETED (virtual-thread
AsyncKubeService) -
Metrics and observability
-
Enhanced error recovery
-
Better contextual error messages
3. Compatibility Matrix
| Feature | Helm 3 | Helm 4 | jhelm Current | Priority | Status |
|---|---|---|---|---|---|
Template Rendering |
✅ |
✅ |
✅ |
- |
Complete |
Sprig Functions |
✅ |
✅ |
✅ |
P1 |
✅ Complete (minor gaps tracked in Function Coverage) |
Helm 4 must Functions* |
❌ |
✅ |
✅ |
P1 |
✅ Complete |
Server-Side Apply |
❌ |
✅ |
❌ |
P1 |
Pending |
Three-Way Merge |
✅ |
❌ |
✅ |
P1 |
Complete |
Plugin System |
✅ |
✅ (new) |
❌ |
P2 |
Pending |
OCI Registries |
✅ |
✅ (enhanced) |
⚠️ |
P1 |
Partial |
Chart Dependencies |
✅ |
✅ |
✅ |
P2 |
✅ Complete |
Hooks |
✅ |
✅ |
✅ |
P2 |
✅ Complete |
JSON Schema |
❌ |
✅ |
✅ |
P2 |
✅ Complete |
Content Caching |
❌ |
✅ |
✅ |
P1 |
✅ Complete |
Structured Logging |
❌ |
✅ |
⚠️ |
P1 |
Partial |
4. Spring Boot Integration Roadmap ⭐
4.1. Strategic Vision
Transform jhelm into an enterprise-grade Helm management platform powered by Spring Boot, offering:
-
Centralized Configuration: Spring Config Server integration for values management across environments.
-
REST API: Full-featured API for programmatic Helm operations.
-
Web UI: Modern web interface for chart management and deployments.
-
Multi-tenancy: Support for multiple teams, clusters, and environments.
-
Real-time Operations: WebSocket-based deployment status and logs.
-
Enterprise Features: Security, audit logging, RBAC, SSO integration.
4.2. Architecture Design
4.2.1. New Modules
| Module | Description |
|---|---|
|
Purpose: REST API and Web UI server. |
|
Purpose: Configuration management and Spring Config integration. |
|
Purpose: Authentication, authorization, and audit (Future). |
4.2.2. Enhanced Existing Modules
-
jhelm-core: Add
@ConfigurationProperties, Spring Environment integration, Spring Events for deployment lifecycle, Spring Cache for template caching. -
jhelm-kube: Reactive operations with Spring WebFlux, Spring Retry for resilience, Spring Cloud Kubernetes for discovery, Async deployment support.
-
jhelm-cli: Read from Spring Config Server, support environment variables via Spring Boot.
-
jhelm-gotemplate-helm: Remains lightweight, no Spring dependency (pure Java), tracking the external gotmpl4j engine.