In various published comparisons, including CmsWire and and Top Notch Themes, between Joomla! and Drupal, the common conclusion is that Joomla! excels in allowing web developers to quickly produce high-quality and attractive small and medium sized websites while the strength of Drupal is providing a framework for larger customized sites that serve many users.
Some of the comparisons are out of date or lack sufficient technical detail to fully support their conclusions. Furthermore, both Joomla! and the Drupal CMS are on the verge of releasing new versions, Joomla! 1.6 and Drupal 7, that will move both products in a positive direction.
This series of articles attempts to address where the technologies stand now, with a keen eye on the fact that both are moving targets as they approach new releases. The focus will be on using the web design software to build enterprise level websites, including those for large businesses, government agencies, and sizable non-profits, as this is the focus of Achieve Internet, based in San Diego, CA. We will examine the following topics from a technical perspective: baseline content management system (CMS) functionality, back-end appearance and functionality, and coding & customization.
Joomla! and Drupal CMS Functionality
Typically, large CMS deployments need to support certain baseline functions related to content and users, including:
- content management activities by multiple types of users with different levels of content access.
- custom content structures.
- user and content classification and organization.
Joomla! and Drupal address these functional needs in different ways. Here is an overview of functionality vs. version with “core” denoting that the functionality is supported out of the box and “extension” or “module” denoting the need for additional software:

Digging deeper into this table will help us determine the implications of what is in the core software and why that's important to enterprise web development.
User Management in Joomla! and Drupal
Part of the rationale for content management systems, of course, is to provide a means for different users to produce, edit, and manage content. To ensure that users perform the correct tasks and access the appropriate content, they must be organized in some fashion.
Several groups exist in Joomla! initially, and the admin can easily assign new users to a group. Here is what part of the “add new user” screen looks like in Joomla! 1.5:

Adding a user is easy, but somewhat inflexible. One issue is that each user can be added to only one group. If a user performs both authoring and editing duties, for example, she or he cannot easily be added to both groups. The core software also does not support the creation of user-defined groups. So if an organization has users it would like to designate as bloggers instead of authors, this would be impossible with Joomla! core. Some extensions can allow for the creation of new groups, but the lack of integration with content access control (see below) can be a problem when using extensions in this fashion.
In Drupal core, new role, what Joomla! calls a “group”, creation is trivial. Simply type the name of the new role, click “add role” and edit the permissions:

When adding a new user in Drupal , admins can grant the user one or more roles in check-box fashion:

The flexibility Drupal offers allows administrators to quickly shape their CMS to their existing organizational chart. Perhaps more importantly, the flexibility related to users and roles is part of the core software and no extensions, with hacks or deprecations, are necessary to provide the basic user-management functions.
Content Management in Joomla! and Drupal
A CMS typically supports some generic types of content, such as articles, news, and blogs, but many organizations need to append custom fields to these types or create their own custom content. A content construction kit (CCK) that allows users to create the molds for their own content usually addresses this need.
On the Drupal development side, in version 6, the content construction kit CCK module performs this function. The CCK integrates with Drupal’s core user-management so that access to all new content-types can be set at the level of role.
Joomla! also requires extensions in order to perform custom content-creation, but the choices are less clear cut. A variety of CCK-type extensions can be used to support custom content types, including Flexicontent, JSeBlog CCK, and See other Joomla! CCK's. Because these extensions are not as integrated with Joomla!’s core as CCK is with Drupal’s, access control, (permissions), must also be considered when selecting a CCK.
An additional consideration is content-tagging. With Drupal, the taxonomy component of the core software enables flexible, nested categorization of web content. The Drupal CMS can be configured to allow users to free tag content or assign pre-determined tags.
Joomla! 1.5 core does not support a taxonomy system, like that in Drupal web design. Content can belong to an admin-defined section and a category within that section, but only one category.
Joomla! CMS 1.6, Drupal 7
Core developers in both systems are busily addressing some of the baseline CMS needs. The plans for Joomla! 1.6 include the additions of flexible categorization and a granular access control system, but custom content type creation will continue to require an extension. Drupal web development, which already supports flexible user-management, access control, and taxonomy in version 6, is closing the loop on the content side by folding CCK into core in Drupal 7.
Both new versions will bring these systems forward in terms of basic content- and user-management, with Joomla! attempting to catch up to Drupal in terms of baseline core-product functionality.
Continuation of the Joomla vs Drupal research,
Joomla! vs. Drupal in the Enterprise, Part 2 - Administrative Back-Ends
Enterprise Joomla! and Drupal Part 3 - Coding & Customization
___________
Achieve Internet, www.achieveinternet.com, specializes in enterprise-class Drupal development with unique capabilities in project architecture and planning for Drupal web design projects requiring scalability, stability and integration.
