Rather predictably I’m a massive fan of Drupal, but in this article I’m going to explain why Drupal is the only choice for me.
Overview of CMS options
So what other Opensource CMSs are there besides Drupal:
Drupal vs Joomla
I started out with Joomla because at first look Drupal is scary and Joomla has nice shiny buttons and looks easier out the box.
But from a developers point of view, you’ll soon find (as I did) that Joomla is quite rigid and isn’t very easy to build on. The plugins just don’t interact well with the Joomla core unlike Drupal does with its core. This combined with the lack of clean URLs as standard turned my attention to Drupal and it’s awesome hook system.
Don’t get me wrong though, Joomla is a really good CMS and for alot of people it’s absolutely perfect. It has all the standard CMS features and an integrated WYSIWYG editor which works great for images and text content, something Drupal really needs as standard! However, there is no support for clearn URLs “out the box” and it’s a pretty hefty bunch of files at 2MB.
Drupal vs PHP-Nuke
I have to admit I only briefly used PHP-Nuke and it was a while back now, so please feel free to correct me here.
My observations are PHP-Nuke is fairly easy to setup but it’s not built for expansion like Drupal, you can add modules but they act almost separately to the core files of which there are many.
I never experienced it but if you search the net there are alot of posts about PHP-Nuke being insecure, but personally I don’t have any experience of it to back this up!
PHP-Nuke however has paved the way for other CMSs to evolve. Both XOOP and DragonflyCMS I believe are based on PHP-Nuke.
Drupal vs WordPress
Yeh I know WordPress isn’t really a CMS but it’s fairly common to hear people trying to compare them. The truth is you can’t compare them. Drupal is a full fledge expandable CMS framework and WordPress is the king of blogging tools.
Drupal can do blogging but if you want a specialised and well-oiled blogging system and nothing else then you should definitely check WordPress out.
I definitely plan to use WordPress more in the future!
Visit WordPress.com to set up a free hosted blog and try out WordPress.
Drupal vs Build from scratch
Drupal can be tricky and scary when you first install it and before you know about the “hook”, node and theme systems it can look like it’s quite rigid. This can make some users want to just build a site from scratch without Drupal.
This is an estimate but I believe now I’m comfortable with Drupal that I can develop a Drupal site 50-60% quicker (depending on complexity) than building a site from scratch.
The 2000 plus Drupal modules available often means that the functionality you are after is already available and you just need to install a module.
Just take a look at the features available in Drupal “out the box” (from a fresh installation) and you can see it would take you a long long time to replicate them from scratch.
So why choose Drupal?
From a enduser Point of View
Drupal might not come with the nice graphical buttons like some CMSs do but if you look a little closer you’ll soon realise it’s full of great features.
Here are the features that really stand out for me:
Taxonomy System (categorisation)
Drupal taxonomy system (used for categorising content) is very sophicated, flexibile and allows cross categorisation and free tagging, which is rare in a CMS.
Taxonomy can create the backbone for any Drupal site.
The module system (plugins system)
Modules are add-on bits of PHP code and unlike alot of CMSs Drupal is built to be expanded and these modules intergrate perfectly with Drupals’ core via the “hook” system.
Find out more about Drupals’ hook system.
As I’ve already mentioned, Drupal has over 2000 add-on modules and this allows you to easily and quickly expand your Drupal site.
Modules can add functionality ranging from admin menus to dynamic image resizing (imagecache) to content display (CCK/views) to performance improvements (blockcache) and more.
Check out the Drupal module repository for more.
Search Engine Friendly
Drupal is search engine friendly straight “out of the box”.
Clean URLs (urls like articles/how-to-drupal instead of news?nid=32798234) and clean standard compliant HTML markup in the core themes are installed are standard. There are plenty for SEO (Search Engine Optimisation) friendly contrib modules available to download.
Node System / CCK / Views
Content in Drupal is know as “nodes” and the node system in Drupal is well established and easily expanded (adding new fields and content types) by using the Content Construction Kit (CCK) module(s).
For each item of content on your site you create a new content or node type, although some modules have premade content types (ie. forum or page nodes).
For example, say you want to create a news system you would use CCK to create a new content type called “news” and then you can add any fields (Drupal by default creates a title and body field for each content types) you like to that node type like “news photo” or “external links”.
The node system can be the backbone to any Drupal site (all content on DrupalSN is create this way) and you can also use the Drupal views module to display lists or “views” of content (ie. the DrupalSN tutorials list).
Find out more about Drupal content types on Drupal.org.
I took this bit from a previous tutorial, so I don’t think you’re reading the same tutorial again.
Drupal Access Control System
The Drupal access control system is absolutely brilliant, allowing you full control over user access permission by creating roles (groups of users) and assigning what they can and can’t do.
This works well for membership and community sites as you can have many different roles (admins, endusers and moderators for example) all doing different things on a site.
The access control system like the rest of Drupal is easily expandable in your own modules.
The Drupal Community
The Drupal community at Drupal.org and on various other Drupal sites including DrupalSN is helpful and very active. New modules, themes and core functionality are constantly being developed and refined, so don’t expect the Drupal project to go “stale” any time soon!
The Drupal project is progressive and with every Drupal release it’s improving and listening to the community because the members of the community are also the ones who are developing Drupal!
From a Developers point of view
The way you can develop with Drupal for me is what makes it stand out from the crowded opensource CMS world.
I tend to see Drupal more as a framework to build on rather than just a CMS.
Drupals’ Hook System
Drupals’ “hook” system which I’ve already mentioned allows you to easily “hook” in new modules and functionality to Drupals’ core functionality.
The “hook” system works by sending information on actions that happen within Drupal to other modules allowing those modules to perform any actions they like.
An example would be when a new content item (or node as they are know in Drupal) is inserted. Drupals’ hook system is invoked and information about the newly inserted node is sent out to all enabled modules allowing them to for example see if a similar node already exists and then send an email to the author of the new node telling them a similar node already exists.
The “hook” system is vast and used throughout the Drupal system, allowing you to react when nodes are added/edited/viewed, users are added/edited/deleted/viewed, links are rendered, comments are added/edited/deleted/viewed and more.
See a full list of Drupal “hooks”.
The Filter System
The filter system in Drupal allows you to decide as a site admin what content text should be allowed and what shouldn’t. You can for example filter out all HTML from nodes for annonymous users but allow admin users to use full HTML. This can be very useful and help keep your site secure.
There are plenty of filter modules already available and it’s fairly easy to build your own using the “hook_filter” hook.
jQuery (Javascript library) in Drupals’ core
I’m by no means a Javascript expert but jQuery makes me feel like I am! It’s that simple to use, oh it’s lighweight too!
jQuery lets you write half the code and create the same functionality as standard Javascript.
The syntax is short and logical, take this piece of code that hides a div with the class “hide-me”:
$(document).ready(function(){
$(‘div.hide-me’).hide();
});
Also like Drupal, jQuery is very expandable and felxible and offers a wealth of plugins to extend core functionality. It was not a massive surprise to see jQuery added to the Drupal core as of Drupal 5, as in my view Drupal and jQuery go hand in hand.
Some of you may have noticed, the jQuery website runs on Drupal, more proof that they are “made for eachother”!
Check out a full list of jQuery plugins.
The Drupal theme layer
The Drupal theme layer like the “hook” system is absolutely fantastic from a developers point of view as it allows you to alter HTML output throughout a Drupal site without having to touch Drupals’ core files.
Throughout the Drupal system Drupal modules make calls to “theme” functions which take a particular piece of data and outputs it as HTML.
It’s these “theme” function in Drupal that can be overriden by your theme so you have the ability to override the way a module outputs HTML without needing to touch the core Drupal files.
Find out more about theme function overriding.
Security
Nothing is 100% hack proof, but If you follow the Drupal guidelines, you can be confident your site is safe from hackers.
Here is a great resource on hack proofing your Drupal site from Commonplaces.com. If you are serious about developing with Drupal read this!!
As well as resources like the above, security releases and updates are regularly release from Drupal.org. Visit http://drupal.org/security to sign up for security released annoucements or install the update_status module to stay up-to-date.
Where Drupal can improve
Like any system there are always areas that could be improved. Here are some areas I think Drupal needs to improve on:
Performance
“With great power comes…..eh…the need for greater resource!?!” or something like that.
All the flexibility and power to expand that Drupal offers can come at the cost of performance, especially if you are on shared hosting. The more modules you add to your site the more resource that is required from your server and inturn this can slow down your site.
Every time a page is loaded in Drupal all the enabled modules are included even if they serve no function within that page load, this is to allow the “hook” system to work. This can mean a bunch of unneeded processes happening which obviously take up resource on your server.
In an ideal world it would be great to only include the modules that are needed per page, but then you’d loose the power of the “hook” system, so I guess you can’t have it both ways.
All that said performance has improved greatly with each Drupal release, Drupal 6 saw an improved menu system and the inclusion of the blockcache and JS aggregation modules.
Rich Text Editor in Drupals’ core
There are many Third Party Rich Text Editors (WYSIWYG editors) available as add-on modules but I think Drupal really needs a native and flexible Rich Text Editor that can handle imagery as standard in the core.
User friendliness
A slightly more approachable and user friendly admin interface would also be great.
Better Documentation
Most of the time documentation is available but is hard to track down, so central documentation are that is easy to search would be a great addition.
That said the Drupal Handbooks and Drupal API site are doing a great job, they’re just tricky to find for some users who don’t yet know the Drupal terminology.
Things to consider if you choose Drupal
Perfomance and scalability
Think I cover this above, but keep an eye on how many modules you add to your Drupal site, as more modules can mean slower performance.
Drupal is used by big companies!
Yes, not just hobbyists use Drupal, big companies like Sony, Sanyo, Oxfam, The NHL, The French Government, Disney, The United Nations and more use Drupal, proof it can be scaled and used on high traffic sites.
Acquia
Acquia is a commercial open source software company providing products, services, and technical support for the open source Drupal social publishing system.
In short it’s a maintain version of Drupal 6 with a brunch of useful modules and configurations already setup.
It’s definitely something to considering if you want to use Drupal for a large site.
Find out more about Acquia.
External resources
Drupal and Joomla comparison
Drupal, Joomla and WordPress comparison
10 SEO reasons to use Drupal
Another Drupal vs Joomla comparison
IBM looks at the Drupal theme layer
Drupal vs Joomla – performance comparison
Drupal vs Joomla – popularity
Drupal vs the rest
Although admittedly the Drupal learn curve can be tricky it made me feel like I could use it to build any type of site (social network, blog, ecommerce, anything) I wanted because it’s built with expansion and flexible in mind.
With Drupal, you are not set limitation by Drupal, time becomes your only constraint.
Hopefully this article will have helped you make your decision on using Drupal or not. Comments and corrections are welcome below.