Joomla vs. Drupal — A Comprehensive Comparison - Custom Software Engineering

By Justin Kerr
March 15, 2014

Table of Contents

Custom Software Engineering

Software engineering is a discovery, planning and implementation process that includes defining specific project requirements; establishing a plan for software architecture and coding methodologies; and actively managing and assessing the project as the development team builds the solution. Although the relative complexity of a project may tie into the chosen approach, both Drupal and Joomla projects can leverage any popular software development process, from the the waterfall method’s step-by-step progressions, to iterative development styles like the spiral model, to contemporary agile development and rapid prototyping processes. Development strategy may also be determined by things like scheduling demands, the anticipated longevity of the software, and developer preferences. For both Drupal and Joomla, strategies related to software engineering often grow out of the frameworks and standards established by the CMS platform.

Drupal iconDrupal

Drupal’s approach to software engineering ties into its nature as a lattice upon which content types and system capabilities can be built according to specific project requirements. Drupal has a very modular structure, with separate system elements easily able to talk to each other via “hooks” – PHP functions with standardized naming patterns and hook-specific parameters that can tie into user-selected values or those passed from other Modules. Drupal also offers an extensive, documented Application Programming Interface (or API) for all of its major versions, exposing commonly needed and powerful system constants, functions, classes and other resources.

It is noteworthy that Drupal does not formally follow object-oriented software design, or mandate other coding paradigms, although it does establish some standards for code structure and syntax. Indeed, each third-party Module’s developer is free to build their Module-specific code according to the design and syntax patterns they see fit, as long as the Module respects Drupal’s naming and access conventions for hooks, plus some basic guidelines. Even though this sometimes results in non-optimal code, Drupal’s primary Modules – and popular contributed Modules – tend to be well-engineered, having been built and validated by veteran developers.

Drupal provides a full database abstraction layer which enables the same Drupal code to be relevant for any database connected to Drupal, as well as do things like connect to multiple databases at the same time. Drupal provides support for MySQL (Drupal’s most common database), PostgreSQL, SQLite and, through contributed Modules, Microsoft SQL Server and Oracle.

Drupal’s overall structure allows for a great deal of freedom for developers, as well as many potential pitfalls and false paths (which are especially perilous for those new to Drupal development). Knowing the bigger picture behind the software’s purpose – like organizational goals and anticipations about the software’s lifecycle – can help Drupal developers make the right decisions about site architecture and which development paths to pursue.

Joomla iconJoomla

Joomla is unique in the world of open-source content management systems in that it has formally separated all of its CMS-specific code from an underlying base of abstract classes, software libraries and other resources called the Joomla Framework. This future-forward stance can have implications for developers who may wish to implement web application functionality not specifically tied to content management. It is also a hallmark of maturing web software systems, and generally adds a great deal of potential versatility to Joomla.

Object-oriented development is de rigueur for code within the Joomla project and for third-party software extensions. A well-documented schema for universal Model-View-Controller (MVC) development patterns provides both code structure and integration with Joomla system capabilities such as HTML overrides. The Joomla project has also formally adopted specific coding style based on the PEAR Coding Standards, as well as integrated many open-source software libraries into the CMS and Joomla Platform.

Much Joomla development follows well-established and documented processes for creating installable software extensions that can be added to Joomla’s core installation. These extensions take the form of Components, which are akin to discrete Web apps inside Joomla; Modules, which for Joomla means an in-page widget; and Plugins, which are custom actions tied to Joomla system events.

As a practical matter when planning a site’s development, developers may first look to Joomla’s expansive directory of third-party extensions which enable non-core Joomla features and functionality. Much of the time, a third-party extension will accommodate a project need not satisfied by Joomla’s core software. However, most Joomla implementers then live with the conventions, features and configuration options enabled by the third-party developer, even if they don’t meet ideal criteria. PHP developers can certainly customize an extension’s code, but this raises issues for maintenance of the third-party software and working around any original limitations. To accommodate unique project requirements, most Joomla developers write their own extensions for installation into the CMS.

Because of Joomla’s structure and these default development patterns, Joomla’s Components tend to exist within their own silos, only hooking into the CMS as necessary to implement menu items, display extension content, support Permissions/ACL and perhaps integrate with related third-party Modules and Plugins. (Indeed, Joomla Components tend to have their own database tables.) An interesting development in the Joomla software ecosystem is the emergence of extensions middleware that knits together two different third-party extensions for a specific result. Also, many popular Joomla Components now offer their own software development toolkits so that developers can write integration software or plug-ins specifically for that third-party extension.

Joomla can now run on Microsoft SQL Server, in addition to its default, MySQL. Support for PostgreSQL and other databases, as well as a database abstraction features, are planned for future Joomla releases. Joomla does offer robust in-built capabilities for working with database queries and data manipulation.

Dollar sign iconCost Conclusions

Software engineering costs will be directly related to the complexity and scope of the required solution, the rigidity of project requirements, and the platform choice of the developer. There is no doubt that Drupal requires significantly more time for planning and constructing a site that has straightforward content management needs: Joomla’s in-built capabilities, established (and required) structures, and third-party plugins can quickly accommodate a very wide variety of CMS project scenarios.

Where Drupal shines is in its capabilities for specific customization to meet rigid project requirements, support for extremely complex site architectures and functionality, and the capacity to engineer new solutions based on the software that’s already running on the site. Drupal’s system of hooks and other development capabilities require work and experience to leverage effectively, and improper software engineering or 11th-hour project changes can carry very heavy costs. In addition, some developers gripe that the lack of standards and Drupal’s wide-open nature can lead to messy code and other problems.

It’s worthwhile to note the commercial differences between Drupal’s contributed Modules and Joomla’s extensions ecosystem. Whereas Drupal eschews any required monetary payment for its Modules, Joomla is open to the concept of commercial open source, with some third-party extensions carrying subscription, support or other costs (even though these tend to be negligible compared to overall project cost, and the best third-party extensions deliver incredible value versus hand-coding an equivalent solution). Indeed, the Joomla project is changing the licensing terms for the Joomla Framework from GPL to LGPL to allow for broader framework adoption and integration with commercial products and services. The Joomla CMS will remain GPL.