Skip to content

RFC: Add EXPR extension for a glue expression language in format strings #112

@mwiebe

Description

@mwiebe

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/exploring and rfc/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.

Metadata

Metadata

Assignees

Labels

rfc/exploringThe author(s), team, and community are working together to refine and iterate on the proposal.rfc/proposedA new RFC proposal.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions