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.

25 comments:

  1. 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.

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

    ReplyDelete
  3. 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.

    ReplyDelete
  4. 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.

    ReplyDelete
  5. 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

    ReplyDelete
  6. 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!!!

    ReplyDelete
  7. 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 ...

    ReplyDelete
  8. "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.

    ReplyDelete
  9. The winner: Expression Engine

    ReplyDelete
  10. 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.

    ReplyDelete
  11. 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?

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

    Bye

    ReplyDelete
  13. 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...)

    ReplyDelete
  14. 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

    ReplyDelete
  15. 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.

    ReplyDelete
  16. 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.

    ReplyDelete
  17. @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.

    ReplyDelete
  18. 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.

    ReplyDelete
  19. The Drupal vs. Joomla arguments are tiresome because people keep arguing different perspectives with each person having widely varying requirements, expectations and assumptions ... none of them stated.

    So, the end result is usually that you've gained no information, but rather just heard a bunch of opinions that cancel one another out.

    I believe there are two camps of thought worth considering:

    The "quick solutions" camp: People who want to write as little code as possible and have very little budget and time. Generally these are personal sites, sites for tiny companies, etc.

    The "design to spec" camp: People who have a functional specification based upon user requirements, design requirements, and whose specs have had no consideration for "what is possible" but only "what is needed". Then, they spend whatever time and budget are necessary to get it. These are major government sites, sites by venture funded or entrepreneurial companies, etc.

    I have no experience with Joomla, and I would love to hear from people who do.

    But, I have lots of experience with Drupal.

    From my perspective, Drupal would be a loser in the "quick solutions" camp. It is hard to get point-and-click features that satisfy needs instantly without either customizing it, or lowering your expectations and accepting the often "nerdy" interfaces that Drupal provides out of the box. From what I have heard, Joomla does this better.

    But, I am in the "design to spec" camp. Usually sites I develop involve multiple people, designs and specs written without regard to platform choice, many programmers, thousands of hours and tens of thousands of lines of code. In this regard, I have found Drupal to be extraordinarily good at providing base features which are highly customizable at with a very fine level of granularity. So far, if you what "exactly what you want", then I have to say I am very happy with Drupal as a platform and it compares favorably with major and often expensive CMS platforms.

    It has problems. Performance is a challenge, and it is poorly optimized (despite the Drupal team's belief that they have highly optimized it). The flexibility and architectural model are so robust, however, that it is usually worth the effort to solve performance problems using clusters of servers using Varnish or some other reverse proxy, and there are some major projects underway to achieve this.

    Drupal is also spaghetti. I wish Drupal were a clean object-oriented system which used inheritance as the foundation of its customization. I sigh whenever I see the intricate ways Drupal attempts to solve customization problems and realize how a good OO model in a good language (php is awful) would solve so many problems. But, strangely enough, Drupal is one of the best damned pieces of spaghetti code I have every used, and I am often surprised at how well the customization features actually *work* considering that, for the most part, it is built using software development techniques that would feel at home in the 1960's but are archaic by today's standards.

    One thing that makes Drupal work so well is that the development group cares about the details of architecture. They care about code reuse, they care that everybody has a single, approved way of doing things. They are cautious about including new modules in the core, and before they do, they have to pass rigorous scrutiny by some very smart people. As a result, Drupal versions usually contain major and reelvant architectural enhancements, but contain few "visible feature" enhancements. For those of us who need the platform to be capable, Drupal keeps delivering, and we keep customizing and coping.

    I would be curious if anybody has experience using Joomla to develop a website to a functional spec for a major company and using a large team effort. Did it go well?

    ReplyDelete
  20. Hello there,

    Could you add the comparison table between them and Ruby on Rails?

    Thanks

    ReplyDelete
  21. Here's he real truth about the most overrated CMS DRUPAL.

    First I must be crazy I even picked Drupal.. LOL... It's ok but a huge trap and all the hype is crazy. The more you add to it the more goes wrong. Most of the contributed modules suck.. WTF.... Who's allowing these modules even to make it past CVS approval.


    Also Why would you keep changing the API do it right the first time then add to it?

    Seriously do not use Drupal if you plan on having a site with lots of features you will end up trashing it sooner or later I can guarantee that. I know I been working with Drupal for years now...

    If you want a small site that doesn't need a lot of features then you will be OK.

    ReplyDelete
  22. Before posting a comment, read this.

    Comments with spam (links to Joomla / Drupal / web development services) will be deleted and reported as spam!

    ReplyDelete
  23. Currently I have project written using the Joomla 1.5
    framework. And I was told that we might be migrating to Drupal.
    So I decided to find out some info on this issue.
    I've been using Joomla for 4 years already. Actually I started as
    a Components developer for Joomla. And have been writing components, modules and plug-ins for it starting from the version of 1.0.x up to 1.6.x
    And somewhere in between I decided to see the other world of software development and switched the company that was developing a social network system in a big team completely from scratch. That was made just to learn the real world OOP.

    So what I was doing is trying to find out what all this war is about with Drupal and Joomla and what kind of people are involved in it. As it is said "First defined the problem and then find the solution".

    People say "Drupal is for bigger project where you need scalability and Joomla is system for housewives who needs buttons to press".
    That is partly correct up to some level.
    But what happens when you are dealing with a very big system where you have to create more than 400 files to have all the functionality you want to have?

    So what Drupal has to offer us? Hooks and Anchors. So I decided to read about the pattern.
    The pattern itself is very nice and comfortable to use and you have well defined objects structure to work with.
    But no much of OOP in the Drupal. Mostly it is just a structured code. Are we going 20 years back? Why did people invent OOP, all this Design Patterns?

    Once I bumped on the comparison "How many files does it take to write a Hello World applications on both systems?" Drupal - 2 and Joomla 1.5 - 5.
    If you are a novice it would be preferable to add only 2 files to add a feature. But isn't that subjective? What we have to look at, is the code scalability and architecture first.

    ReplyDelete
  24. Knowing that Joomla starting from version 1.5 introduced a well defined MVC pattern. Yes, it will take you to create 5 files for the first time. But later on while you add more they will be added in a very well defined way where you divide the logic from presentation. And with Drupal you will end up with a bunch of files where you have to always know the exact order of execution of each of them in order to add anything.
    In order to get familiar with Joomla framework it takes quite a long time and in order to know all of its features it takes even longer. I do still find out some interesting code features inside Joomla (And yes that is because Joomla has a lot of code inside) and that gives you a great way of expandability. The classes like JHTML, JDatabase, Elements etc. can be expanded very easily whenever you need to have something new. What drupal has to offer us isn't that much, but you will have to struggle.

    Lets get back to the people involved in all this.
    So there are 3 types I have found so far:
    1. Newbies
    2. Programmers (with not much of experience)
    3. Others (Include OOP experinced programmers who worked with big and huge projects)

    1. Newbies - use Joomla to learn what is CMS and how to use it to make a web site.
    2. Programmers (with not much of experience) - use Drupal, have their web sites running and telling to the Newbies that they do not know a shit about web sites building. (man, of course they do not know anything)
    3.Others - high experienced programmers write everything from scratch, using the Zend Framework, Code Igniter, KOHANA,etc. And this category includes the web site Administrators, Project Managers, and all the people who are not Newbies and not Programmers. They tend to be about 50:50 about this two CMS.

    Then I decided to ask my fellow colleagues to look at both of this systems and they like Joomla more just because of the architecture.

    To learn Drupal architecture and features it provides to developers takes less time than to learn Joomla architecture and features it provides in a code base(that is one of the reasons some people say that Joomla has poor architecture, it that they just cant understand it at first. it is completely OOP and you have to be familiar with design patterns to get familiar with it)

    ReplyDelete
  25. The question that I am looking for: is Joomla3 better architected than Drupal's spagetti hook design. I personaly was using and developing on Drupal for about a year. and I must admit that behind so called application framework comes hours of hacking till it works "development" approach... far from any application framework development workflow.

    ReplyDelete

Spam comments (i.e. ones that contain links to web development services) will be reported along with user profiles!