The Blog Upgrade question strikes again

I installed Movable Type when I first started this blog, but I’ve been itching to change for months. A small part of that itch is Movable Type’s new pricing model, but it’s really more then that. I have a number of needs that MT isn’t really filling, and I’d like to move to something that works better for me.

The big problem is that I can’t find anything that’s quite right. I looked at Drupal for a while, but there are a few things with it that I just couldn’t cope with:

  • It’s a much bigger system then I really need, with a lot of complexity.
  • It’s written in PHP. If I could treat it as a black box, I wouldn’t really care, but I couldn’t because…
  • It’s essentially hard-coded to need MySQL. In theory, it’ll work with PostgreSQL, but I fought with it for days without actually getting it to work. There were a number of deeply-embedded MySQLisms in the code that I just couldn’t fix, even after digging into the code for a while.
  • PHP’s SQL code is too scary to look at. While the core of Drupal goes to great lengths to prevent SQL injection attacks, a number of add-in modules looked pretty clueless. In addition, all of the SQL code is built up using command = 'insert into foo (a,b) values ("'+value1+'","'+value2'");'-style commands, which are inherently ugly and prone to problems. I really prefer the Perl (and Ruby) DBI version: insert into foo (a,b) values (?,?), where you provide value1 and value2 as parameters to the DBI execute function.
  • Template modifications are a royal pain compared to MT. Out of the box, all of the templates used HTML tables, unlike MT’s clean CSS-only templates.

Now, if I was setting up a big community site, none of these would really matter to me. I could spend a couple weeks on templates. Heck, I’d expect to spend a while tweaking things until they worked right for me. If I was doing this from a corporate perspective, I could just hire someone with experience in Drupal, like Bryght. But I’m not building a big community site, and I’m not willing to pay someone to do it for me. I’m largely doing this for the fun of it, and Drupal doesn’t seem to be a lot of fun.

So I’m back looking again. MT has cleaned up their prices, so I could just install MT 3.1 and be done with it. It wouldn’t be a lot of work to upgrade, and there’d be a handful of benefits, but it still wouldn’t give me an HTML photo gallery or a decent interface for static non-blog pages.

I’m fighting off the urge to use Rails to write a blogging system for myself. Hopefully, if I fight off the urge long enough, then someone else will do it for me, and I can just take their framework and adapt it to my needs. One can always hope :-).

Posted by Scott Laird Wed, 01 Sep 2004 16:27:00 GMT


Comments

  1. Steven Wittens about 15 hours later:

    Some notes about Drupal “PHP’s SQL code is too scary to look at. While the core of Drupal goes to great lengths to prevent SQL injection attacks, a number of add-in modules looked pretty clueless. In addition, all of the SQL code is built up using command = ‘insert into foo (a,b) values (“’+value1+’”,”’+value2’”);’-style commands, which are inherently ugly and prone to problems. I really prefer the Perl (and Ruby) DBI.”

    Drupal has a db_query() function which allows you to use printf style ‘%s’ and ‘%d’. This is exactly the same as the Perl/Ruby thing you mentioned and just as secure. This is the only thing Drupal does (and needs) to prevent SQL injections, and it’s very easy to use. I don’t see how this is ‘going to great lengths’.

    “Template modifications are a royal pain compared to MT. Out of the box, all of the templates used HTML tables, unlike MT’s clean CSS-only templates.”

    Drupal has HTML templates through xtemplate, but also offers a CSS only theme called Chameleon, where you can use your own stylesheet. In addition to that, the upcoming Drupal 4.5 has a much more flexible theme system where you can seamlessly use HTML templates, CSS styles or entire theme systems through one system.

    “It’s essentially hard-coded to need MySQL. In theory, it’ll work with PostgreSQL, but I fought with it for days without actually getting it to work. There were a number of deeply-embedded MySQLisms in the code that I just couldn’t fix, even after digging into the code for a while.”

    Drupal is not hardcoded for MySQL: if you find a query which does not work on PGQSL, let us know and we’ll try to fix it. The Drupal core should be PGSQL compatible, though you might have issues with 3rd party modules.

  2. Scott Laird 1 day later:

    Admittedly, it’s been a couple months since I last looked into this. Many of the things that I saw have probably been closed by now. I reported a couple as bugs, and left the rest alone–I ran out of time and interest to follow up on them.

    The Postgres problems were fairly wide-spread. The very core of Drupal worked fine, but a lot of modules (even modules bundled into the main distribution) used slightly non-standard SQL. Things like double-quoted strings, which mean different things to MySQL and Postgres, or “INSERT INTO foo (intcolumn) values (‘15’)”, which apparently MySQL is okay with. Sorry, I don’t remember where I saw these, if you really care I can try to reconstruct it, but it doesn’t really make a big difference to me anymore. I think a lot of these problems were actually in third-party modules (trackback and subscription come to mind), but they were more or less critical modules. In general, the impression that I got was that 98% of the users were using MySQL and PostgreSQL was so rare that it received almost no testing. So, problems were fixed as they were reported, but no one was making any real effort to keep the code working with Postgres.

    In general, Drupal’s code seemed amazingly good for PHP. However, it’s still PHP, which has grated on my nerves for years. Reading the code, I found reminders of what’s wrong with PHP every few lines–the vast assortment of subtly different regex functions, the complete lack of object orientation, the namespace issues, the fragmented DB support, and the places where Drupal has had to add their own wrappers (like db_query) to protect against core PHP problems. None of this matters from a user’s perspective. If I’d been able to leave the code alone, I’d have been fine. However, there were too many little things that I wanted that Drupal didn’t quite do the way I wanted (that’s more a reflection on me then on Drupal–don’t take it as an insult), and I just couldn’t cope with having to write or modify a half-dozen modules in PHP, no matter how impressive the core code is. Since I’m doing this for my own enjoyment, I’d rather do 10x the work in an environment that I enjoy.

    So, for now I’m still suffering with MT, with all of its problems, written in Perl (which I don’t really care for, either), with a license that’s way less free then Drupal.

  3. Counsel 11 months later:

    I am switching from html/css/xhtml to drupal for my site (www.pocosin.com). Now, I have JUST started with Drupal, and I have a long way to go to fix my site and get it looking “correct.” However, I reasoned it would be better to try to ‘fix’ or push for fixes in Drupal rather than spend time with another system.

    Perhaps your technical knowledge could also be useful?

    C

  4. Tom Willis about 1 year later:

    I love it. I hate wordpress. Generally I hate blog software. But if I had a blog website I’d probably use it.

    I moved our website off of wordpress because it was said “We don’t want to be a blog” and thus, the blogging software was dumped.

    if you want blogging software, why did you look at drupal? It’s a content mgmt framework. Not a software system for blogging.

    If you want a hamburger, do you bring a cow home do you?

    This is the only statement in your rant I agree with.

    “It’s a much bigger system then I really need, with a lot of complexity.” complexity is relative though.

    Everything else I find contradictory to my past 2 months experience hacking at drupal. Which is cool cuz I don’t even do php for a living, wanna talk complexity? How about a j3ee blogging software system. That is bound to be a load of garbage. :)