Drupal follow-up: why I still think Drupal or any generic CMS is dangerous for many startups.

My previous post about Drupal generated a lot of discussion, and it’s Sunday eve with not much else to do so let me clarify why I still think that using Drupal can be dangerous.

There are a few arguments, and I’ll try to be more practical in this case.

First, let’s look at the node system. I start my startup with Drupal, basic content items are nodes. All’s good. I get lots of functionality for free.

Next, I want to do something different with nodes, like, order them in a different way or something. That requires a database change and some extra indexes on the nodes table, say. I can hack Drupal to do this, but now I’ve forked Drupal and my upgrade path.

Forking is almost inevitable. (ps: note that I’m not talking about some plain content site, but a startup that’ll likely require some pretty specific functionality.)

That means no more security fixes. No more upgrading from Drupal, unless I hack the new version too. I’ve lost a main reason to continue to use Drupal - all I’ve gained now is some initial work at the start of the project.

Next, my startup gets more popular and I need to optimize for performance and scalability. Drupal provides a few built-in optimization methods, I try them, they’re not enough perhaps - especially because I now have a hacked Drupal.

So I need to start changing the innards of Drupal. Perhaps the node table needs to be federated. Perhaps the user table needs to be federated. Who knows these things in advance. Drupal does a LOT of stuff, and I probably don’t understand it’s innards as well as I would understand a system that only does what I need that I built myself. I’m in trouble now.

That’s what happens to startups, and that’s why I still consider Drupal dangerous for many startups. I’ve seen it happen again and again.

It’s not the fault of Drupal. It’s the fault of the expectations that it sets (”it’ll be easy”). You really are better off building something lean from scratch, as far as I can tell. Am I wrong?

PS: to be clear, if you are creating content sites with a specific set of functionality (forums, user profiles, …), and if you’re not looking to create the next myspace, but instead are looking for something fairly standard, Drupal IS a good choice. It’s flexible enough, fairly scalable and easy to customize. There are a few companies that are doing exactly that (customizing Drupal for clients who needs those kinds of websites) and are doing a great job.

5 Responses to “Drupal follow-up: why I still think Drupal or any generic CMS is dangerous for many startups.”

  1. libsys Says:

    “Next, I want to do something different with nodes, like, order them in a different way or something. That requires a database change and some extra indexes on the nodes table, say. I can hack Drupal to do this, but now I’ve forked Drupal and my upgrade path.”

    No, your just wrong. Drupal *excels* at this kind of task; it’s a key reason developers often choose it for their projects. In fact there is an entire sql generating UI that allows users to flexibly generate output in multiple formats, multiple layouts, etc, (views). This is a common technique in CMS applications.

    The problem isn’t that Drupal forces to you to create forked installations. If you are forking your installation, you are almost 100% of the time doing it wrong. The problem, if you wanted to make the case, is that there is a steep learning curve with regards to that API. But, having worked with “enterprise” CMS systems, this is generally the case with a sufficiently generic system.

    Of course, there are *lots* of things that Drupal can’t do or would be ill suited to achieve. It’s a case of the right tool for the right job. But to say that you have to fork Drupal to manipulate content is a sadly misinformed understanding of the system. With views and cck alone, you can do a great deal of content manipulation without writing a single line of code. If you code, all the more so…

  2. Anonymous Says:

    You say:

    “Next, I want to do something different with nodes, like, order them in a different way or something. That requires a database change and some extra indexes on the nodes table, say. I can hack Drupal to do this, but now I’ve forked Drupal and my upgrade path.”

    Which is not correct, IMO. This scenario would be trivial to accomplish in Drupal without resorting to hacking, forking or coding at all, in fact (CCK + Views). It would also qualify as “fairly standard” bit of functionality, which is what you say Drupal does well: “It’s flexible enough, fairly scalable and easy to customize.” So, your addendum contradicts your example. So do the sites of the companies to which you refer - they are building plenty of sites with “pretty specific functionality.”

    You seem to put all forms of customization into the “hack” and/or “fork” category. It’s not quite so binary, I think. The documented API allows developers to tap into core features, which can generally be put together in ways that create new and interesting functionalities. The API is patched and updated, and these benefits flow into the new features that you’ve built (module system).

    Finally, the exploration, in general, of “framework” vs “my own ground-up code” is not really adequate. Maybe you built your code to be optimized, maybe you didn’t. Maybe you need to write it all over b/c you painted yourself into a corner without a large community through which to vet your idiosyncratic code.

  3. Thor Says:

    “… are looking for something fairly standard, Drupal IS a good choice”.

    That would be me, the only uniqueness I’m looking for is in the appearance and content of some sites I’ve set my mind on developing.

    Does Drupal handle traffic spikes well, can I cashe it so the server load will be same or similar to loading static pages?

    How hard/easy is it to customize Drupal sites look, compared to other sites that use cms?

  4. Robert de Bock Says:

    “I can hack Drupal to do this, but now I’ve forked Drupal and my upgrade path.”

    You are right, either:
    - Don’t hack Drupal.
    - Ask to add that specific functionality.
    - Accept the limitations of applications like Drupal.

    If your website is really that customised, then not any CMS will work for you.

    Nice article though, you got me interested!

  5. Naruto Episodes Says:

    Nice article. I have tried Drupal a few times in the past and they have never really worked out for me. I just don’t like it. My first website, I made it from scratch. I made the pictures in Photoshop and coded it in HTML. But from a long time of those custom templates, I found out about Wordpress and it helps me out a lot more than anything I could of imagined! I love it and I will never switch. :P

Leave a Reply