[WikiEN-l] MediaWiki is getting a new programming language

Apoc 2400 apoc2400 at gmail.com
Fri Jul 3 20:28:54 UTC 2009


The current template code is ugly, but it does work. Few people can
understand the source code of the more intricate templates, which is a
shame, but we are getting very good use out of the ugly wikicode. We have a
huge number of templates that do a lot of good with the limited
ParserFunctions we have.

I understand the developers want to replace it with a new template
programming language, but we should be aware of the risks. Starting over
from scratch and making it clean this time is one of the most common ways to
begin a spectacular failure in software development. Joel Spolsky write a
good column on it in 2000:
http://www.joelonsoftware.com/articles/fog0000000069.html

Is it even possible to sandbox Lua to guard against any exploits, even the
kind that just overloads the servers? Will it integrate well with articles
written in Wikicode? How long will it take until we can use it?

Most people don't need to understand advanced templates, just use it. There
is actually no lack of powerful templates. We have a lot of them. The
problem is that they are too hard to use.

{{Birth date and age}} is a rather popular template we use to show a persons
birth date and automatically calculate the current age. It allows us to
provide this without having to update it every year. I guess some developers
hate us for doing something like that in wikicode, but hey, it works. The
only problem it that it's hard to read in the article code. It is used as
{{Birth date and age|1993|2|4|mf=yes}}. If we had the StringFunctions
extension enabled it could be simplified to take dates like 1993-02-04
rather than 1993|2|4. Perhaps it could even take plain text dates like
"February 4, 1993". If we had the variables extension one could specify the
dateformat (month or day first) in one place in the article and template
like {{Birth date and age}} would follow.

We are stuck with templates that are hard to use because the developers are
against allowing useful programming constructs in wikicode. I really
wouldn't mind a good "real" programming language for templates, but should
we really but all eggs in one basket?

/Apoc2400


More information about the WikiEN-l mailing list