-
Notifications
You must be signed in to change notification settings - Fork 27
Description
- Pull Request: feat(RFC): An expression language for format strings #113
- Discussion Thread(s):
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
| Role | User |
|---|---|
| Proposed By | @mwiebe |
| Author(s) | @mwiebe |
Workflow
- Tracking issue created (label:
rfc/proposed) - RFC pull request submitted and ready for discussion (label:
rfc/exploring) - Last call for comments (labels:
rfc/exploringandrfc/final-comments) - Accepted and merged RFC pull request (label:
rfc/accepted-future) - Green-light for inclusion in a draft specification, and the author is creating and iterating on pull requests (label:
rfc/accepted-draft) - Pull requests are merged in to a draft specification (label:
rfc/accepted-staged) - Officially published in a non-draft revision of the specification (label:
rfc/released)
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.