RexOps / RexOps/Rex

Deprecate built-in template engines

Open
#1,475 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
Perl
Stars
737
Forks
214
PR merge metrics
No merged PRs in 30d

Description

User story

As maintainer,
I would like to deprecate the built-in template engines,
so I can spend more of my efforts on the core capabilities of Rex.

Describe the solution you'd like

Rex::Template was the original templating engine, but its approach had problems, like almost useless diagnostics. So Rex::Template::NG was born to address some of the shortcomings, but its results are still not fully compatible yet, so we never truly made the switch (default engine has changed, but the old one is still around "just in case").

This situation provides some false promises to users, and adds considerable overhead for both users and maintainers. Therefore I'd like to help avoiding the whole rabbit hole in the first place.

I believe templating is complex topic on its own, and it's best to offload the responsibility to external modules, of which there are dozens on CPAN already. That way we could focus more on the core capabilities of Rex, while everyone may pick their preferred templating engine for their needs.

I think we could put up a one-time warning on the first use of any of the built-in engines in a given run, so later when the time comes, get rid of the modules themselves. It would also help raising awareness about the potential problems when using the built-in ones.

Describe alternatives you've considered

Creating our own "best" templating engine, at least in the limited scope of configuration management. It doesn't sound realistic to me.

EDIT: we can try and see if there's a good candidate on CPAN (with lightweight dependencies, compatible syntax, etc.) which we could use as a templating backend by default instead of inventing our own.

Additional context

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the built-in Rex::Template and Rex::Template::NG engines and how they are selected or first used. Determine the scope of deprecation, including the proposed one-time warning and eventual move to external CPAN modules; the issue does not name specific files or tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
perl
Domain
devops
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.