Switching from Movable Type to WordPress

Downloading WordPress was much easier than downloading Movable Type. Installing WordPress was very easy. Importing from Movable Type was also easy, unless you include the hours I spent cleaning up WordPress's mistakes in the import process (see "Problems I ran into after importing from Movable Type" below).

I found that WordPress could be installed in a directory with generated Movable Type content. Apache chooses the index.html generated by Movable Type over the index.php that is part of WordPress, so the Movable Type blog was still live until I deleted index.html. This approach worked better than installing WordPress in a different directory, which was the first approach I tried.

Advantages of WordPress over Movable Type

  • WordPress is free and will remain free.
  • When I am logged in, I get an "Edit" link for every post and comment. With Movable Type, I had added a <link rel="edit"> to every individual archive page and written a bookmarklet to follow these hidden links. WordPress's "edit" links are built-in and more convenient.
  • Templates are arranged in a way that avoids duplication. I can change the sidebar in all pages from sidebar.php, and a single edit modifies how posts appear in both category archives and monthly archives. (I had rearranged my Movable Type templates in a similar way.)
  • No rebuilds. Rebuilds in Movable Type were slow, and I had to to think about what needed rebuilding after each change.
  • The default template, Kubrick, is prettier than Movable Type's default template.
  • WordPress automatically adds rel="nofollow" to every link added by commenters or trackbacks. This might be enough to keep spammers from actively seeking out WordPress 1.5 blogs to spam.
  • Trackbacks and comments are combined.
  • Permalinks for comments.
  • For each post, there is an RSS feed for comments.
  • RSS feeds for many pages. For URLs that start with "/index.php?", such as searches, change "/index.php?" to "/feed?" to get an RSS feed. For other URLs, such as category archives, simply add "/feed" to the end. If you prefer Atom to RSS, use "/feed/atom" instead of "/feed". I haven't added links to these RSS feeds yet. (With Movable Type, I had set up category feeds by adding a new template.)
  • Cruft-free post URLs. (When I enable this feature, I had to paste rules generated by WordPress into an .htaccess file. For some reason, WordPress does not have permission to edit my .htaccess files on its own.)

Disadvantages of WordPress

  • WordPress generates every page for every request, so loading my blog is now slightly slower.
  • WordPress doesn't support If-Modified-Since, so every request results in an entire page being sent, even if the visitor has a cached copy and the page hasn't changed. When I used Movable Type (which does support If-Modified-Since), RSS feeds accounted for over 10 GB/mo. I'll have to keep an eye on my bandwidth usage for a few days. I don't know what percent of RSS readers requesting my feeds support If-Modified-Since, so I don't have a good prediction of how much bandwidth my RSS feeds will use now. I'll probably be ok, since I was only using 25 GB/mo of DreamHost's generous allotment of 120 GB/mo.
  • Kubrick (the default WordPress theme) uses images in bad ways. For example, there is a single background image for the content area and sidebar combined. Also, the backgrounds don't seem to have corresponding background colors, so the background colors are very wrong until the background images load.
  • Kubrick is too narrow for The Burning Edge because you can't see enough bugs at a time. This will take some work to fix.
  • Kubrick uses some some CSS rules that use "ol li" where they should use "ol > li". "ol li" matches a list item in an unordered list that is nested in an ordered list, such as in this post. I think I can fix this without breaking Internet Explorer.
  • Kubrick's CSS doesn't take into account the different element classes on the main page and individual archive pages, so paragraphs and lists in posts look different depending on what page you're on.

Problems I ran into after importing from Movable Type

  • Character encoding. My Movable Type content was exported as ISO-8859-1. WordPress imported this file as if it were UTF-8. As a result, many western european characters in my posts got mangled and I had to fix them manually. I later read that some switchers avoided this problem by converting the file from ISO-8859-1 to UTF-8 using a text editor before importing. Characters not in ISO-8859-1 had already been converted to numeric HTML entities(?), so they were fine.
  • Post formatting. Movable Type has two methods of formatting posts: "None", which leaves your post alone, and "Convert line breaks", which converts double line breaks to paragraphs and leaves single line breaks alone. WordPress's import script doesn't pay pay attention to which Movable Type formatting method I used, and it doesn't have modes correpsonding to either of Movable Type's modes. WordPress has more complex formatting: "Correct invalidly nested XHTML automatically", auto-formatting, and auto-texturizing(?). All three of these features are so buggy that I had to disable them.
    • "Correct invalidly nested XHTML automatically" doesn't let me nest blockquotes, and actually changed the original HTML for one post that uses nested blockquotes. It was easy to turn off.
    • Auto-formatting added <br /> tags for every line break and put <p> tags in many places they didn't belong, such as inside <textarea> tags. It also inexplicably added backslashes before double-quotes within <pre> blocks in this post and this post. I had to install the Text Control plugin to disable it.
    • Auto-texturizing, which turns quotes into “smart” quotes. It got the direction of quotes wrong in this post. It also smartified quotes in places they shouldn't have been smartified, such as in examples of HTML code and examples of Google queries. The Text Control plugin let me disable this feature too.

    Before I tried turning off auto-formatting altogether, I tried using Markdown instead of WordPress's default auto-formatter. Markdown fixed some of the problems, but not all of them, and introduced some new (minor) problems. I ended up disabling it too.

    Once I had disabled auto-formatting, I was left with the problem that many of my posts didn't have <p> tags, because I had relied on the "Convert line breaks" option in MT. I wrote a bookmarklet to add those tags to posts that needed them. (Note: this bookmarklet doesn't handle <!--more--> well.)

  • Headers in posts. In my modified Movable Type template, posts were <H2>, so sections of posts were <H3>. In Kubrick, posts are <H3>, so sections of posts should be <H4>. I made this change manually in old posts. This change should make Planet happier too.
  • Home page title. I wanted the front page of The Burning Edge to have the title "The Burning Edge - Firefox nightly build changelog" rather than just "The Burning Edge" to help search engines and search engine visitors. My solution was to add a PHP conditional statement using is_home() to the part of header.php that generates the <title> tag.
  • Redirecting individual archives. I wanted to redirect old Movable Type URLs to new WordPress URLs because many people have linked to the old URLs. I used a modified version of this Movable Type template to generate .htaccess redirect rules. I had to add encode_php="qq" and str_replace("_", "-", ...) in order to make my URLs correct.
  • Redirecting other URLs. I redirected what I thought were the most important category, RSS, and category RSS URLs manually by adding .htaccess files. I'll go through my error logs in a few days to see what other URLs need redirecting.

28 Responses to “Switching from Movable Type to WordPress”

  1. Rob... Says:

    Now, just like me, you need a new template so that we don’t look like every other WP1.5 weblog out there :)

  2. alfons Says:

    |WordPress doesn’t support If-Modified-Since
    Really frustating, especially with a bot like Technoratibot pinging back. It gets an HTTP 200 for my feeds, and just downloads them again, about 10+ times in an hour, until it realises that WordPress lied to it…

  3. Kevin Hamilton Says:

    > WordPress doesn’t support If-Modified-Since
    I think it does. But prior to 1.5 it was broken.
    Bug 0000581 claims it was resolved in January, 2005.

    There is still some discussion ( Bug 0000582 )about how to handle If-Modified-Since if the client (improperly) does not cache the Last-Modified header from the previous request.

  4. Weblog Tools Collection » MT to WP Notes Says:

    […] 3/14/2005 MT to WP Notes Categories – Blogging News LinkyLoo — Mark Jesse Ruderman : Switching from Movable Type to WordPress Some not […]

  5. paul haine Says:

    It strikes me that a lot of your problems are problems with the default template and not WordPress itself. For instance:

    “In my modified Movable Type template, posts were <H2> so sections of posts were <H3>. In Kubrick, posts are <H3>, so sections of posts should be <H4>”

    Surely it would have been easy enough to just change the template, rather than change the markup in your posts?

  6. Wibbler Says:

    It seems that the only main advantages to WordPress are the RSS feeds and a couple of comment functionalities. All the other functions you list in the Advantages of WordPress can be achieved in MT, albeit with easy-to-install plugins…

  7. Ian Says:

    Your slow-downs may not only be due to WordPress, but that DreamHost has quite substantial performance problems with their MySQL servers at the moment. Having just bought an account with them, before switching I’ve been benchmarking their database performance (open a connection, then perform 4 different queries on a datbase table of ~9MB):


    my old host (who suffer from awful support and bad management of servers) using the identical test:


    So far, there is a massive difference; in initiating a connection I get a mean latency of some 125ms+-1456ms standard deviation (n=2021 — my old host is about 4.5ms), it is as if the server is across the Atlantic (125ms is the hop from LA to London!), and then queries are about 3-10x slower. These values hold on at least two of the DreamHost MySQL servers.

    I am collating statistics over a few days and will submit it as a report to them, I’ve heard they are good about responding to such input positively. Anyway I suspect the “slowdown” could be drastically reduced once DreamHost get a handle on their poor MySQL performance.

  8. David Lynch Says:

    If dreamhost is having mySQL performance issues then you might want to activate the Staticize plugin (I think it’s bundled with WordPress), which caches the output of all the dynamic pages. (There’s functionality in it to allow parts of the page that are dynamic even in the cached pages — like a random image.)

  9. David Lynch Says:

    Oh, and Staticize does Last-Modified and etag headers. :-)

  10. Anil Dash Says:

    Just to be clear, each of the following features is in Movable Type 3.1:

    No rebuilds.
    Automatically adds rel=”nofollow” to every link added by commenters or trackbacks.
    Permalinks for comments.
    Cruft-free post URLs. (In Movable Type, these work on non-Apache web servers by default as well.)

  11. Jesse Ruderman Says:

    No rebuilds.

    You’re right, MT now has a “dynamic” option. I forgot about that.

    Automatically adds rel=”nofollow” to every link added by commenters or trackbacks.

    It didn’t do that for me. I was using MT 3.15.

    Permalinks for comments.

    It didn’t do that for me, probably because I didn’t switch to the new default template.

    Cruft-free post URLs.

    You’re right, you can get those in MT too.

  12. Duncan Says:

    First, welcome to the club! Once you play with WP some more you’ll find the ability to customise quite amazing and somewhat simpler with the php that WP utilises.

    Yes, there are sometimes some problems with conversion, particularly the more you’ve customised the original site, but its totally worth the effort, and you’ll be thankful in the longer term.

    What Anil didn’t mention in his comment though that no matter how or what you use WP for, its always free, the best thing about it, and you’ll find the support team and development people behind WP amazing, a bit like MT prior to the creation of SixApart.

    You’ve joined a great community and we are happy to have you.

  13. Yusuf Smith Says:

    I recently switched to WP from MT also, mainly attracted by the better spam protection and driven away by continual rebuild errors when deleting comments. One bug in 1.5 that I can’t make go away is that it won’t display my categories alphabetically.

    The way they always tell you to do this is to change the “list_cats” or “wp_list_cats” line in your sidebar.php in the theme directory, but I’ve tried this and it doesn’t work. I do hope they fix this in the next bug-fix release. (I’ve no idea why this affects some people and not others – others have said they have been able to get WP to do this.)

  14. jowra Says:

    I’m new to this blogging-stuff and I love WP. MT is for shure a nice blogging an cms-tool. But a very important point to me is: “WordPress is free and will remain free.” And there are so much WP-Plugins all around and a great community.

  15. TechMount » Blog Archive » Daily Friction #1 Says:

    […] lows you to submit your RSS feed to various online services from one handy Web interface. Jesse Ruderman switched from Movable Type to WordPress. Good move […]

  16. hank Says:

    Thank you for explaining the gray bars — I’d been going nuts lately as more and more pages started giving a third of the screen to these huge blank gray spaces (as, I now realize, more and more people adopted WordPress).

    I figured they must be there for people to overlay with eye garbage/ads/tapdancing, farting iconography, and had been wondering how to get rid of them.

    Still am, but at least now I know where they’re coming from.

  17. Jesse Ruderman Says:

    I think the default WordPress theme has gray bars on the side for two reasons:

    * To make a fixed-width, two-column layout possible. Fixed-width layouts are easier to implement using images and background images. Making a fluid layout pretty takes more work.

    * To keep paragraph text from being too wide. Very wide paragraphs are hard to read.

    I plan to switch The Burning Edge to a fluid two-column layout (like the previous layout) or maybe even a fluid single-column layout. I might leave my personal blog as it is (with the fixed-width two-column layout), or I might switch it to a fluid two-column layout.

  18. Turn On One Day » Wordpress1.5 release Says:

    […] igart : my life and stuff » Upgraded my blog ・Firefox開発者、Jesse Ruderman : Switching from Movable Type to WordPress と、オープンソースの面 […]

  19. Jonathan Horak Says:

    Jesse, what do you think of Dreamhost? I’m not a big fan of unfriendly usernames [1], but that is my only holdup with buying a plan (specifically Level 3).

    1. https://panel.dreamhost.com/kbase/index.cgi?area=852

  20. Jesse Ruderman Says:

    I like DreamHost a lot: http://www.squarefree.com/2004/12/23/why-i-love-dreamhost/

    Unfriendly mailbox usernames haven’t been a big problem for me, since I’ve only given a mailbox to my brother. But I do wonder why DreamHost went with mailbox usernames like m1234567 rather than including the domain name in the mailbox username (e.g. username!domain.com).

  21. Jonathan Horak Says:

    Yeah, user@domain.com would make a whole lot more sense, considering each would have to be unique as it is. Unfriendly usernames are a definite concern because I host friends/family and some freelance projects I do. The solution may be to just refer folks, considering how quality (while cheap) Dreamhost’s plans seem.

    Thanks for sending me along to your older post. Although mailbox usernames may be the reason I look elsewhere, if I purchase Dreamhost I’ll make sure to follow your refer link.

  22. Marc Abramowitz Says:

    If you like the fact that WordPress gives you edit links for each post, you might also like this plugin, one of my favorites:


  23. ao2yo4.log » Blog Archive » Wordpress1.5 release Says:

    […] ution³«È¯¼Ô¡¢tigart : my life and stuff Upgraded my blog ¡¦Firefox³«È¯¼Ô¡¢Jesse Ruderman : Switching from Movable Type to WordPress Downloading […]

  24. rustedscissors: the dull edges » Wordpressed Says:

    […] n sitely at 6:08 pm by Mia Finally switched to WordPress. Why? I grew impatient with “having to rebuild my pages and think about which ones to rebuil […]

  25. inforedesign » Blog Archive » Switching from Movable Type to WordPress Says:

    […] SS And E-mail

    Switching from Movable Type to WordPress

    Switching from Movable Type to WordPress — Ð´Ð¾ÑÑ‚Ð¾Ð¸Ð½ÑÑ […]

  26. Mozings Says:

    Buh-bye wordpress, we hardly knew ye!

    Following Jesse’s switch from MT to WP, I had decided to give it a shot. Infact, only yesterday, I had a test blog ready

    Today, there’s news that WordPress lead developer tried to manipulate google search results.

    So my blogs are going to powered …

  27. Mozings Says:

    Why switch to wordpress now?

    In response to some comments on my buh-bye wordpress post, I’ll want ask the question – What’s the motivation to switch to WP?
    Its clear that both MT and WP need money. MT chose the legal way. WP developer chose the dubious path. As pointed out in …

  28. Gizmola Says:

    There is an alternative in the php arena that is quite viable at this point: Serendipity! I looked hard at wordpress some months ago, with an eye towards developing my plugins. Personally my conclusion was that the plugin architecture for serendipity was better designed, although of course these type of opinions are entirely subjective. WordPress is certainly exceedingly popular these days, but I feel Serendipity is keeping pace and has features (the spam blocking plugin for example) that are state of the art.

    It’s also got a lot of nice import capabilities for people who are interested in converting. Check it out at http://www.s9y.org/