Well, maybe I spoke too soon about Drupal. Why? Well… it’s 2010 guys, stop with the ID links. I know there’s a plugin that overcomes this shortcoming, but all the internal links, including edits, redirects, and so on, won’t use the aliases you define. No, foo.bar.com/node/123423 is not a valid url. It requires approximately ten minutes to add a table column for a ‘slug’ to look up the appropriate entry, but Drupal refuses to compromise.
So, with a heavy heart and a furrowed brow, I’ve delved into WordPress. All in all, it’s not horrifyingly terrible, just mostly hideous. If you don’t believe me and you use WordPress, add the following code to the index.php file in your template directory:
<?php print_r($GLOBALS); ?>
Now, with the advent of later versions of PHP, you can do things like class singletons for persistent data and encapsulation. Unfortunately that would probably require a massive rewrite of WordPress, so they’ve continued instead by making every variable ever a global. The variable environment is so polluted, it’s amazing anything works.
I’ve also found I need to comb through contributed plugins before using them. Some people have apparently never heard of a SQL injection attack, and think it’s just peachy to insert unvalidated variables directly into a database query. Variable binding in PHP is free, and has been around since at least 2001, so there’s no excuse for this. Stop it!
But I’m lazy and ultimately fed-up with reinventing the wheel, so I’ll just hope the situation improves with time. If a better engine comes along, I can convert, as I’m slowly redoing all of my posts in Markdown syntax, so my posts are portable and, most important, devoid of all but the most picky raw HTML syntax. As HTML evolves, much gets deprecated, and I’d hate to go through all of my posts for the past ten years fixing stuff, when it’ll be automatically handled as the markup generators grow. I need to do this to tag, categorize, and clean up the content anyway, so it’s no huge loss.
I’ll also be releasing my template as GrimLock when I think it’s ready for external use. It’s based on the Blueprint CSS system and vastly improves on the ‘Blueprint’ theme on the WordPress theme site in terms of CSS overrides and code cleanliness. Websites: they’re not just an adventure, they’re a job.