Skip to content

Roadmap

There is no roadmap file. There is an issue tracker.

What git-tpl does is what these pages describe: if a behaviour is documented, it is implemented and tested. What it does not do yet is in the tracker, one issue per thing, each carrying the reasoning rather than a line item.

This page used to be PLAN.md, a file in the repository listing everything not yet built. It was accurate for as long as somebody remembered to edit it, which is the failure mode of every such file. A plan that describes an older version of the project is worse than none, because it is believed.

Finding your way around

Issues carry an area: label matching the layout in AGENTS.md:

Label What it covers
area:cli Commands, arguments and output
area:render Template manifest, evaluation and rendering
area:git The Git backend and refs
area:data Data sources
area:docs This site
area:packaging Distribution and release artefacts
area:testing Test suite and harness

Two labels are worth knowing about:

  • adr-needed — the design is not settled. These need an argument before they need code, and that argument belongs in an ADR.
  • good first issue — small, self-contained, and the surrounding code is already understood.

Decided, and not changing

Some things are absent on purpose. Proposing them again costs everyone an afternoon, so they are written down.

The declined features list covers the big ones — custom merge logic, a second template engine, code execution from templates, runtime values in the render context, automatic ref push and fetch, Copier compatibility.

Two more are deliberate trade-offs rather than non-goals, and both have the same shape:

The template is cloned fresh on every run. Correct and slow for a large remote template. A cache would need invalidation, and a stale cache silently rendering an old template is a far worse failure than a slow fetch — so this stays until it actually hurts.

A remote data source is fetched on every run. Once per run, never cached between runs, for the same reason. sha256 is the answer for anyone who needs the bytes to be the same ones.

Both are cost, knowingly paid, in a tool whose whole premise is reproducibility. If you need them changed, the case to make is that the cost has become real — not that the fetch is redundant, which is understood.

Changing your mind, or ours

A hard-to-reverse decision arrives as an ADR: the context, the decision, and the consequences somebody will live with. Superseding an existing ADR is the supported way to reverse one; a PR that quietly works around it is not.