For The Record, I don't actually dislike functional notation. It has its place, but is being over-used IMO. Pure dataflow notation is the underdog. I favour underdogs and tend to emphasize underdogs. Apparently, there was a PDP-8 manual that gave equal footing to CALL/RETURN and to co-routining. That's the way I see "functions" - there is something else that is on equal footing with functional CALL/RETURN. Modern ABIs insist that compilers must insert opcodes as scaffolding for functions. Forth and Prolog and ??? don't insist on such requirements.
...
I approach the "template" and dataflow issues from a different perspective. In my world, arrows are one-way tubes through which data packets flow,,, and, arrows must not cross boundaries of boxes (going only from port to port),,, and arrows don't just represent ephemeral "dependencies" but actual flow paths. Given that mindset, "templates" are just natural outcomes (assuming that I understand what you mean). Boxes can contain boxes all the way down until they hit bottom. Forth does this (threaded words can contain threaded words and/or native words), /bin/bash does this (scripts can invoke other scripts or compiled commands), etc. Functions, though, are just box wannabes. Functions don't satisfy the principles of complete isolation, hence, we need to buttress them with things called "operating systems".
The principle that arrows must not cross box boundaries leads to the conclusion that arrows cannot be represented by simple pairs (\{sender,receiver}, but must be represented by triples {direction,sender,receiver} where direction=[down|across|up|through]. To me, the "elephant in the room" is the ability to bundle operations (which I think you call "templates"). Forth does it. Shell does it. PBP/0D does it. Functions promise it, but don't succeed (because functions cause blocking control flow behaviour).
The idea of 'shared variables' and 'views' is just a special case. Such 'variables' are just units of software that react to incoming change messages and they emit messages when they change. What's inside doesn't actually matter - maybe it's just "state" or maybe it's something more complicated, as long as it reacts to incoming changes and emits appropriately.
[I go on to argue that you can go way beyond such simple 1-in:1-out concepts. Fan-in and fan-out give you the ability to do things that are inconvenient to express in text-only languages. Does the provided blog already contain fan-out?].