Brian Slesinsky's Weblog

Saturday, 20 Oct 2007

Switched to Pyblosxom

No, I didn't fall off the face of the earth. I haven't posted because I've been busy, and also had a case of the blog migration blues. If everything has gone smoothly, the website should look exactly the same. (Attention conservation notice: lots of boring tech detail below.)

In late July, I decided that I was tired of Blosxom and wanted to upgrade to more modern blogging software, and perhaps even get support for some cool modern features such as tags and comments. This is difficult because I have some strange requirements.

Though my blog doesn't get many readers, out of principle, I wanted the migration to be extremely smooth: no data can be lost and everything important should remain at the same URL's and render the same way. That rules out anything where I don't have complete control over the rendering.

I also like knowing my website is hosted on a rock-solid ISP, and I've been very happy with's reliability and conservative attitude; though I don't have any automatic monitoring, as far as I know, my site has never gone down, and that's good enough for me. Lots of newly popular ISP's are unreliable and even major websites can have problems.

It's important that all my blog entries be in an open data format that's easy to understand and modify. (That's why I chose Bloxsom in the first place, though perhaps sqlite might also work.) Also, it needs to be open source so that if anything goes wrong, I can fix it myself.

But since I don't use Perl much anymore, I wanted to switch to a language I actually enjoy working in. I believe that having software that's open source in practice (that is, I actually do know how to make changes easily) is as important as being open source in principle.

I actually would have preferred Java, but Blojsom seems not to support static rendering and you can't run Java servers using a shared account. So, I went with Pyblosxom as my second choice. It has static rendering and seemed to have a lot of plugins, and I thought it would be an easy migration since it's based on Blosxom.

Well, the migration wasn't so easy after all. I've installed a few Bloxsom plugins over the years, such as the one that remembers the original post date and the one that provides the "more" link, that have no direct equivalents in Pybloxsom. (There is a plugin repository for Pybloxsom that lists plugins that look promising, but they are mostly broken. Apparently, plugin maintenance is not the Pybloxsom community's strong point.)

Along the way, I realized that I have no real interest in writing blog software for only myself anymore, and that Pybloxsom isn't especially well written, and wouldn't it be nice to migrate to some more mainstream blogging software and get out of writing blog code? So I looked around at other blogging software.

It's rather surprising how non-pluggable blog publishing tools still are. You'd think that the Atom standard would let you compose your blog posts offline in a great editor, upload completed posts to a blog entry database hosted by another vendor, and then render the posts as static HTML on a website hosted by another ISP. And maybe when there's wider support for the Atom Publishing Protocol, this will actually happen, but it's not there today. Instead, each blog software vendor is its own silo with its own custom API for plugins and very few migration tools.

So, I finished the port (since it was almost done) and I'm back online. It looks like I accomplished my goal of a smooth migration, but there are no new features, and I no longer feel like working on it. Maybe in another year I'll take another swing at it. For the time being, back to writing!