Talk:Comparison of web template engines

From Wikipedia, the free encyclopedia
Jump to: navigation, search
WikiProject Software / Computing  (Rated List-class)
WikiProject icon This article is within the scope of WikiProject Software, a collaborative effort to improve the coverage of software on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
 List  This article has been rated as List-Class on the project's quality scale.
 ???  This article has not yet received a rating on the project's importance scale.
Taskforce icon
This article is supported by WikiProject Computing.

Template system?? (redirecting here)[edit]


SEE Template System redirection problems on Talk:Template#Template_system.3F.3F_.28redirecting_here.29

The client side/server side column[edit]

There was a column telling if the engine is client or server side and on 18:25, 10 January 2015‎ the user Thomas4019 removed it telling that: "Removing processing side column. If it supports JavaScript, then it supports client side.". The question there was not about client side support but about if it will need some processing client side like when the engine return json to be processed on client for some script that buid the UI to be userfull OR if processing on client side will not be necessary like when the engine output pure css/html from server and client receive all done and have nothing to transform. Thinking about many bots and crawlers cant/dont process scripts that information can be useful on SEO sceneries. Maybe renaming the column to client side processing required make more sense. — Preceding unsigned comment added by (talk) 22:31, 16 January 2015 (UTC)

Consensus into this article[edit]

PLEASE UPDATE/MODIFY THE FOLLOWING TEXT ... it is for referential and consensus. The Best Example of This Article It's full template base —Preceding unsigned comment added by Persian bigboy (talkcontribs) 10:26, 27 October 2009 (UTC)

About focus[edit]

See debate on General or WEB? below. If we "resolve" focus (the MAIN TARGET SUBJECT OF THIS ARTICLE), we can "evaluate" discussions.
NOTE: we must fix first subject, after, terminology, wikipedia-article it is not a dictionary or glossary entry.

2006-10-11 Request for a happy compromise: It seems as User:Krauss would prefer to focus on "WEB" and User:Dreftymac would like "GENERAL". Krauss has already done a lot of work and this discussion seems at a lull. Can we agree to make "Template engine" a "disambiguation page" that just points to two articles (or however many necessary), so each particular focus gets individual treatment? This seems very reasonable. Please respond if you object to this idea, otherwise, let us reach this compromise? User:Dreftymac 16:42, 11 October 2006 (UTC)
Yes, we need your good english to see the options. Revising: 1) stay on web focus; 2) transform articles to agree to the "generalization" (the main work will be a terminologic transform); 3) Include specific sections pointing the generalizations of the concepts and the examples of generic use cases; 4) the disambiguation option (with "template engine (general)"? preprocessor?)... I like (at this moment) opt. 3 -- Krauss 13 October 2006
Reverted to most recent stable version by User:Krauss. Since this article is part of the series Template_system. For specifying "About focus" of the article as it is now, Option (1) seems best as the quickest short-term solution (see 2006-10-13 revert by Dreftymac). It seems Option (3) is dependent on the direction of the series (if things are to make sense and remain clear and not confusing). It seems option (4) can be done regardless of the other choices, since disambiguation is just a way to point to different articles with different focus (not to clarify the focus of a single article). So it seems the real choice here is picking between 1) or 2) or 3), and it seems 1) is the easiest to understand and carry out. drefty.mac 16:28, 13 October 2006 (UTC)

About dependences[edit]

Template engine is not a isolated article, it is very correlated and "depends on" the article Web template, and we can adopt (see sugestions here on Talk):

About authoritative sources[edit]

On Computer Science there are many "consecrated publications", like "Communications of the ACM" or "Computer Notes in Computer Science". On web, W3C, IETF, and ISO sites have a lot of authoritative resources. But on many sites, public (like or commercial (like, are tendencious or "very ease to write", mixing "authoritative" with "not-authoritative" content.

Where the authoritative sources? We can start search, on or ??

List of sources ACEPTED (by CONSENSUS) here (this article):

  • pages on,, etc. for cite sourceforge projects and project features.
  • Books: only "consecrated" literature... need analyse for each case.
  • Standards: W3C, IETF (RFCs), and ISO, and respective web sites.
  • Articles on reviews: idem books, each review.
  • For terminology, in absence of "consecrated reference", PREFER "steady (old) wikipedia articles" terminology and the Google statistics registered on Talk page "as a source" (it can be tested into other search engines and by all readers). See example below.

List of sources NOT ACEPTED here (this article):

About DELETE/REMOVE procedures on this article[edit]

Sugestion about "citation needed":

  1. IF it is not a tacit knowledge or a consensus, INCLUDE "fact template" on article.
  2. IF, after time, no citation:
    1. PREFER to resume it, to a more informal assertive, and advise/inform on Talk.
    2. else remove and advise/inform on Talk.

Sugestion about non-authoritative source remove:

  1. Use on article;
  2. Contest on Talk;
  3. Remove if consensus, or if time (with no talk reply).

About UPDATE/DELETE/REMOVE procedures on this Talk[edit]

  • RESTRUCTURING: it is a valid procedure, if Talk very puluted.
  • REPLYING/UPDATING: into Talk pages we need modify for reply. The "::" line (see source) can be used.
    "example of reply line" -- John
  • REMOVE: personal or very specific or prolific debates, if poluting (oversizing the Talk page), may be removed.

General or WEB?[edit]

For discussion about the focus of this article. The term "template engine" is about "(WEB) template engine" or about "(GENERAL PURPOSE) template engine"?

NOTE: the "main subject of the article" determines: introduction (clean and objective), volume of contents about "other subjects", check of correct use of terminlology, etc.

It is about WEB[edit]

The term "template engine" received a widespread use only with "The Web advent" (1990s), and generally (today also) used in a "web template context".

A "general template engine", was every time (since 1970s) a "preprocessor".

If I undestand this correctly, you are trying to say that *every* reference to template
processing in the last thirty years means either "preprocessor" or "web template", and
no other meaning or use for the term exists? If so, this is an astounding claim, and it
requires authoritative verification. In fact, I would be surprised to see a *single*
authoritative source that used the words 'preprocessor' and 'general purpose template engine'
to mean the same thing.

Inclusion and macro-substitution are traditional preprocessor feature. The more used preprocessor is the C preprocessor. On Perl or PHP and others, we have a simililar preprocessor for "comma parsing". The parser on

 print "Hello $X";

is this "comma preprocessor", not a "web engine software or component". Only if the "framework" of this preprocessor is a thing to "separete content from presentation on web pages", it will be a part of the "web template engine software".

This is getting off topic. Perl, PHP, MVC and preprocessor already have articles,
the question is whether the arguable claims about "template engine"
all have authoritative support.

M4 is the oldest "Template Engine" or a typical "General Purpose Preprocessor"? -- Krauss 8/oct/2006

PS: there are only a tendency, with XSLT, to (widespread) use the "XSLT template engines" in a more "general purpose" context... like a "XML preprocessor". The interpretation is only a "future/tendency convergence" of concepts. Today "template engine" is a domain-specific tool, and "preprocessor" the generic.

This may be your particular viewpoint, or it may be solid research, but so far you have
provided no authority to support these claims. Moreover, it still does not address the
issue for *this* article (not the XSLT or preprocessor article): which is whether "template :engine" means more than just "web template" (and cited authority indicates that it does).
The burden rests on you to back up your claims to prove it is not your own original research.

Terminology facts[edit]

Here on Wikipedia: the terms preprocessor and template engine are steadily "used by other articles". Both cited as specific and generic domain. Preprocessor with a more old-steady and "consecrated generic applications" cited, like M4 (computer language) (used from 1970's to 2006).

Tacit Computer Science knowledge: "preprocessor" are oldest and "consecrated" term. The use of preprocessor "as a (web) template engine" (or template engine software precursor) is also cited. Examples: M4 as template engine, C-preprocessor as template engine, C-preprocessor on Cheetah style.

This is interesting stuff about preprocessor, but it does not address the issue about
"template engine" or the direct citations I have provided to template processor documentation.

On Google Octuber 2006:

   21,800 for "macro engine"
   39,000 for "template processor"
   79,400 for "template parser".
1,870,000 for "template engine".
1,700,000 for "template engine" web. (91% "web context")
4,690,000 for preprocessor.
2,760,000 for preprocessor web.      (59% "web context")
This is a good start, but it does not prove the very simple matter at issue. A simple 'hit count'
tells us nothing about the *content* and *context* of those hits. For example, the point where
you indicate a (91% "web context") does not prove that "template engine" == "web and only web"
Some of those hits might actually say "template engines are not good for web development" which
would contradict the very point you seem to be making.
Moreover, if you use the 'google hit count' method, your point about 'preprocessor' is actually

Google Search Results Oct. 2006

   2,050,000 for preprocessor compiler
      40,300 for preprocessor "template engine"
           6 for preprocessor "general template engine"
           1 for preprocessor "generic template engine"
   Your search - "consecrated generic application" - did not match any documents.
   Your search - "template engine" "the web advent" - did not match any documents. 
only 1 single hit to support a claim that preprocessor = "generic template engine" and over
two million to support a contrary claim that preprocessor has to do with compiler.
Moreover, when you look at that one single hit, the word 'generic template engine' is actually
in a completely separate article in a different paragraph from 'preprocessor'!
All this really goes to prove is that "google hit counts" tell next to nothing unless you are
just trying to find out if a particular set of words have ever been used by someone on the web
on the same page. Any other conclusion requires you to actually read the context.

"Preprocessor" is the oldest (see C preprocessor since 1970s) and widespread (~3X) term. "Template engine" is used more freq. on web context. -- krauss 8/oct/2006

More off-topic stuff. Word frequency counts tell next to nothing about the *context*. I have
provided direct links to product documentation, which *does* talk about the context.
why should we ignore the statements that come directly from the documentation of well-known
template processing systems?

Dreftymac 22:10, 9 October 2006 (UTC)

It is about GENERAL[edit]

Note from Dreftymac 2006-09-12 05:32:01

To limit the scope of the Wikipedia article "Template engine" to just web template engines, or implying that the term "template engine" necessarily refers to web application development introduces factual inconsistencies and potential confusion.

And for work... What the sugestion? To remove "not web content about"? To split the (same) article in 2 distinct parts (the "web" and the "general")? Is inevitable the confusion?
Consider historical and "widespread/dominant use" of terms and tools. Wikipedia (need) reflects the widespread.

Merge with web template on "Template system"??[edit]

Or "web template system". Not on Templating system (Google say 20% of the freq. of use of the term).

Web template and template engine remains, in a "more specialized" articles.

Vote yes[edit]

  1. See template engine (web) and web template, with the same introductions, same ref. fig., same concepts... convergence make sense. Krauss, 12 June 2006.
  2. Yes I was just about to suggest this, they are essentially the same article. -- FatalError (talk | contribs) 04:29, 12 February 2008 (UTC)
  3. I'd say that this article can be merged into Web_template_system. Oversimplifying, I'd say: The engine is part of the system. Mateng (talk) 21:55, 9 May 2013 (UTC)

Vote no[edit]

  1. ...?

Please continue discussion here:[edit]



Old "general or web"[edit]

There exist a term for "template engine (general)" and it is preprocessor.

Was a mistake create "template engine (general)".


they are DISTINCT terms (disamb)[edit]

WEB T. ENGINE and (not-for-web ) T. ENGINE

OLD NOTE: template engine also may refers, in more technical and unusual context, to a "not-for-web template engine".

Unfortunately wiki was started (see history) with "template" as "WEB template"...

"Template Engine" is the broad term, "Web Template Engine" is the narrow term (see Thesaurus organization).

Sugestion 1: For "General Purpose Template Engine" see Template Engine (general).

Sugestion 2: replace "template engine", "Template system" and "Web Template" to ?? (SEARCH-WORK AND VOTE NEW "general porpuse" and Web terms), and expand contents (a lot of work... I can help do it).

-- Krauss 10/9/2006

(see also the reply from Dreftymac on "Genral or Web?")

About 19:02, 24 July 2006 Lpireyn (Removed all Smarty-specific references)[edit]

Clean is good, but a lot of clean needs a little justifies.

I preserved the "Smarty-specific references" because it was here in the initial vers., and was didatic. krauss 25/7/2006.

2006-10-10 Regarding 'web document' and non-html output[edit]

The link to web document was removed (at least until the article can undergo some refinement and review) and the link to the more reviewed web page restored. I can help contribute to web document but there are a few questions:

  • is this a term derived to indicate that not all output from a web template system is in HTML?
    Yes... and it is a short to "web pages or other types of formatted text".
  • is this article planned to cover the fact that template engine output is more than just "web pages"? (e.g., body of email messages etc.)
    Yes... and to put in evidence the problems with the "informal concept" of web page... it is defined (on wiki) with "usually" and "may"... web page and web document are fuzzy (informal), but, like a on fuzzy sets, we can, with accuracy, describe relations with the sets (but we need define each set).
  • is there some way that this content can simply be merged with the pre-existing article web page? (this seems possible, considering the apparent overlap of concepts).
    Yes, of course. You can do it, I was done (the w doc article) for you. -- Krauss 11 October 2006
  • is there support for the notion that a MSFT Word Document retrieved from SFTP or SMTP constitutes a 'web document'? This seems like a unique idea that somewhat bends the technical meaning of the terms. For example, under that definition, when *isn't* a MSFT Word Document able to be called a web document? Does that include documents transferred to a USB Drive off of a machine that happens to have a web servier?
    If I understood, I think that not. It must satisfy the 2 conditions. A XYZ format is not a MIME Content-Type. For "web", it need into a Internet communication context. But the 2 conditions are not a axiom set, it is only informal... If it was on a Intranet closed LAN, it is not (in principle) web... informally it may be web. -- Krauss 11 October 2006

Dreftymac 17:50, 10 October 2006 (UTC)

Types_of_Engines MVC_Article[edit]

20061010_edit_explanation: This is in explanation of the section "Specific types of template engines"

  • the link to interpreter was removed because 1) the topic is remote enough to be confusing to readers unfamiliar with the subject matter; 2) it did not enhance the credibility or authority of the article; 3) it was redundant to the text that was already there: support template processing either natively (i.e., via the interpreter) or through add-on libraries and modules; 4)it increased the potential for confusion and misleading implications.
    Ok. The point is the "PHP engine" or "JSP engine" or "etc. compiller" may be also, from Web_template#Template_languages point of view, a template engine. A PHP file, for example, is a web template (preciselly a complex or unrestricted template) if it is embedded into a HTML code.
  • JSP is compiled, ASP is interpreted, consequently, it is technically not correct to say "the interpreter on languages such as JSP"
    Yes ok... interprete and compile are possible for "near all" languages... but if you use the language (PHP/JSP/ASP/etc.) also for resolve the "embedded template language", the template engine is not a LIB, but the interpreter/compiler it self... this is the point, and the new text, "(...) JavaServer Pages[1], and Active Server Pages[2] are examples of template engines (...)" seems ok. (Except by the excess of citations, it need balance with all article use-of-citations).
  • ASP is actually an add-on to Microsoft IIS, it is questionable whether this can be correctly labeled as an "interpreted programming language".
  • The MVC_Article does not appear to provide any support for modifying Types_of_Engines to include a reference to interpreter.
     ? where MVC on t.engine article? I see only on "Benefits of using template engines".
  • The MVC_Article does not appear to distinguish relevant differences between Perl (interpreted), or Java (compiled). It states in part:
   I will describe the evolution of Java engines in particular here, 
   though all the concepts apply to Perl, VisualBasic, and so on.
   Java began supporting server development with Servlets  ...

2006-10-15 Change Template engine to disambiguation[edit]

The article title "Template engine" has proposed to move to a disambiguation page. The disambiguation page will point to this current "Template engine" article, and still allow different relations for the term, without disrupting any content of the current article "Template engine" or any other articles in the related series.


  • Template system is an umbrella article for at least four other related articles (including Template Engine) in a growing series of articles.
  • The article series has links to some unique concepts that are undergoing refinement and still being polished (e.g., web document)
  • The unique concepts in the series have some overlap with existing articles, but terminology still seems to be evolving, so disambiguation will allow all the parts to be refined without anyone adding premature edits or discussion comments to pages that are still under construction (see eg: Talk:Web_document and remove earlier remarks by Dreftymac ;; article has much more content now, so no longer applies)
  • Disambiguation will also allow more articles to be developed that demonstrate how multiple concepts are related, without introducing concepts that are too advanced for some readers, and as a way to help avoid "edit duels" for areas where there may be different viewpoints on terminology (see eg: Wikipedia:NPOV_tutorial#Word_ownership)

Template system?? (redirecting here)[edit]

SEE Template System redirection problems on Talk:Template#Template_system.3F.3F_.28redirecting_here.29

Modernize the compare: At least Template Inheritance[edit]

Suggestions for the template comparison: First of all it must be clarified what "Natural Templates" means. At least I do not understand what this should tell me. Does it mean that the template engine doesn't interfere with XML syntax? (Well, templates aren't always used in XML...) Or what does it mean? Furthermore A column on Inheritance shall be added. This is the KO criterion for modern template engines. —Preceding unsigned comment added by (talk) 13:50, 23 December 2010 (UTC)

Shouldn't Razor be in the list?[edit]

I noticed that Microsoft's ASP.NET Razor engine isn't on this page. Should it be, or is there some fundamental difference between Razor and the listed engines? === Jez === (talk) 15:14, 6 September 2012 (UTC)

Someone please include WebApp/CGI++ ?[edit]

I created what I called the CGI++ library back in 1999, and published an article in the (now defunct) "C++ Users Journal" in Spetember 2000, where the prominent highlight and main feature of the library was the use of templates (The article is titled "HTML Document Templates for CGI Applications" — see entry in the ACM digital library, The original article is archived on this URL: (no idea what that is; I found it through a Google search)

After many rounds of upgrades and added features, I renamed the project as WebApp/CGI++ and have its documentation page on

It is open source and freely downloadable (the license is sort of a BSD-style license, but it's not quite formally defined — it's in my TODO list)

As this is my own project, I hesitate to add the entry myself, even though I do believe it is absolutely legitimate to include it (it is one of the available products in the category, predating almost all, if not all, of the entries in the page). Would someone consider adding the entry? Or advise on whether it is acceptable for me to add it myself? Mochima (talk) 23:16, 27 March 2013 (UTC)


Merging with Web template system - Pro or Con?[edit]

Since this is proposed since January 2013, I'd like to start a final Proposal:

I suggest that Template engine (web) will be merged into Web template system, as I consider the template engine a part of a template system. The comparison chart is large and should therefore be outsourced or put it into a collapsible container.
After deciding and taking action, the maintenance box can hopefully be removed. Mateng (talk) 22:10, 9 May 2013 (UTC)

Please vote Pro or Con:


  1. Green tickY Mateng (talk) 22:10, 9 May 2013 (UTC)


  1. ...


Enter your comment if you want something else.

  1. Merging (or redirecting) this to the template processor article instead might be better Natevw (talk) 05:13, 14 June 2013 (UTC)

Conclusion and page move[edit]

I merged web-specific content with Web template system, general content with Template processor, and left the large table in this article, which I moved to Comparison of web template engines. -- Beland (talk) 20:31, 7 August 2013 (UTC)

Jade = Pug[edit]

I don't want to make this edit myself due to a conflict of interest (I work for Jade Software Corporation), but the Jade templating language mentioned in this article has been renamed to Pug. See Elguaponz (talk) 22:18, 15 May 2016 (UTC)