Neil Harris wrote:
It might therefore be a good idea to only evaluate formulae and conditional expressions to work within templates, and to simply treat them as plain text anywhere else. Templates using these programming features can then be treated by most users as "magic spells" that work automagically, without needing to learn these advanced features.
Most of the 'template coders' I know go to pains to use the existing conditional kludges that way and I can't imagine built-in functionality will be treated any differently. The goal is always to make the 'end product' in the article itself as simple as possible.
While people complain about the complexity which templates have taken on it is worth noting that there is a direct correlation between increasing template complexity/functionality and decreasing article complexity. Tables no longer have to be convoluted HTML or wiki-markup blocks in the article themselves... they've been replaced by a short template call. And conditional logic has made it so that the average user can insert one of those templates into an article and fill out the parameters to produce a perfect table without needing to understand the underlying table code at all. That wasn't possible previously... they ''had'' to know table markup (or HTML) in order to edit tables.
Yes, templates, parameters, and the 'parameter default' have been expanded out into a 'programming language' of sorts... greatly simplifying and enriching things for the average Wikipedian in the process. Yes, the various 'date math' features are painfully convoluted... but they have made it possible to automatically display tomorrow's or next month's 'of the day' material... thereby aiding in efforts to verify that it will display properly when the official day comes. They have added the ability to go to dated content for the 'next day' or 'prior day'... creating improved browsing capabilities. Et cetera.
Complexity and increased functionality are GOOD. Yes, they require 'programmers' to understand / implement them... but they can be used by those programmers to make complicated / previously impossible things simple for everyone to use.