My doubts about Vento

There's a new templating language on the block, Vento, and it seems to be all the rage recently, but I have to admit I'm not entirely convinced by it.

First of all, I do agree that Vento looks better than Liquid or Nunjucks. The delimiters look more ergonomic, for instance {{ if … }} is nicer to type than {% if … %}. Also, expressions are JavaScript-based, which is huge; when doing any amount of remotely complex logic in Liquid, it always ended up as an unreadable puddle of {% assign %} tags with a bunch of filters and some flow control. Being able to use JavaScript will simplify this immensely.

Syntactical insecurities

It seems that Vento's syntax is still in its infancy. It doesn't have a formal specification, or anywhere near that, and that creates some edge cases that I'm not super comfortable with. The fact that it allows arbitrary JavaScript expressions creates a huge amount of possibilities. I think it'd be nice to have these kinds of things documented, giving some reassurrance that what works now, will work in the future. Some examples include:

The answers to these questions are easily testable, but that's beside the point; the fact that the behavior is undocumented makes me unsure that what I test now will have the same results in upcoming versions of Vento.

Parsing JS is complicated

Vento does its own naive "parsing" of JavaScript to determine where the closing tag brackets }} are. This is really hard to do well, and sure enough, Vento's got some bugs here:

These types of issues are some of the primary reasons that, when I implemented interpolation in Yozo, I chose the "dumb" route and require that the interpolation content does not itself contain }}. This makes parsing much simpler, and while not ideal, gives users confidence about the correctness of the code they're writing.

Future-proofing

Lastly, I'm not entirely sure about how well the syntax will hold up over time. My main concerns;

Party pooped successfully

I know this post can be interpreted as having some discouraging undertones, but I think it's important not to blindly jump on the bandwagon and address the shortcomings of the shiny new thing. Don't get me wrong, I am excited about Vento; but it has a long way to go before I feel comfortable recommending it in a professional setting.