2008-07-02

CMS battle: Drupal vs Joomla vs Custom Programming

In modern Content Management System (CMS) world there are two major figures - Joomla (descendant of Mambo CMS ) and Drupal. They both are open source and have large comunities with enormous amounts of extensions and themes. It's hard to choose which one to use without trying them out. As usually, there are more options - home grown custom programming or even building your own CMS (which I was once stupid enough to do). Programming from scratch is always fun and beneficial for your skills, however, if you need things up and running in no time or you don't do (or don't want to do) any programming, using a CMS is the way to go.

If you are digging for CMS comparisons and trying to decide which one is best for you, here is a quick and dirty answer - go for Drupal, you won't regret it.

Why?

After test-driving them both I've came to these conclusions:

  • Joomla is bloated, Drupal is minimal
  • Drupal is easy to use and intuitive, Joomla is confusing

That was more than enough for a minimalist like me.

Here are some statistics from CMS Matrix for a more detailed comparison. It shows that Drupal is extremely modular and Joomla has a heavy core, thus a terrible architecture. That means Joomla is hard to extend and messy under the hood. Drupal, on the other hand, looks beautiful.


Product Drupal 6.2 Joomla! 1.5.3
Last Updated 4/10/2008 5/31/2008
System Requirements Drupal Joomla!
Application Server PHP 4.3.5+
Approximate Cost Free Free
Database MySQL, Postgres MySQL
License GNU GPL GNU/GPL v2
Operating System Any Any
Programming Language PHP PHP
Root Access No No
Shell Access No No
Web Server Apache, IIS Apache
Security Drupal Joomla!
Audit Trail Yes No
Captcha Free Add On Free Add On
Content Approval Yes Yes
Yes Yes
Granular Privileges Yes No
Kerberos Authentication No No
LDAP Authentication Free Add On Yes
Yes Yes
NIS Authentication No No
NTLM Authentication Free Add On No
Pluggable Authentication Yes Yes
Problem Notification No No
Sandbox No No
Session Management Yes Yes
SMB Authentication No No
SSL Compatible Yes Yes
SSL Logins No Yes
SSL Pages No Yes
Versioning Yes No
Support Drupal Joomla!
Certification Program No No
Code Skeletons Yes No
Commercial Manuals Yes Yes
Commercial Support Yes Yes
Commercial Training Yes Yes
Developer Community Yes Yes
Online Help Yes Yes
Pluggable API Yes Yes
Professional Hosting Yes Yes
Professional Services Yes Yes
Public Forum Yes Yes
Public Mailing List Yes No
Test Framework Free Add On Yes
Third-Party Developers Yes Yes
Users Conference Yes Yes
Ease of Use Drupal Joomla!
Drag-N-Drop Content Free Add On No
Free Add On Free Add On
Friendly URLs Yes Yes
Image Resizing Free Add On Yes
Macro Language Free Add On Yes
Mass Upload Free Add On No
Prototyping Limited Yes
Server Page Language Yes Yes
Site Setup Wizard Limited No
Spell Checker Free Add On No
Style Wizard Limited No
Subscriptions Free Add On No
Template Language Limited Yes
UI Levels No Yes
Undo Limited No
WYSIWYG Editor Free Add On Yes
Zip Archives No No
Performance Drupal Joomla!
Advanced Caching Yes Yes
Database Replication Limited No
Load Balancing Yes Yes
Page Caching Yes Yes
Static Content Export No No
Management Drupal Joomla!
Advertising Management Free Add On Yes
Asset Management Yes Yes
Clipboard No No
Content Scheduling Free Add On Yes
Content Staging Free Add On No
Inline Administration Yes Yes
Online Administration Yes Yes
Package Deployment No No
Sub-sites / Roots Yes Yes
Themes / Skins Yes Yes
Trash No Yes
Web Statistics Yes Yes
Web-based Style/Template Management Yes Yes
Web-based Translation Management Yes Free Add On
Workflow Engine Limited No
Interoperability Drupal Joomla!
Content Syndication (RSS) Yes Yes
FTP Support Limited Yes
iCal Free Add On No
UTF-8 Support Yes Yes
WAI Compliant Limited No
WebDAV Support No No
XHTML Compliant Yes No
Flexibility Drupal Joomla!
CGI-mode Support Yes Yes
Content Reuse Limited Yes
Extensible User Profiles Yes Yes
Interface Localization Yes Yes
Yes Yes
Multi-lingual Content Yes Free Add On
Multi-lingual Content Integration Free Add On Free Add On
Multi-Site Deployment Yes Free Add On
URL Rewriting Yes Yes
Built-in Applications Drupal Joomla!
Blog Yes Yes
Chat Free Add On Free Add On
Classifieds Free Add On Free Add On
Contact Management Free Add On Yes
Data Entry Free Add On Free Add On
Database Reports No Free Add On
Discussion / Forum Yes Free Add On
Document Management Limited Free Add On
Events Calendar Free Add On Free Add On
Events Management Free Add On Free Add On
Expense Reports No Free Add On
FAQ Management Yes Yes
File Distribution Free Add On Free Add On
Graphs and Charts No Free Add On
Groupware Free Add On Free Add On
Guest Book Free Add On Free Add On
Help Desk / Bug Reporting Free Add On Free Add On
HTTP Proxy No No
In/Out Board No No
Job Postings Free Add On Free Add On
Free Add On Yes
Mail Form Free Add On Yes
Matrix No No
My Page / Dashboard Free Add On No
Free Add On Free Add On
Free Add On Free Add On
Polls Yes Yes
Product Management Free Add On Yes
Project Tracking Free Add On Free Add On
Search Engine Yes Yes
Site Map Free Add On Free Add On
Stock Quotes Free Add On No
Surveys Free Add On Free Add On
Syndicated Content (RSS) Yes Yes
Tests / Quizzes Free Add On Free Add On
Time Tracking Free Add On No
User Contributions Yes Yes
Weather Free Add On No
Web Services Front End Limited Yes
Wiki Free Add On Free Add On
Commerce Drupal Joomla!
Affiliate Tracking Free Add On Free Add On
Inventory Management Free Add On Free Add On
Pluggable Payments Free Add On Free Add On
Pluggable Shipping Free Add On Free Add On
Pluggable Tax Free Add On Free Add On
Point of Sale No Free Add On
Shopping Cart Free Add On Free Add On
Subscriptions Free Add On Free Add On
Wish Lists Free Add On Free Add On

Hope this helps to make a choice.

18 comments:

Anonymous said...

No offense, but I've regretted Drupal every time. It's great for simple designs and simple websites, but as soon as things get a little bit custom, all heck breaks loose.

Also, if you look at the code behind the scenes, it is a nightmare of spaghetti. When developing with modules, turn on the query monitor and you'll see hundreds or even thousands of queries where a custom app would use less than ten.

Anonymous said...

I suppose I should have said that Joomla! isn't the answer...

Tomas Varaneckas said...

Thousands of queries may originate from poorly written modules, can't blame Drupal for that. And even if code is a spaghetti mess (which is quite a usual case with PHP...), main idea of CMS is that you don't get down to the internal code at all... Anyway, I haven't done anything big with CMSes yet, I'd most likely go for custom programming for big projects.

Anonymous said...

Why not use something like Silverstripe, which in itself is an actual framework. Customize the CMS yourself, plus build in additional functionality. I've never used Joomla, but my 1 experience with Drupal was enough to know never to use either one of them again.

Chuck said...

I've been using MODx for the last 3 years and could not go back to joomla. MODx is one amazing system (with a learning curve).

The problem with the module spaghetti code is the more you try to customize it- the more painful it gets: for upgrading, customizing output, and adding new options for input).

But MODx outputs no default HTML. You have complete control.

Now there are some things MODx doesnt have yet like versioning. But for most sites, I think it's a charm.

Joomla and Drupal are both great for basic or niche (community for Drupal) sites. But if you want an easy to maintain CMS with kick-a$$ custom design, MODx is for you.

Chuck

Pedro said...

Just my two cents

I think Drupal is now GPL v2
(http://drupal.org/node/272652)

Drupal can run on a LightHTTP webserver (ie http://realize.be/drupal-lighttpd-clean-urls-made-easy)

Btw, great comparison chart, congrats!!!

homer said...

What about Typo3? They have hundreds of extensions, you can get commercial support if you want to and they have a clean design. Check out the upcoming Version5! Their mission is to build the best open source cms worldwide ;) and I think they are on the right track ... silverstripe also seems to be nice ...

Anonymous said...

"Joomla has a heavy core, thus a terrible architecture. That means Joomla is hard to extend and messy under the hood."

That's rather jumping to conclusions without backing it up, if you ask me. If you're talking about joomla 1.0.x, I agree, but Joomla 1.5 has a new object oriented framework, and is not messy at all. There are over 3000 extensions for Joomla, which proofs that it is in fact easy to extend.

What keeps surprising me about Drupal, is that they still stick to an outdated procedural programming style. PHP is moving more and more to OOP. Trying to force a programming style on a platform that's moving in a completely different direction is a weird choice to make.

jimmy said...

The winner: Expression Engine

joost said...

Iam currently using two frameworks: Drupal and the Zend Framework. The first of course for simple to medium sites and the later for custom applications.

There are two things that annoy me about drupal:
- The documentation, their writers assume to much of the reader. Its basically a RTFM manual.
- I find hooks very dirty. Iam a big supporter of OOP.

That said, the vast amount of plugable modules makes up for alot of its shortcomings.

Anonymous said...

I just opened Drupal's common.inc, 92 functions? I think one would expect a CMS framework to be OO these days. Im not trying to say that everything must be OO because it's cool etc but for the future growth and maintainability, it's necessary. And it does look bit like a spaghetti code. Another thing, why would you call a PHP file .inc?

Mavimo said...

Just some error, for Drupal:
o Graphs and Charts -> Free Addon
o SSL Logins -> Free Addon
o SSL Pages -> Free Addon

Bye

Anonymous said...

Drupal it's great with some modules: Content Contruction Kit + Views + Content Template. With these you get a platform to make whatever you want easily and with not so much programming. No similar extension for joomla (Free...)

Anonymous said...

You might want to Check on the biggest joomla product ever released... Its got pre-made joomla websites with all the components and modules already installed(such as community site,shopping site and many more,you can install like the standard joomla), joomla video tutorials, extensions , templates and lots more...
visit : http://readymadejoomla.com/product.htm

Alan Dove said...

I gather you didn't test drive these two systems long enough to really learn them, and to realize that some of the published specs on both of them are actually wrong. Having administered Drupal websites since version 4, and having tinkered with Joomla designs since 1.0, I'll add a few corrections.

First, you say "Joomla has a heavy core, thus a terrible architecture." This is a non sequitur. Drupal keeps its core light with lots of very strange hacks, making it extremely difficult to modify the source code if you ever need to (and yes, there are good reasons why you might).

Drupal also has the philosophy that it's "okay to break people's sites, but not their data." They're not kidding. Upgrading from 4.x to 5.x to 6.x, I've had my standards-compliant themes trashed every time. You can philosophize all you like about the architecture, but there's no denying that Drupal upgrades are a major PITA. Joomla takes the more responsible path of bending over backward to ensure backward-compatibility. That's one reason their code base is larger.

Joomla's architecture is well-documented, and built with the industry-standard Model-View-Controller design and extensive use of object-oriented constructs. However, honoring this structure sometimes makes components a bit slower, and you need to stay within the code's designed boundaries when modifying it. If you're a seat-of-the-pants programmer, you may find this annoying. I find it reassuring.

One very widely repeated claim is that Drupal is capable of multi-site installations "out of the box." Drupal is indeed designed to do this, but the feature is horribly buggy. I set up a multi-site configuration on one of my sites, and it was a nightmare. If you have a professional staff of full-time PHP coders and server admins at your disposal, the multi-site feature may be workable, but if you've got those resources, you could probably modify Joomla for a multi-site installation as well.

Next gripe: Drupal makes it hard to upload images. Seriously. Even in version 6.0, image upload requires substantial hacking. The modules that are supposed to provide this feature have also broken a few times, and each time it took the developers weeks or months to fix them. When every two-bit blogging application handles image uploads seamlessly, this omission from Drupal's core code is inexcusable.

Finally, Joomla wins hands-down for custom theme development. Drupal gushes hundreds of lines of idiosyncratic CSS from its core code, so every time you try to style some small annoyance in your layout, you find that the core is overriding you. This is appallingly bad design. Joomla theme overrides are trivial - they have a bit of a learning curve, yes, but once you pick up the logic you can make your theme do whatever you want.

Overall, I've come down on the side of Joomla, and am in the process of migrating one of my sites to it from Drupal. My personal site just moved from Drupal to Wordpress, and if you Google that comparison, you'll find there are legions of folks making similar migrations.

Charles Oertel said...

I've developed highly customized sites in both Joomla and Drupal. Drupal is more like a framework and is infinitely customizable without modifying the core code.

Joomla is not. At some point you have to make code changes, and when you try to upgrade you need to find those changes and re-apply them to the new version - an impossible task.

Anybody struggling with Drupal just hasn't grokked it yet. When you hit the brick wall in Joomla, switch to Drupal.

Anonymous said...

@Charles
You obviously haven't used Joomla recently. The 1.5 version has something called template overrides. This make it possible to infinitely customize the raw data output of the CMS anyway that you want. Upgrading does not touch these template overrides, nor your template.

Anonymous said...

Having used both recently: Winner => Drupal... it's a real open source community. For example,

Modules are free, Joomla community seems to want to make a buck. Can't even get developer copies with Joomla... can't test things out before you buy. Drupal, you just find what you want, plug it in, turn it on, and evaluate it against your needs.

Templates are free for the most part, though why anyone would use anything other than the Zen Template and code a complete custom design with it is beyond me.

There are tons of online tutorials, videos, examples and free code snippets... everyone wants to help in Drupal instead of trying to make a buck.

I found Joomla's 3-tiered content organization scheme (section/category/page) extremely limiting... and the fact that you can't set multiple categories to a content item kills it's usefulness as an advanced CMS for me.

Post a Comment