argoproj / argoproj/argo-workflows

Fix `{{..}}` templating -- standardize on `expr`

Open
#9,529 2 comments 5 reactions 0 assignees View on GitHub
area/templating type/tech-debt
Dominant language
Go
Stars
17k
Forks
3.7k
Avg merge
1d 15h
Merged PRs (30d)
138

Description

The current templating system appears to be the primary cause of confusion and bugs. These are caused by the following:

1. Template evaluation is unpredicable. By which I mean, you don't know when it'll evaluate and what the output will be. This can result in a workflow that passes just some of the time
2. We use several evaluation technologies: Govaluate, fasttemplate, Expr+Sprig.

Minor issues:

1. `{{..}}` does not play nicely with Helm templating.
2. `podSpecPatch` is arguably a work-around rather than a solution.

It would be great to remove this entires class of issue.

To fix this we should:

* Standardize on `expr` as the templating technology (easy).
* Make evaluation time predicable - at field access time (hard).

Contributor guide

Open the contributing guide

Research direction

The issue names no files, tests, or entry points. Start by mapping the existing Govaluate, fasttemplate, and Expr+Sprig evaluation paths, then assess the scope of standardizing on expr and evaluating at field-access time; done means both goals are implemented with predictable templating behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.