Joomla vs Drupal
Which CMS? It's up there with which operating system and which religion! And I wouldn't be a real web developer if I didn't have anything to say about these two popular but quite different content management systems.
I have spent a decent amount of time using both systems and have built a few sites using them. I have also used other CMSs, namely Typo3 and PostNuke, but I won't talk about them here - suffice to say that I not a complete noob when it comes to these things.
Right, let me just go and say it. Drupal is the better CMS! Well, that was bold. I need to explain myself.
Let's start off talking about Joomla. It's a mature CMS that has been around a long time, and before then, it was Mambo, which itself had been around a while. It's had time to grow up and mature and has found itself to be one very popular CMS amongst many web people.
Joomla's Good Side
Joomla is easy for developers to set up and it has out of the box functionality and lots of it. It also has literally thousands of plugins so you can keep adding functionality until you are blue in the face.
Joomla seems to me to be geared towards people who are computer savvy, want to implement their own website but don't really want to have to delve into the code too much (and probably shouldn't). It offers all backend administrators an easy way to configure different aspects of the site and there is little need to go to the code.
Joomla's Dark Side
But while a computer savvy person will love the smorgersboard of wizzy buttons and community features, it fails, IMHO, on two major accounts.
- Joomla is not flexible enough.
- Joomla is too feature heavy weight.
This sounds like a contradiction as it's often the case that the more features that are present, the more flexible is the package. But in Joomla's case, the core is so difficult to change without a hack that to cope with any flexibility, the only choice is to add more functionality. What Joomla has become is a bloated solution that remains inflexible.
An example of Joomla's inflexibility are the way it categorises articles. You must specify a section and then a category with the section being the category's parent. That gives a depth of 2 to the taxonomy of the site regardless of whether you need less or more depth.
Another example of the way Joomla imposes its own rules is the user administration system. You cannot create new roles or access rules and the existing ones are inflexible. In short, you are unable to hide certain parts of the backend administration to certain groups which means you end up bewildering your clients, or worse, opening parts of the site up to people you don't want to!
Providing Simplicity and Flexibility
A senior programming ninja is going to be fine with whatever system so long as it is powerful and flexible. Your average computer user, however, is more interested in something that is easy to use.
So how can you deliver both great flexibility and absolute simplicity? The answer is to have a competent web programmer do the setting up of the CMS and then have the end user use it. Sound obvious? Well, it should be, but I fear Joomla has yet to understand this point. Joomla tries very hard to be all things for just the developer and probably succeeds in doing this, but as soon as a client who is less technically minded enters the scene we have a problem.
Drupal - a Professional Solution
Enter the arena Drupal. Drupal is quite different to other CMSs in that it does not attempt, out of the box, to provide you with the complete solution for your website. Instead, the emphasis is on providing you, the developer, with a framework that you can use to quickly put together almost any kind of website.
I need to define quickly in this case. Setting up a site in Drupal may take longer than setting one up in Joomla. However, unless your site is going to follow the architecture that Joomla prescribes, using Joomla will take significantly longer to mold into something your client wants. Unfortunately, to really get what you want you might have to hack the core code. In contrast, Drupal has plenty of hooks into the core code that allows you modify its default behaviour without the need to hack.
If you are not familiar with either CMS then let me explain this point further. Drupal is more like a programming framework or language, while Joomla is like a program. Joomla is a good CMS if you are just starting out backend developing and your websites are not very ambitious. But after some time you will find it limiting and you will want something that is more general purpose.
To be honest, I did struggle with Drupal at the beginning. I was so used to a CMS providing an immediate solution that I was frustrated that after the default installation, I had to do some work even to get a menu up with links to my content. But because Drupal doesn't give you this basic functionality at the start, it encourages you to really think about the navigation and usability of the site.
Take this site, for example which is built using Drupal. Once I had come up with the design it only took me a few hours to set up. Note that I came up with the design, usability and navigation before I set up Drupal. When I've worked with Joomla it has been the other way round, firstly setting up the CMS and then putting in a design to fit the navigation.
Fitting a CMS around a website's design sounds like a far more client orientated way of working rather than the converse. Using Drupal gives me the freedom to build whatever kind of site I like.
I think that I have covered why Joomla isn't very flexible. For very similar reasons, it's also why Joomla isn't very easy to use. Most websites won't fit the schema of Joomla so the backend will often be a fight between the structure of Joomla versus the structure of the website's front end. Poor old Joomla. It tries so hard to meet people's needs, but because is prescribes the architecture of the site then the backend administration also often doesn't perfectly reflect the organisation of content of a particular website.
The only way to provide the best backend administration is to create a custom one for the user. This is another area where Drupal shines because it provides the tools a developer needs to construct a custom backend easily.
What this means is that it takes only a little effort to provide a custom backend interface that suits your clients' needs. This is absolutely essential as not only does it mean that your client has more reason to update their website but it also reduces the amount of time you as a developer need to spend training the client to use the system or helping them with difficulties.
In this article I have purposely steered clear of comparing the features that Joomla and Drupal offer. Other websites have covered these aspects far better than I could.
Although I have put down Joomla, it's a good CMS to start with if you are new to the field. If you want to set up your own CMS with the least hassle and are not too worried about a custom architecture then Joomla is not a bad choice. However, there are plenty other CMSs to choose from instead if you don't need all that functionality.
If you are serious about your website and don't want to be held back then you cannot go wrong with Drupal. It has a steeper learning curve and will no doubt frustrate you at the start but in the end you will realise its potential for all sites from the simplest right up to huge community driven Web 2.0 sites.