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.


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:

Ready to get started?