Making the Decision
The first, and probably toughest, part of this migration was to actually make the jump. This site, and every bit on it, is something I’ve carefully crafted over the years. Up to recently, I could proudly say that every piece of code on the site was something I had written myself. It was a point of pride and, while blog software was still new, it was also a way to experiment and go deep into the code. Over the years, though, software platforms have gotten more and more complex and my own code failed to keep up.
The second part of the decision in making the jump was also due to my focus on spending more time writing. However, this was balanced by my need to tinker with the code. As time went on, it became more and more difficult to figure out where I wanted to experiment.
Last but not least in that decision was the fact that everything I was building was my own but not something I could really share with anyone. Time and time again, people asked me how I implemented a particular feature on my blog and I had no way to deal with this than to pass the whole code, ugly commenting and all, to them.
Last month, the main drive on TNL.net crashed, something that appeared like a disaster at the time but was really a blessing in disguise. Having to rebuild the box, I decided that it was time for a massive upgrade. First, I would upgrade the operating system (TNL.net had been languishing on an old version of Redhat Linux 7.3 for so many years due to some bad system design decisions I made when I moved to Linux a few years ago). Having done so, I also decided to upgrade the web server (to Apache 2.0), the database (to MYSQL 5) and the programming language (to PHP 5). It was a major upgrade and, as is the case with every major upgrade, things started to break. I spent a considerable amount of time bringing things back up and reintroducing tweaks that had built up over several years. It was then that I realized that maybe a different approach was needed.
Who are the contenders?
Having decided that I would upgrade the blog to someone else’s software, I had to establish what factors I would consider when building the new site. From there, I built a quick list:
- The software I would take had to be something I could tweak: While I’m leaving my existing code base behind, I still want to have some level of control over what goes on under the covers.
- The software I would use had to be open source. My reasoning for this is that open source not only means free but it also means that I am not worried about control issues further down the road. So any changes that I make and then redistribute doesn’t fall under some kind of corporate legal entity and therefore (fingers crossed) I won’t have to worry about legal issues relating to my amendments.
- The software would have to be extensible through some type of plug-ins or module infrastructure.
- The software would have to be written in PHP and use MYSQL because those are technologies I’m familiar with and I didn’t feel like learning something new.
- The software would have to match the features I had running in my existing blog.
Having those requirements made the choice considerably easier, as it left only two major contenders: Drupal and WordPress. In the end, I decided on WordPress for purely visual reason: the admin interface just struck me as much more polished so I went with it. Drupal had a geekier feel to it but WordPress felt like a more finished product (and here, I may show some bias for interface).
Starting the migration
The first step in migrating things to move over was to figure out what I needed to migrate. One of things I wanted to ensure was that any upgrade would have little or no impact on the overall feel of the site. I’ve spent a considerable amount of time tweaking TNL.net so it did not necessarily feel like a blog and so that the user experience was always as optimized as possible, allowing people to get to any content within only a few clicks.
First Challenge: Look & Feel
This presented some challenges: the first challenges was in keeping the interface consistent. Most blog packages come with a set of skins or themes that are used by beginning users. I, however, set out on a path to change the whole look and feel to mirror exactly (pixel perfect) the previous look of the site. This sent me down the path of theme development for WordPress and I spent many hours learning about the internals of the system in order to make it do what I wanted it to.
The other look and feel challenge was in the URL structure of the site. For years, the URL structure on TNL.net has not changed however, I’ve always been bugged by some of the limitations I had created for myself. For example, entries could not have the same title because I had created a system that prevented me from being able to do so. It seemed clever at the time but turned out to be a major design flaw. As a result, the URLs for every entry sat at roughly the root of the site. I wanted to make sure that any Google juice or other types of linkage would not break so I had to write my own routine to redirect pages correctly. This ensured that the URL structure of old could still remain.
Second Challenge: Data structure
In the process of writing my own blog, I defined my own data structure. I wanted to ensure that it would be followed in WP but it took some tweaking to get everything to map correctly. However, thanks to the RSS importing feature, I was able to import most of the old entries without problems. This, once again, was to ensure that continuity would remain unbroken and that the site would still function as it always did.
However, a second challenge was in importing comments. I’m still trying to figure that one out as I’m working on importing all the comments back into the new system. They’re temporarily offline but they will come back.
Third Challenge: RSS feeds
A substantial amount of TNL.net reader never visit the site: they get it via RSS. This presented a new challenge as I wanted to ensure that they would remain mostly undisturbed through this transition. In the process, though, I decided to move to a new model that would ensure they never have to worry about such URL changes. I redirected all the feeds to new URLs (http://feeds.tristanlouis.com/TNLnet for the excerpts feed and http://feeds.tristanlouis.com/TNLFull for the full entry feed) which are now powered by FeedBurner, allowing me to get a better understanding of who my readers are while helping migrate them from one platform to another. In a sense, FeedBurner is now serving as a migration tool while at the same time providing me with a new URL schema that I could take anywhere I want.
Conclusion: A pretty seamless transition
All and all, while it was some work to get most everything working, the transition has been pretty good so far. I’ve gained a fair number of new features and am still exploring how the system works. It seems to be much more feature rich than any code base I developed so that’s another great relief. On the downside, I feel a little sad to let go of a large chunk of code powering the site (the TNL.net blog was powered by a 90k PHP file which will soon be cleaned up). I’m still considering adapting the old code to deal with the front end of TNL.net but, all and all, it looks like WordPress will be my blogging tool of choice… until I decide to switch again.