On Thu, 19 Apr 2001, Erich Schubert wrote:

> You might argue that this is mixing program and html code (which i
> consider a bad thing), but this is display specific code

I consider mixing logic - loops, print statements, anything - with HTML, a
bad thing.  Period.

It is the responsibility of the web designer to play all of the crazy
games with html to make it look good.  It is not their responsibility to
know *anything* about the backend code, even to the point of writing a
simple loop that calls it.  Likewise, it is not the responsibility of the
backend coder to muck around in the HTML adding in loops and if
statements, and certainly not to maintain this when the web designer does
a major restructuring.

The idea behind IOWA is that there is a single contract between the web
designer and the backend: each element in the html that needs any dynamic
behavior is named.  The designer can change anything they want as long as
they keep the same set of names for the same behaviors.  The developer
maps parts of the backend (lists, methods, etc) onto these names.

To make development faster, *by default* names are mapped to the
correspondingly named elements in the backend, which is why it *looks* a
lot like PHP with the backend leaking in to the template.  But they are
separate namespaces - if the backend changes substantially, the bindings
can be changed to reflect that, and the template does not have to be
modified one bit.