Thursday, September 23, 2010

Drupal makes it easy for developers. How easy?

This is a question that comes to the minds of people who are considering Drupal for developing their applications. Unfortunately, there is no single answer to this question. While it is possible to get a fully functional website up and running in less than an hour, certain websites can take several hundreds of hours to build. 

Before trying to answer the question, we need to first understand in what ways Drupal makes it easy to build websites. There are basically 4 ways in which Drupal does this:
  1. by providing a versatile content management framework to build content-based websites
  2. by providing a robust platform for building community and collaboration applications
  3. by providing a library of “contributed modules” which provide wide range of extended functionalities
  4. by providing a robust development framework to build complex web applications
The more you leverage these features, the easier it is to develop. How much you can leverage each of these depends on a number of parameters some of which can be very specific to the task on hand. 

Drupal as a Content Management System
If your requirement is to build content based websites such as corporate websites, newspaper websites, blogs etc. then, Drupal can save you enormous amount of development effort. It is actually possible to get a simple corporate website up and running in less than an hour. 

Drupal provides a number of features which, can be used to build most complex content based websites you can imagine. The effort required to achieve this are mainly in two areas:
  1. building the custom user interface– a process called “theming” 
  2. configuring various parameters to crate the content architecture, menu structure, content types etc.
If your site has sophisticated UI elements such as flash elements, ajax elements etc. and several content types where each need to be presented in different layouts then it can take hundreds of hours to build the site. Similarly, if you are not happy with Drupal’s standard publishing interface then it can be customized, requiring additional effort.


Drupal as a Community and Collaboration Platform

Drupal was originally conceived as a platform for collaboration. Therefore, it is inherently easy to build community portals in Drupal. Durpal’s node system provides sophisticated content creation and publishing mechanism with change logging which is ideal for building wiki pages. Drupal also provides modules for building discussion forums, user groups and social media networking functions. 

While many of the functions of the community applications are standard in nature, you will find that Drupal’s “community” modules need to be customized to suite your specific requirements. Many people use these modules as “platforms” and customize and extend them to build the application. This, depending on the extent of customization, can require considerable effort. For example, to build an application similar to Facebook, you will need to customize and stitch together a number of modules which will involve significant effort.


Drupal’s Contributed Modules

Drupal has several hundreds of modules contributed by the Drupal community and you are very likely to find modules for every requirement of yours. However, evaluating a module and using it can be a challenging task. This is where many people tend to get carried away and the experience and knowledge of an application architect is put to test.

Modules such as CCK, View, Organic Groups etc., are standard recommended modules of Drupal, and are built and maintained by high quality developers. These modules evolve along with Drupal. Therefore, when we say “contributed modules”, we are referring to the non-standard modules which are maintained by developers to meet certain requirements, mostly specific to the project for which they were originally created.

The 5 most important questions to ask while selecting a contributed module are:
  1. Is the module well maintained?
  2. How much of the requirements does it cover?
  3. What is the effort to customize / add / remove features?
  4. Does its design employ Drupal’s best practices for writing modules?
  5. Is the code well commented and easy to understand?
In an ideal situation you will have positive answers to all these questions. However, most of the time, the situation will be less than ideal. Moreover, there are other aspects like performance to consider if your application has to support heavy traffic. It takes an experienced application architect to weigh various pros and cones and come to a conclusion. The process of analyzing and selecting modules itself can be a time-consuming activity. 

I’ll be writing another article covering the module evolution process in detail.


Drupal as a Development Framework

If your application has very specific requirements that cannot be met by Drupal’s modules, you can still use Drupal as a Development framework. Although Drupal is popular as a CMS, its architecture allows it to be used for building applications which have got nothing to do with content management. (I admire Drupal for its architecture, which in simple terms, is object oriented thinking implemented using a procedural language! While the object oriented approach makes it elegant and versatile, use of PHP makes it popular.)

There are a number of reasons, most of which are technical, why you should use Drupal as a development framework. However, it is very important to understand that no platform can provide everything that you are looking for. There may still be certain things that the developers need to do to meet your specific requirements.

There are several features that can be used with minimum or no customization such as user management, authentication, menu system, cache management, site configuration system (to control various standard functions / parameters of a website) etc. Similarly, there are features which can be used as foundation to build the specific requirements on top of them. This includes the node system, CCK, views, forms API, access rights, notifications system, etc.

So, how easy?
As we have seen, any non-trivial web application that can be built using plain PHP and MySQL can be built much faster and better using Drupal. No matter how you make use of Drupal, it makes the development easy enough to justify its use!

Please leave your comments below. If you like this blog, please follow.

1 comment: