Drupal customization vs contributed modules

10.25.10   Andres Torres

Recently, I've been working on a big Drupal project which was so demanding in terms of performance,stability and of course “functionality”.

In terms of functionality, Drupal itself, beyond being a Content Management System, it comes to the web development field as a Content Management Framework, meaning that it offers a lot of functionalities grouped by “contributed modules”but it also has the ability, as a CMF, to let a developer “customize”a default Drupal behavior since it relies on a strong MVC structure,it has a solid persistence layer, etc.

So, what's the point with all of these?Let's see. When you are running in a Drupal project and you already know the requirements, the next step is to look at Drupal contributed modules section and try to find all the modules that can or hopefully can, help you during development. This is amazing, because usually you are able to find everything on drupal.org, saving you time and resources in terms of development or giving you more that you really need, decreasing performance of your site; but this is still Drupal default behavior. 

I mean:

  • contributed modules offer defaults outputs (theming) and functionalities, but what if your web designer comes up with an amazing design but it doesn't fit with Drupal's default behavior ? Here's where the word “customization” comes to live. In Drupal everything is customizable!

  • By creating custom modules, Drupal gives a developer the facility to achieve with those amazing designs that we as developers usually get, but this approach could delay projects in terms of time and you probably will need more resources as well but you can squeeze Drupal and get the best of it, using exactly what you need.

Let's say for example that you need to develop some sort of information blocks and place them on you homepage; you can achieve this by using a contributed module called Panels which is a great module. But if you need to interact with these blocks by making them draggable for instance, Panels itself is a module that creates a lot of HTML code for its outputs but it helps a lot in terms of configuration; a lot of HTML code plus javascript code and all the PHP code that Panels handles is not a real need when you can just create a little customization and use Drupal's defaults, like using the views module in order to provide the solution to this problem.

I think, if a site is very demanding on its User Interface/Performance you shouldn't sacrifice these interfaces by using Drupal's default behavior and outputs or your full Drupal installation with a lot of contributed modules to fit a requirement. Instead, I prefer to build custom solutions, specific for the project your are working on, may be based or not on some contributed modules. Anyways for small sites I strongly recommend to use all contributed modules.

In conclusion: Professional sites need professional customization.


Download the 
Performance Tuning Drupal White Paper.