Separation of design and code seems pretty important, so having a template system that's really a (more or less limited) programming language of its own seems like a step backward to me.
That looks exactly like every other web templating view engine. You are also completely missing the point if you think client side templates are trying to replace your web frameworks. Client side templates are supposed to emulate what you have server side when you to deal with data client side.
Generally logic that is good in a controller can be put in the template file instead. This idea came from the "Smart model, Dumb controller" concept. We made controllers so dumb, it was rather clean and easy to understand when combined with a template. We see more of this with client side frameworks like Meteor.
Still, Forward is built on a new micro MVC framework and controllers do still exist. Those that prefer to write them can do so in a more traditional way.
class AccountController extends Controller
{
function index ()
{
$this->account = get("/accounts/123");
put($this->account, [role => "admin"]);
}
}
(This is not very useful code but you get the idea)
I thought about this a lot, believe me. Is it right to allow a template to have so much control? The side effect of not having it is, designers can't do anything without a back-end programmer.
Instead, Forward aims to make templates expressive and easy to understand by anyone. Time will tell if this causes problems, but for the projects we've built with it over the last year, it has been good and easy to maintain as there is no procedural connection between template/back-end.
Why do you dislike them?
Separation of design and code seems pretty important, so having a template system that's really a (more or less limited) programming language of its own seems like a step backward to me.