Addy Osmani describes Web Components, of which an important part is custom tags. The promise:
<audio>tag) will be given to you by the browser but others like
<slide-show>will be custom elements provided by UI libraries or you can write it yourself.
Programming with tags. Where have we heard this before?
Microsoft has ‘em too — called Web Controls — abstracting away things like authentication and (again) database access. Drop in a tag, get a fully-functioning login form.
Logic as markup. So tempting, and so wrong.
Markup is nouns and adjectives. It doesn’t have verbs. It describes, but it does not impel.
Unless we start from the assumption that we want our logic to be declarative! In which case we end up with tags representing verby things like “authenticate the user, hit the database, and iterate the results”.
Now, expressing a syntax tree in markup is just as syntactically “correct” as any other way. If you want to wrap your if statements and subroutines in angle brackets, no problem, you can do that. If you want function arguments expressed as attributes, OK.
But why would we? We’ve got languages — lots of them. And we make new ones all the time. Why retrofit HTML?
ColdFusion and Web Forms were not unsuccessful. Lots of people adopted them, and there was a marketplace for custom tags. The same will probably go for Web Components.
I suspect, however, we’ll go through a time of irrational exuberance before realizing that everyone has created their own weird-ass pseudo-language with angle brackets.