Why didn't you just use XML and let style authors use XSLT? Because XSLT is ugly and difficult. Why invent a whole new programming language and not just use, say, Perl and Safe.pm? Believe me, a lot of options were considered. There are a number of reasons we "reinvented the wheel": The other wheels weren't round. Safe.pm isn't too safe. By making our own domain language, we make it easy to do the things which are common/specific to this problem. A short list: The common operation is print. So we made an expression statement starting with a string literal be a print statement on that expression. Large blocks of text are printed often, so we wanted the Python-style triple-quoted string literals. We wanted layers of functionality/overridability. We wanted a graphical wizard to be able to look inside the layers and see what options are available. It wasn't that hard. The language is very similar to other languages which geeks are already familiar with. The learning curve isn't too steep. &s2.faq.extra;