CMS

Drupal 6 suffering from Drupal 7

After months of waiting for Drupal 6 to get up to speed, I'm getting sick of waiting.

The worst part is seeing Views 2 and other key supporting modules flounder while the core Drupal team rushes on to Drupal 7 before 6 is even usable.

Slow down, seriously. This is one recent adopter who's disappointed with the headlong pace and the near abandonment of what's just come out the door. I realize it's exciting and probably profitable to you, but when the codebase is a moving target and the next version significantly cuts into current development to the point of current = incomplete... well that seems an obvious Catch-22 problem to me.

Freeze 7 and finish up 6. You called it complete, but it isn't. You cannot complete 7 anyway since these are modules planned for the 7 core.

I'm not a site-designing company, so I'm not profiting from the steep learning curves, accelerated development and problematic upgrade paths. Overall I think the software is well designed, but the priorities of the companies that fuel most of the development are beginning to sit poorly with me.

Edit: I'm going to clarify here, because at least one person misunderstood the paragraph above. I'm not accusing anyone of being money-grubbing greed mongers. It's just that money and business tend to act like glue in regards to priorities such as these and that means the situation may be stuck this way./Edit

Granted, some of the forward-thinking features brought me to Drupal in the first place, but I'd just like a stable and complete platform to work with. It puts me at unease to realize that's two versions before what's being developed now.

This is me grumbling a little before I just make do with Drupal 5. I'm already past my original deadlines and Drupal 6 looks like it will still be stalled for awhile.

Comparing Performance of CMS Software

I knew ahead of time not to expect blazing performance from Drupal, because that's not what a CMS system is about. But it's been awhile since I actually benchmarked my server, it's run happily for years and has weathered its share of high traffic stress with nary a hiccup.

Since I've recently updated the system with a more recent Linux distribution, plus my significant development plans for the next few months, I figured it was best to run the server through its paces. What I've discovered is a huge gap in performance between my old custom-coded sites and the various CMS-installed sites. It's almost a 1 to 100 ratio difference and that's kinda scary.

I'm using Apache Benchmark for profiling with options for no-keep-alive, non-concurrency, pre-generated cookies and 500 requests. For good measure, I ran the overall gamut 3 times and then averaged the results.

Important Note: This is testing on a non-optimized server. These are not standard results.

For reference, static page requests are nearly instantaneous: ~1ms.

The Results:

  • Custom-Coded: Oldslate is a good example of custom-coded stuff. It has a fair sized legacy userbase (~2500), some sparse forums and a clicky-clicky game that can amount to a large amount of requests per second. All of the PHP code is procedural, which is an important distinction, especially when it comes to MySQL requests. Overall though, the code on Oldslate could use a major overall which is one reason I plan on replacing it.

    Oldslate front page results:
    Average page request = 10ms
    Slowest page request = 24ms
    Requests per second = 94/sec

    Oldslate game page results:
    Average page request = 59ms
    Slowest page request = 65ms
    Requests per second = 17/sec

  • Keep in mind that the game page involves some seriously complicated MySQL queries, arguably much more than the following pages.

  • Wordpress: MMOROG is an example of a heavily laden Wordpress 2 blog, with ~1000 posts, ~2300 comments, and over 5000 stored spam (I should delete that, but storing & suppressing is the Wordpress default).

    MMOROG front page results:
    Average page request = 1007ms (~1 second)
    Slowest page request = 2376ms (~2 seconds)
    Requests per second = 1/sec

  • Drupal: This News @ Gameslate blog is running on Drupal 5 with a pretty minimal database (so far), but it does have quite a few modules installed. I also have a test site with no extra modules and as you can see it performs better.

    News @ Gameslate front page results:
    Average page request = 991ms (~1 second)
    Slowest page request = 2408ms (~2 seconds)
    Requests per second = 1/sec

    Test Site front page results:
    Average page request = 448ms (~1/2 second)
    Slowest page request = 1844ms (~2 seconds)
    Requests per second = 2/sec

The good news is that Drupal has some optimizing and tuning features that I haven't turned on yet. I also haven't optimized this recent install of Apache, PHP & MySQL. So I have a fair bit of breathing room left still.

I was a bit surprised that Drupal more/less matched Wordpress, because it seems so much more complex and I expected a big blow from the modular design. That was encouraging, but we'll see how it is once I've thrown a bunch of content into the database.

I'll have to check my logs and run more tests for details on the performance, but my first guess from a glance at top is that CPU usage is a bigger limiting factor than RAM. I have some tweaking to do, but I'm comfortable that I can those numbers down to some semblance of sanity.

Any CMS is bound to perform poorly compared to custom-coded stuff, I just didn't realize how big the gap was.

Drupal + Views & CCK becomes Platform vs CMS

I'm currently wrapping my head around concepts with Views and CCK, two external modules for Drupal which among the heavy-weight developers are considered must-haves. I understand why they aren't in the core though, they require a different paradigm. This is the power-user stuff.

It's a step past just knowing how to use Drupal. It's learning how to manipulate Drupal to suit my needs. Drupal is meant to be a CMS (Content Management System), but with Views and CCK, it becomes more like a Framework or a Web Development Platform.

Comparing Wordpress, which works exceptionally well as a blogging CMS-- Imagine any CMS as a Fisher Price Little People set, like the old barn set with the animals or maybe the main street set. Great to get as a Christmas gift when you're a kid, it's fun and you can play different ways with it right out of the box.

A CMS is like a Little People playset

Drupal (with Views & CCK) is more like getting a set of Lego instead. You can build so much more, but out of the box it's just a pile of coloured bricks. I can make something simple right away, but if I figure out all of the creative ways the pieces fit together I can build things that are much more interesting and elaborate.

A Framework is more like Lego

My initial interest in Drupal was to get something up and running quickly, then modify using what I already know on the PHP + MySQL coding end. But as I progress with it, I can see the usefulness of learning it thoroughly. Once I do, I should be able to work quicker.

Right now though, the curve feels pretty steep.

CMS? Drupal

I would have started this blog sooner, in fact I had several false starts, but I needed the basics covered first. Namely, I needed to pick a CMS (Content Management System).

Normally for blogs, I use Wordpress. I adore Wordpress, it does one thing and it does it very well. But that's exactly a bit of my problem, each of my websites does one thing and I want to squish 'em all together at the very least under a combined login system. And not every site is a blog. Some have forums, games, etc.. A lot of my older sites were custom-coded from the ground up, including Gameslate.

My initial thought was to bridge my sites, basically leave them as-is, but replace their standard logins with a centralized one. After a few attempts though, I've learned just how messy that could get. Wordpress, MyBB, and my oldschool procedural code were never meant to get along. Besides, it's already a pain to work with totally different code bases, so how much does easing just the logins solve for me?

My new approach was find a one-CMS-to-rule-them-all solution, although expecting a CMS that could do everything was unreasonable, so I decided on a few core things that I absolutely needed:

  1. Logins / Registrations that rock - Priority #1, I'm sick of tedious logins and remembering a bunch of different passwords, especially for my own sites dammit.
  2. (near) Direct HTML / XHTML + CSS Theme skinning - One of the things I love about Wordpress, additionally I could hope for the ability to cleanly throw my own PHP code right into the themes. MyBB had me frustrated with its truly awful database-driven theme system.
  3. I need to be able to hook in my own PHP code, the way I want to - Whether it be via plugins / modules that match the CMS, or flat out hard-code where I want to put it. Getting the job done is absolutely paramount, so I don't want to wrestle with the CMS, I want it to step aside or embrace as I need it to.

It goes without saying that I needed something open-source, I'm simply not interested in proprietary software when it's something I intend to extend / kludge with my own hackneyed code.

The short answer is: I've settled on Drupal.

I'm pretty happy with it so far and I think my relationship with this CMS will be a long one. I've committed myself to it now and the rest is about squishing whatever square bits into round holes to get it where I want it to be. It's not perfect, but as I said, I haven't been expecting perfection and most of the other CMSs I've tried have been a far cry short on the few main features I really need to build my foundation on.

Now I need to dig in and get some things done.

Syndicate content