Why to Drop your Custom CMS for Drupal

A little background.

When I started as a PHP Developer, I took a look at a bunch of different content management systems and frameworks, both open source and licensed solutions. I found that most of them seemed either overly complex or to difficult to customize. So when my employer asked me to write a proprietary in-house CMS, I jumped at the chance. It wasn't too long, and I had created a CMS that had just the features our clients wanted and a simple to use interface.

So, what could go wrong?

As you add clients, you find that many of them want to make customizations to things you've never thought they would want to customize. Maybe they want an ecommerce store without any prices, or they want a cart, but they have some products that don't have prices and those require a custom quote, but others they want customers to buy online. Whatever the case, no matter how well you try to anticipate all the customizations, somebody will come up with something you hadn't thought of.

As this happens over time, especially since you are on a smaller team, you start making quick fixes for the sake of time. This begins to make your CMS more complex. With lots of different features and configuration options, it is more prone to bugs and hard to follow legacy code.

First glance at Drupal

At first glance, to many developers beginning to use Drupal, including myself, Drupal's structure can seem overly complex for something that on the front-end appears really simple. Without picking up a Drupal book and reading the documentation, it can be difficult to navigate, but once you understand the concepts of the module and hook system, the possibilities are endless.

What Drupal Provides

The post on the Top 5 Reasons to Choose Drupal as your CMS summarizes this pretty well, but to touch specifically on the advantages over a custom solution:

  • Rich feature set

    Out of the box Drupal provides the structure for very advanced things that you probably wouldn't have the time to build into your CMS originally. In particular, caching, revision support, and multi-language support are what distinguish a great CMS from an OK one. Drupal handles these things so that they function globally and can be customized to meet specific needs easily.

  • Completely customizable

    Hooks allow custom modules to be created to customize any aspect of the website, adding features, content types, customizing the display and so much more. This allows you to easily meet specific client needs without having to hack the core code.

  • The community

    The community provides quality assurance, contributed modules, documentation, bug fixes and advice. All of these things you would have to do yourself, and no matter how many hours you put into it, you could never keep up with the thousands of Drupal developers, testers and users.

Conclusion

Even if all the great stuff Drupal provides doesn't convince you, this fact should: for whatever reason, one day the original author of your proprietary system will not be there. Unless you have a good team with excellent knowledge of the entire system and well documented code, your system will begin to spiral out of control even faster. So, no matter your reasons for wanting to create (or keep) your custom in-house CMS, it is worth the time to read and try Drupal. The couple weeks it may take to read the books and get up to speed will save you endless hours later.

Filed under:

Comments

In my experience for a large custom website with tons of traffic it often makes sense to roll your own, because of maintenance, design, scalability, and features. Drupal can get in the way of any or all of these, at times with problems due entirely to the way it's designed. For many other things a CMS makes sense -- however, there are other more simple options for certain types of sites.

I've always wanted to learn more about Drupal and this is great motivation for me to dive in. I've historically been more of a WordPress guy, but I'm excited to see what Drupal can do. Thanks for a sweet post!

If I choose the way you choose two years ago, I could not create my own cms and export it to overseas.

Before I create my own cms, I have done lots of websites with wordpress. But at some point you will know, you need something better. Wordpress was good for me to understand what is a CMS look like. The most complex website I created with wordpress was a website which shows different content for different countries according to IP address.

-The custom cms I create can manages 50s websites from one control panel.

-It has crawler based(can index multiple websites),custom ranking system, fast in site Japanese search engine (it supports multiple languages). This is a know-how. I'm not Japanese.

It has 3 default front versions 1) Japanese mobile phones , 2) Smartphones 3) PCs and if you want you may add tablet version for ipad or other tablets. It also has multiple language support. (Japanese phone support is also a know-how, drupal has a module but a module is not enough for large scale Japanese mobile site)

I think it is better to use drupal for websites which needs some customizations. And you will know when you need to create your own cms. In my opinion large scale projects needs something custom but that does not mean you can not make large scale project with drupal. You can make large scale project with drupal, but when the new major version comes (especially with major changes like drupal 6 to 7), you will tear.

I've been running into the same problem of customization with my clients and they usually want some sort of feature that they don't have the money to pay for it to be custom built. It's unfortunate that WP is the more popular CMS between the two, and therefore many of the talented developers build their plugins specifically (and only) for WP. Most of my clients want me to augment their payment processing capabilities to allow for better analytics, which can be easily done with a WP plugin, but I have yet to find or figure out how to do that with Drupal...

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <cpp>, <java>, <php>. The supported tag styles are: <foo>, [foo].
  • Web page addresses and email addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Ready for transformation?