(I'm not counting Wordpress as a «leading» CMS even though it is more popular than either Drupal or Joomla and clearly falls under the definition of «content management system». In my opinion, Wordpress is too limited to be considered in the same class as Drupal or Joomla. Also because Wordpress beats the pants off of both Drupal and Joomla for use-cases which Wordpress does fit. If Wordpress does what you want done, the Drupal versus Joomla question is academic. If you need more, then it is by definition not a viable option.)
I'm clearly biased here; I'm heavily invested in Drupal. Please take everything I write on this topic with that grain of salt. This blog, my online art gallery, and several other personal projects have all been built with Drupal. I get a not-inconsequential portion of my income from Drupal development and setup.
However, lately I've revisited the question because I have the opportunity to do some Joomla work for paying clients. I'd really like to think of myself as fair-minded and I believe I owe it to myself and my clients to give Joomla a determined and openminded trial.
When I first saw that I wanted to do things with Monochromatic Outlook that required something beyond Wordpress, I went looking at more flexible and powerful CMSs. The first one I tried was Joomla, and for a few days I was totally in love with the new toy I'd discovered. Unfortunately, that joy converted itself to frustration rather quickly. I never got my head around the basic data model (or even determined whether there was a basic data model.) My attempts at building and modifying themes failed horribly, and I found the publishing process confusing. So I reluctantly looked at Drupal, which had been described as more difficult than Joomla.
What I found was a system that I could immediately use. Maybe it's because of my experience programmingthis is not the first time that I've been confused by the purportedly easier of two systems (I've never successfully connected a Windows machine to a network but think it's a snap in Linux)but the learning curve was much steeper than Joomla's. (Note: a steep learning curve is one where more learning happens over a shorter period of time. A shallow learning curve has relatively little rise over more time.) Sure, there was a lot more to learn about Drupal (and I'd be lying to call myself a Drupal expert even now) but I knew pretty quickly how to install and update modules, how to find answers to questions I had, how to create content and even new content types. I was up and running in a short time.
In the past couple of years, Drupal has given me its share of frustrations, which is part of why I recommend Wordpress to anyone that doesn't need more than Wordpress. The only frustrations I ever had with Wordpress were related to getting it to do more than it was designed for. System and module updates are a pain in the ass with Drupal unless you're willing to take your site offline for an hour or else set up proper versioning and rollout procedures outside of Drupal. Drupal people will jump down my throat about that one, but it's my experience.
Now, years later, I'm giving Joomla another try. I've been doing work with a Joomla site for a couple weeks now, interspersed with the other work I've been doing. I haven't had to dig too deeply into it, and that has fortunately given me the opportunity to do some frantic research as I try to get up to speed with Joomla. To my dismay, I'm not up to speed yet.
Here are some specific observations regarding the differences between Drupal and Joomla:
- Core data type: in Drupal, the basic building block is a node. With few exceptions, everything you make with Drupal is a node, and each has common elements: a title, a body &c. An article or calendar event are both fundamentally the same kind of thing, with different attributes. Joomla's philosophy is to make each kind of information or categorization separate to avoid confusion. Drupal trusts that no one is going to confuse a calendar event and a forum topic even though we can see that they are basically the same kind of information underneath all the extra attributes. For me, understanding a single fundamental idea is far easier than learning multiple types of categorizations which may or may not be arbitrary distinctions.
- Administration areas: Joomla's administration area is not accessible with the same user as the content areas. Joomla's administration screens are totally separate from the site content. In Drupal, you can specify a separate theme to show for your admin pages to visually distinguish them, but if you log in with an administrative user on the main site, you have access to the admin pages. Admin options are added to the standard site navigation, which makes it easy to jump back and forth between content and administration.
This is really a matter of preference. I find having to log in twice confusing and annoying. On the other hand, I have to open a separate browser if I want to see my sites as a standard user would see them, without the admin cruft. Though I fall on the «integrated» side of the argument, the other side is a perfectly reasonable position.
- Functionality Outside of Core: Drupal's functionality is split into modules. Some modules just create a new content type, others add bridges to other software, yet others add dynamic features to a site. Even Drupal's core features (including the parts that can't be disabled) are organized in modules. Joomla has Components, Modules and Plug-ins, each installed and configured differently. Components are separate applications, presumably with some Joomla integration. Drupal would make the integration features a module and let the application stand on its own. Modules seem to be mostly what Drupal modues are: code that adds functionality to the site without adding an independent software package. Plug-Ins are filters that change existing content before that content is presented. An example would be something that turns all the articles on the site into Pirate-speak: «Click here» to «Arrrr
Click here, matey!» That's a bad example, because Joomla also has language support as wholly separate area of customization, but let's set that aside in deference to the illustrative example. In Drupal, Plug-Ins would be modules, or functions handled by modules such as Content Template (contemplate), or Views.
I sort of understand the distinction between these classes of customization, but I don't understand why the distinction is important to a site administrator. Give me parts that do things and let the module developers worry about the differences in internal logic. Unlike segregating the admin area from the content area, I don't see the upside. If I want to add a feature to my site, do I care whether it's a «component» or a «module» or a «plug-in»? Maybe
- Image support: Here I have to give Joomla credit. Image management is a core feature in Joomla. In Drupal there are multiple competing ways of handling images, and those have multiple sets of interfaces for managing and displaying images. Where Joomla generally shows a greater level of balkanization than Drupal (more on this later) there's no confusion about what approach is better to learn for including images on your site. Drupal 7 (which is still not an official release) improves on this some, but the improvement is incremental. Drupal 7 still has no integrated image manager.
- Data abstraction: In Drupal, a node is a piece of information which can be displayed. A block is a container for information, whether it's one node or many, or even a chunk of static HTML code. Themes provide rules about how to display blocks and nodes. There, you have a conceptual model of the basics of Drupal's organizing principles. You can rearrange, mix and match to your liking. Joomla has «management» pages which correspond not with single concepts, but with parts you see on the site. Go to the «Front Page Manager» to change what shows up on your site's home page. Sections appear to be predefined chunks of real estate on individual pages, and categories are tags for categorizing content, sort of like Drupal's taxonomy except that each category exists only in one section. So really, category could have been called subsection.
If you're a top-down thinker, interested in manipulating the surface details without having to create a logical set of contexts or organizing principles, Joomla is probably for you. If you think from the bottom up, and can't stand messing with anything unless you have some idea what you're actually doing at some fundamental level, you might be better off avoiding Joomla.
- Software philosophy: normally, I think that Joomla's approach to Open Source software (Free/Libre Open Source Software, aka FLOSS) is preferable. It's like the difference between the Linux and BSD licenses. The more «free» licenses are actually more restrictive, but that restriction guarantees that more software will be freely available. I understand the pros and cons, and from a purely theoretical perspective, I think that in most cases Joomla's approach, which encourages competition, is the best one. In Joomla's case the result seems disastrous.
While Drupal encourages the merging of similar projects and modules, Joomla's approach encourages each small developer to create modules on their own, not share information with others, and try to be the best within a category. This is great on a granular level: competition and choice increases the quality of Joomla modules.
Looking from a wider perspective, however, it's only individual modules that benefit. Without consolidation of important modules, other developers have to either tie their solutions to one approach or reinvent the wheel. Where Drupal has one module (well, two actuallyeven Drupal isn't totally immune to project schisms) to handle e-commerce it also has hundreds of smaller modules that rely on that one e-commerce package, and modules that provide «glue» between it and other modules. In Drupal, the Übercart Roles module marries the core Drupal user role concept to the Übercart e-commerce package to create a module that permits users to purchase higher levels of access to their website, based on roles set up by the site administrator (note that Übercart roles is so popular that it was rolled into the main Übercart distributionwhile it is still its own module, it's available to anyone who has installed Übercart). The author of Übercart Roles was able to (relatively) easily leverage existing code to enable sites to offer subscription content. Though the Übercart module and the code that supports roles is quite extensive, the Übercart Roles module weighs in at about 1300 lines of codepretty lightweight.
There are dozens of Joomla modules that do the same thing, but each and every one of them had to build their own e-commerce solution and create their own methods of enabling and restricting access to selected content. A Joomla user wishing to create a subscription website has to sort through all these competing options, many of them costing hundreds of dollars, and none of them having interoperability with the other kinds of products the site might offer. You want to offer t-shirts and website subscriptions? Your customer on a Drupal site can do that easily. I won't say it's impossible to do with Joomla, but the path is nowhere near as clear, nor as sustainable over the long run.
Remember my complaint about Drupal's image support? That's how Joomla is with its entire catalog of third-party add-on modules.
- Themes: I'm going to have to give this to Joomla, since everyone says great Joomla themes are plentiful and great Drupal themes are nonexistant. I have to admit, even http://www.whitehouse.gov/ pretty much looks like a Drupal site. The state of Drupal themes is a bit dismal. The only place I'll differ with conventional wisdom here is that, honestly, good themes in Joomla are few and far between too. With either system, you're going to have to pay someone to make your theme look passable.
- Support: Related to software philosophy (see above) support is a tricky topic. Both Drupal and Joomla have large dedicated communities of users. Joomla has the advantage of a wealth of third-party companies that are charging for thier modules (and components and plug-ins) and which are obliged (if for no reason other than enlightened self-interest) to provide prompt and useful support. The downside is that the quality of this support varies from company to company. But that's no big deal; that's the way the rest of the world is.
Drupal's support is almost all in the same place: http://drupal.org/. There are other resources, but the forums on Drupal's main website is the clearinghouse for every issue and support queue of every module available. The downside? Some modules are not well-maintained and unpopular, which can make it difficult to get support for them. It's also plagued with quite a bit of FLOSS attitude. Expect your bug reports and support requests to be met with defensiveness and suggestions that you RTFM. Much of the time you'll be pleasantly surprised, but you won't have to wait for long to be told that there is no problem. Sometimes the response will be helpful and other times even a pillar of the Drupal communitry like merlinofchaos can be downright hostile, despite users who have gone the extra mile to devise a solution to their problem.
I'm not going to pretend that this is a fair, unbiased comparison and «declare» a winner. It should be obvious that I remain in the Drupal camp. I find Joomla to be confusing, difficult, and inflexible, and I don't see any redeeming features that suggest an obvious use-case.
At the same time, I don't expect or even desire anyone to change their mind about these content management systems.
Instead, my hope is that by elaborating my reasons I can provide some perspective behind my allegiance. Both systems have failings and strengths, and I hope someone whose mind is unlike mine will be able to see that the things that bother me won't bother her, or the things that I value she does not. I hope that regardless of the choices my readers end up making, that my experience will prepare them for the points of resistance and help them to weigh their options.
In case I didn't make myself clear at the beginning of this post, if you're trying to decide what software to use to set up your blog, and you don't need fancy datatypes or advanced taxonomy or e-commerce, for God's sake don't consider either Drupal or Joomlajust use Wordpress. Wordpress does what it doesmakes and manages blogsalmost flawlessly. In fact, even if you think you do need Drupal or Joomla, try setting your site up with Wordpress first. It's pretty easy to move your content from Wordpress to either Drupal or Joomla, and the worst thing that will happen is that you'll come out of the experience with a clearer understanding of what features you need your website to have. You can get a basic shared account on Dreamhost for ninety-seven bucks a year, register a domain (included in that $97), perform a «one-click install» of Wordpress and start your blog going in about fifteen minutes flat. If you have any doubt that you really need Joomla or Drupal, that's exactly what I suggest you do.
You can thank me for the headaches you've avoided later.