Description
This is a proposal split into 3 RFCs to make each one better-defined and easier to review.
RFC 5 - Expression Language
Open Job Description templates need a flexible way to customize job structure and express glue transformations between different interfaces. Schedulers must understand job structure without running tasks to determine it, so need the ability to evaluate it in an isolated, secure, and bounded context. We propose a domain-specific expression language to provide this flexibility. The language we define has a type system and set of operations rich enough to cover the diverse use cases identified in community discussions, with well-defined, bounded expression evaluation semantics.
RFC 6 - Expression Function Library
This RFC defines the operators and built-in functions for the expression language introduced in RFC 0005. By separating the function library from the core language specification, we enable independent evaluation and evolution of these concerns. The library provides arithmetic, string, list, path, and serialization operations sufficient for common job template use cases.
RFC 7 - Extended Parameter Types
This RFC extends the job parameter type system with boolean and list types, and makes type names case-insensitive. These additions enable template authors to express common patterns more naturally and align type syntax with surrounding YAML/JSON conventions.
Working Prototype Implementation
I've created a fully-functioning prototype implementation across openjd-model, openjd-sessions, and openjd-cli.
The RFC and all the prototype implementation were created with the assistance of AI (Kiro CLI using Claude Opus 4.5 and 4.6).
Roles
Workflow
Please close this tracking issue when the proposal enters the Released stage of the process.
Open Points
For easier discovery, especially if there is a lot of discussion on this issue, then please keep this section updated
with brief summaries and pointers to the main points of discussion.
The author is responsible to progress the RFC according to this checklist, and
apply the relevant labels to this issue.
Description
This is a proposal split into 3 RFCs to make each one better-defined and easier to review.
RFC 5 - Expression Language
Open Job Description templates need a flexible way to customize job structure and express glue transformations between different interfaces. Schedulers must understand job structure without running tasks to determine it, so need the ability to evaluate it in an isolated, secure, and bounded context. We propose a domain-specific expression language to provide this flexibility. The language we define has a type system and set of operations rich enough to cover the diverse use cases identified in community discussions, with well-defined, bounded expression evaluation semantics.
RFC 6 - Expression Function Library
This RFC defines the operators and built-in functions for the expression language introduced in RFC 0005. By separating the function library from the core language specification, we enable independent evaluation and evolution of these concerns. The library provides arithmetic, string, list, path, and serialization operations sufficient for common job template use cases.
RFC 7 - Extended Parameter Types
This RFC extends the job parameter type system with boolean and list types, and makes type names case-insensitive. These additions enable template authors to express common patterns more naturally and align type syntax with surrounding YAML/JSON conventions.
Working Prototype Implementation
I've created a fully-functioning prototype implementation across openjd-model, openjd-sessions, and openjd-cli.
The RFC and all the prototype implementation were created with the assistance of AI (Kiro CLI using Claude Opus 4.5 and 4.6).
Roles
Workflow
rfc/proposed)rfc/exploring)rfc/exploringandrfc/final-comments)rfc/accepted-future)rfc/accepted-draft)rfc/accepted-staged)rfc/released)Please close this tracking issue when the proposal enters the
Releasedstage of the process.Open Points
For easier discovery, especially if there is a lot of discussion on this issue, then please keep this section updated
with brief summaries and pointers to the main points of discussion.