Test Driving TextPattern (Review)

TextPattern was one of the blogging/CMS software package that I evaluated when Movable Type 3 first came out with its more restrictive license. Even though WordPress won out at the end due to its 'hackable-factor', I have always enjoyed my short experience with TextPattern. It has a nice front-end interface, unclustered code and an interesting architecture. I told myself that if I ever start a new blogsite, I'll give TextPattern a try.

So early last month when I decided to set up a blogsite for Anna, I did not hesitate to download and install gamma 1.19 from TextPattern's website. Having been blogging with TXP for nearly a month, the feeling is mixed. So, here is what I like and don't like about TextPattern, from a current WordPress (and ex-MovableType) user point of view.


  • Installation. It is easy. Too easy. Download the source, unzip the tarball, point the web browser to setup.php, and it'll take you though everything.

    Installing the plugins is also easy, as the plugin code actually gets stored inside the database when it is uploaded via the web interface, so no upload to file system via FTP is necessary.

  • User interface. TXP's UI is very clean and very well crafted. Switching between Textile, HTML and preview in the editing page is cool. Popup window that gives hints to template tags is also a very good feature for newbies like me.

  • Template engine. One thing I really like about TXP is how you can define "page" and "form", and then have tags to insert "form" into "page". You can have special articles display differently by providing an alternative form for it. Also a good example on how one can separate of programming logic from presentation.

    At the same time, you can still have raw PHP in your template source (when allow_page_php_scripting is set to 1) so it is still quite 'hackable'.

  • Sections. You can divide your site into separate navigation sections, which is an interesting idea. It is different from category, which merely labels the blog entries. More explanation can be found in Joel's TextPattern Semantics article.

  • Speed. It is faster than WordPress, as all Textile transformation is done when the article is saved into database. When the pages are loaded, only the cached/textiled versions of articles are pulled out. Whereas in the case of WordPress, all content transformation plugins will be executed on every load.

  • Lively community. From TextPattern's support forum, you can find all the help you need. Quite a lot of experienced coders there helping people out when DCA is on hiatus.


  • No XML-RPC support. That means, you cannot use desktop blogging tools, or automate postings using Blogger or metaWeblog API. I cannot use mtsend.py to post with VIM from command lines. Someone, however, has posted a half-working version of XML-RPC script, but there is still no official support.

  • No trackback support. Yup. It does not exist. DCA said that he would look into it, but nothing has happened yet. Meanwhile, people have to rely on 3rd party trackback tools like HALOScan.com or gTrackback. Nor can you ping the articles that you have referred to. The only things it pings are TextPattern's own website and Weblogs.com, and they are hardcoded.

  • Limited archiving tags. It is impossible to have monthly archive pages in the same fashion as WordPress or MovableType, using stock TXP install. That means to access an older blog entry that you wrote 2 years ago, you have to either find it using keyword search, or keep on pressing "Older" at the bottom of the page to go back in history. There is however a user-written plugin for date-based archive.

  • Buggy. If you browse through the TextPattern forum, there are quite a few tags in gamma 1.19 release that need to be patched to be functional. Well, it is still a gamma software and not mean to be 100% stable yet, however Dean Allan has been on leave for quite a while which makes people worried that when the next release will be.


  • Ugly default template/stylesheet. And the default one is pretty empty as well. Most serious bloggers would modify the templates and styles anyway after the site has been set up. But there are many who have no idea. Look at how many MT or Blogger sites that are using the default styles! It can't be that hard to have a more decent default template/stylesheet after the installation, can it?

  • parse(). It is the main template engine of TextPattern, that it uses PHP's preg_replace_callback to insert HTML chunks into <txp:... /> tags. Instead of working down the XHTML as a hierarchical XML document, it parsed the template as a flat document. Subsequently, nested tags do not work, so in many places the XHTML has to be fed into parse() twice. At the end, 3 nested <txp:... /> tags still do not work, and outer tags got evaluated first, so there is no way to write plugins using <txp:... /> tags as a content filter. Therefore, WP's content filter plugins, such as Scripturizer, cannot not be easily ported.

    IMHO there are other architecture issues in TextPattern. For example, <txp:... /> allows one to call any PHP function at global scope - having some kind of name-space or function prefix for template tag handlers should have been preferred. But I won't discuss all of them here.


So, would I continue to use TextPattern for new projects? Yes I would. TXP really has good potential, even though it is still a one man team at the moment. Many issues, except for the underlying architecture, can be trivial to fix. As TXP is now GPL'ed, hopefully the development will pick up in speed (even as Dean Allan is temporarily absent).