On Blogging Software…

As I work to install WordPress on this site and tweak and twiddle the look and functionality, I can’t help but think that every blog, Wiki and content management system isn’t so much an application as a construction set full of pieces that you can assemble to make a blog or website. Is there some reason why that is the case, or could a more disciplined application be designed and deployed?

In trying to learn more about WordPress, I joined the #wordpress channel on the freenode IRC channel. When I complained about a certain aspect of the design, one of the WordPress designers shot back that I should “hack it to do what I want”. As it happens, I have no problem hacking scripts to do what I want, but I still was vaguely annoyed by the mentality conveyed by this response. The particular problem that I had was with the "menu" that ran down the right side. It contains a variety of different fields, each introduced by a header, and containing some data fields (either links, a search box, or a calendar). Despite their similarities in visual appearance, they are each generated by different chunks of code in WordPress, and therefore each require different markup, much of which isn’t very structural.

Having been told that the best option available to me was to "hack", hack I did. I created a couple of new functions that created div elements for each box, each with an appropriate h1 element. It took me all of about twenty minutes.

But then I started thinking: this twenty minutes is twenty minutes I’ll probably have to spend again when I upgrade to the next version of WordPress. And the next. And the next. It’s not like I am changing any of the real substance of the weblog, I’m just trying to get it to display the data in the way that I like. Why do these appearance issues turn out to be so painful?

I suspect it is WordPress (and virtually every other weblogging system I’ve seen) are really nothing more than hacks from top to bottom. They try to use web standards when they are convenient, but actually do relatively little to ensure that they are consistently applied throughout their design.

As another example, consider the postings that I imported from my old Movable Type version of this weblog. Much of the markup that was imported is not XHTML compliant, so the net result of importing this material is that the overall website isn’t XHTML compliant. Shouldn’t the import mechanism carefully screen the imported material and ensure that the results are XHTML compliant itself? It would appear that using markup like Textile or Python’s restructuredText would make this simpler, so why not use it uniformly and generate compliant webpages directly from arbitrary input?

To successfully use most weblogging software requires at least a passing familiarity with a wide variety of programming languages, applications, and technologies. For instance, to use WordPress, I conservatively estimate that we need to know:

  1. How to install mySQL, add a database, and how to configure users to use that database.
  2. Install Apache, including mod_rewrite.
  3. Install mod_php4.
  4. To modify the appearance, you need at least passing familiarity with cascading
    style sheets, and to do anything serious you need to be able to dissect the PHP code for pages.
  5. You probably need to know quite a bit about XHTML to generate a compliant page.

So in the end, is your blog software actually doing that much for you? Yes, it automates the boring bits so you don’t have to do them all the time, and factors your work so you have to do it less often, but it really doesn’t keep you from having to learn all sorts of trivial details about how it is implemented. If word processors were like this, we’d all be designing our own page layout and hyphenation algorithms, and take side trips out to build our own kerning tables.

By now, you’re probably thinking I’m quite an ass, and that it is easier to criticize than to build. You’d probably be right. Indeed, I’ve built a number of small systems for blogging which suffer from all of the ills I’ve described above. But what I am wondering is why apparently no one has designed a more disciplined application. Surely it must have occurred to others just how bizarre this development model is?