Migrating to Wordpress: there's gonna be some changes 'round here

Earlier this week, Six Apart (makers of Movable Type, the CMS behind Josh Reviews Everything) announced that they were being bought by ad network VideoEgg. Quoth news.com.com.com:

Not much there about the future of Movable Type (although they’ve insisted that they’ll keep supporting it as a platform).

Update: Mashable succinctly explains where Movable Type went wrong, and why MT’s future is so gloomy.

Movable Type used to be the gold standard of blogging platforms. There was this little open-source punk upstart called Wordpress, but it had its flaws: a CPU-hoggy PHP-based dynamic publishing system and a rash of nasty security holes among them.

But lately, Wordpress has caught up with its older rival. Its plugin and themes support is broader than Movable Type’s. CPUs are fast enough and cheap enough that dynamic publishing doesn’t blow the processing budget (especially with some server-side caching). Wordpress has automatic updating; Movable Type doesn’t. Wordpress has an iPad client; Movable Type only has a mobile posting interface (which still isn’t particularly iPad-friendly).

So this weekend I’ve pulled the plug on the old MT-powered site, and migrated JRE across to Wordpress. After the jump - how I did it, and a few tips for anyone else thinking of making the same move.

The migration was surprisingly painless. Wordpress has a pretty smart MT importer, which brought all the posts and comments across. Moving the assets and images was just a matter of copying the old images directory (and most of JRE’s images are hosted on Flickr, which made things easier as well).

The one gnarly part of the move was preserving the old permalinks. I didn’t want to break any old inbound links (like, say, this one - hi Alphaville!), but Wordpress uses a slightly different URL structure… so a little bit of mod_rewrite and .htaccess magic was needed. With plenty of inspiration from this blog post, here’s what I came up with:

RewriteRule ^index.xml$ /feed/ [R=301,L]

The first line repoints the RSS feed to its new address (essential if you don’t want to annoy your Google-Reader-using readers); the second line looks for any addresses in the form of /yyyy/mm/post_title.html (MT style) and replaces them with /yyyy/mm/post_title/ (which WP’s canonical-URL code can parse).

The only other issue I ran into was with automatic updating, and here’s a tip - make sure the directory you’ve installed Wordpress to is owned by the same user that Apache runs under. If you get asked for an FTP password when you try to auto-update, just chown the /wordpress/ directory instead.

Once those were working, it was just a matter of adding themes (currently Theme Foundry’s Titan), rebuilding the sidebar widgets, and flicking the switch.

And Wordpress definitely feels more usable. I’m not sure about page load times yet (WP Super Cache should help with that), but everything else feels better - the posting interface is nicer (although it still works with the terrific Ecto editor), the automatic plugin and theme loading is a giant leap from MT’s theme loader, and the server hasn’t melted down under the PHP load (yet).

I should’ve made the move years ago.