Madness Meets Modernity

I’m a fan of Movable Type – the de facto blogging platform

…of the 2000s.

Movable Type is a static site generator by default, but since its fall, the web has moved on to much lighter static site generators. None of them is as elegant in design or templating to my admittedly nostalgia-tinged eyes. (I dare not consider the other side, with the PHP behemoth.)

It’s not just the web which has moved on, of course. The language Movable Type is written in, Perl 5, has changed too. Most notably, since version 5.14 or so, the language has started to evolve and break old syntax. It is because of this that Movable Type no longer runs correctly, or at all, with modern Perls.

That’s not to say Movable Type 4 won’t run today – it and even earlier versions will, but it takes a little work. We must either:

There are problems with both approaches. Once you find the offending lines, editing the Movable Type code is not too difficult, provided you understand a bit of Perl. This was my approach at my former web host and it worked pretty well. There were still lingering problems, though – there were frequent warnings and image manipulation functions in MT didn’t work. I accepted the trade-offs as a temporary solution. Besides, that was my only option on shared hosting.

Once I moved this site to its own server, running an old Perl became feasible. But again, modernity brought problems. Understandably, any current and supported distribution of Linux is likely using Perl 5.26 or later. Though I may be comfortable running old software for myself, I will not run a publicly-accessible server on a so-called end of life operating system.

Then, CentOS 6. Distributions of CentOS are supported for a very long time and version 6 shipped with Perl 5.10. It was perfect for my needs but it too was a temporary solution. The operating system is only receiving the most critical updates at this point and all support will end in late 2020.

It is necessary to go another way: build and run your own Perl. This version must run parallel to the system’s Perl, and only for those applications which need it. Unless you’re a well-seasoned sysadmin, the process is a bit of an undertaking. It’s imperative to configure the building and installation of the Perl core, and its modules, so as not to disturb the system Perl.

Though it may take effort, and perhaps multiple attempts, it is possible to do on your own. It’s probably not advisable, though.

I am not the only person who has wanted to do this – perhaps even you might. Many people have the need and for that reason, the Perlbrew utility exists. It handles the messy details for you. This is the first step to getting a web app like Movable Type 4 running on modern systems.


Perlbrew is only part of the solution, but it’s probably the majority. You also need to get the web server to use the new old Perl and this takes some additional preparation and work. In a follow-up to this piece I intend to share the details of how I got it working on my machines. For anyone else out there who loves Movable Type and is slightly mad.