In the spirit of supplying concrete examples, here are my proposed
changes to the syntax of the existing language:
* the existing {{{parm}}} or {{{parm|default}}} notation should be
changed to ${parm} or ${parm|default}
* all newlines and other multiple whitespace characters within template
source code should be regarded as reduced to single spaces, with
explicit calls to {{newline}} and {{whitespace}} operators to generate
explicit whitespace on output
These two changes alone would greatly increase the readability of
templates, both by massively reducing the number of curly brackets
within templates, and by allowing them to be formatted in a clearly
nested and indented form.
If I could add one more change, it would be an {{apply}} function, to
allow explicit calls to other templates whose names have themselves been
generated by template substitution, as used extensively in templates
such as {{coord}}; this would help clean up the semantics of the
underlying language a bit more, allowing further changes to be made more
easily both to the syntax and implementation, and also possibly allowing
a faster implementation that does not require SNOBOL-like re-parsing of
generated text.
-- Neil