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.

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

  1. “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. 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. “… 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. “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. 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

  6. The first rule of Drupal that you must obey if you want to live in Drupal Nirvana is — ‘”Don’t hack core” — You may think that it is impossible not to hack core. I once thought this way too. Then I learned how to use Drupal. There is a plethora of documentation and other information at Drupal.org that will help in your development efforts.

    You mentioned that you had to hack core to display your nodes in different orders… you can use http://drupal.org/project/views for that.

    The beauty of Drupal is that most of the stuff that you want has already been developed and you can just drop it onto your server and go. Drupal’s modular architecture encourages a fairly high degree of standardization among contributed modules.

    At any rate the essence of what I wanted to say is this: If you find yourself hacking core, then you probably don’t know what you are doing… My brother and I have not touched core for any projects using Drupal later than 4.7 (At that time we did not know what we were doing either)…

    I really think that anyone wanting to just explore a free and fairly easy to use CMS should look into Drupal.

    Drupal’s power and flexibility are not for the casual web publisher. These people will be comfortable with the ease that WordPress, Blogger, Movable Type, etc. have to offer. A person wanting a blog would only be interested in using Drupal if they would also like to say: sell subscriptions, build their own content types, define their own blocks, regions, menus, and so on. Drupal gives you the ability to do pretty much whatever you want.

    Regards, Derek

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s