Drupal Pain Points
Amanda Cunningham is an enthusiastic and driven digital media authority with a diverse background working on digital teams within agency, education, technology, recreation, and hotels. Amanda graduated with honors from McDaniel College with a Bachelor of Arts in History. In her free time, Amanda can be found spending time with family and friends, practicing her guitar skills, or reading a book on the couch with her three kitties.
For nearly two decades, Drupal has been a leading open-source content management system (CMS). Today, more than a million sites, ranging from personal blogs to corporate behemoths, use Drupal to manage their content. The Drupal community, which offers support to the platform’s users, has more than 1 million members worldwide.
Despite its popularity, the Drupal platform is not without its issues. Much of Drupal’s functionality is rooted in outdated technology, and the platform has often come up short in delivering the flexibility and freedom that modern CMS users need.
How Drupal Works
Before we can look at how Drupal is falling behind, we need to look briefly at how the platform works. When a user downloads and installs the Drupal software, they can start working with its components to create their CMS platform. These components include:
- Blocks. Blocks are content containers that users can place on various areas of their site. Blocks can serve as headers, footers, or site navigation bars.
- Distributions. Distributions are ready-made software packages that contain the vital features for different types of sites like e-commerce stores, news feeds, and social networks.
- Modules. Modules add additional functionality to sites such as managing user accounts, crafting the user interface, and manipulating content into blocks.
- Themes. Themes are sets of files (including CSS files and HTML markups) that allow users to specify how the site displays content.
Drupal was originally built on a LAMP stack, with a tightly coupled monolithic architecture. At the time, this was great for marketers to publish content on large websites, but it isn't suited for today's device enabled era. For this reason, Drupal 8 attempted to introduce headless features to its customers. The results have been underwhelming no doubt because the software was not built from the ground up to be headless. It's possible to decouple Drupal manually, but marketers lose out on the content authoring and visual editors that API-first hybrid CMSs could provide.
As Drupal upgrades its systems every two to three years, some clients have encountered serious problems when migrating to the newer platforms. Some of the older themes and templates are not compatible with Drupal 8, forcing developers to scramble to rewrite websites to integrate with the newer Symfony framework. In some cases, sites become inaccessible or unreadable during the migration process. For this reason, there are still more projects using the older versions than Drupal 8. Migration can be costly, but not doing so opens companies up to the risks associated with outdated technologies.
The Drupal platform is highly dependent on modules. As outlined above, modules control much of the necessary functionality of Drupal sites. The open source nature of Drupal has enabled developers to create more than 30,000 downloadable modules for the platform. While many of these modules are well-maintained and have few bugs, others suffer from inadequate development procedures and a lack of ongoing maintenance.
Another major issue stemming from Drupal modules occurs due to the lack of backwards compatibility. Drupal has had a history of not supporting modules written for previous versions in their newer releases. This lack of support means that sites which depend on modules built for earlier versions of the platform may slow down or stop working altogether when they’re upgraded.
Drupal relies heavily on a complex hook system to automatically load modules. The PHP code implements a specific hook, which then cues the appropriate module to be auto-discovered. The issue occurs, however, when Drupal must load every enabled module during every server request to find the specific one that implements that hook. PHP does not contain long-running threads that can efficiently manage these memory issues, which can force Drupal to use additional memory resources.
While caching mitigates the platform's memory and performance issues, it can also be the source of strange bugs on Drupal-based websites. The CMS has many layers of caching, and if these caches aren't regenerated when something changes, users could run into issues. That's why when something goes wrong within Drupal, many times system administrators can fix the problem by clearing the cache or using tools (e.g. Memcache) and techniques (e.g. reverse proxies) to free up resources.
There's no doubt that Drupal 8 is resource intensive, and DevOps teams are challenged to meet high performance demands. Drupal uses a SQL database that can be difficult to scale and maintain within different environments from development to production. Many IT professionals, therefore, attribute slow database deployments as a bottleneck for software delivery.
Another way to improve performance is to use in-memory caching tools like Memcache, Redis, or Varnish, but this puts more work on IT operations to install and maintain these tools across environments as well. In any case, Drupal puts a burden on DevOps teams to achieve the performance enterprises require.
What Is a True Headless CMS?
The definition of a true headless CMS includes a separation between the presentation and content management layers of the application. The content moves between these layers via API calls, so that the dependence between the two layers is minimized. This architecture enables developers to adapt the presentation layer to a wide range of devices, from traditional desktops and laptops to tablets, smartphones, and Internet of Things (IoT) devices.
While many enterprises are moving toward headless CMS platforms, those that still depend on Drupal are missing out on the capabilities that an API-first hybrid CMS provides. Much of the out of the box functionality of Drupal is lost, such as previewing content and visually editing its style. Most hybrid CMSs offer the presentation layer in a way that works well for IoT devices and a variety of front-end frameworks.
For developers still struggling with getting Drupal to work with today’s technology, it may be time to abandon the outdated technology of PHP and MySQL. The platform has significant technical debt, and moving to a CMS that was headless from the start can better meet the needs of enterprises now and in the future.
CrafterCMS is an API-first, hybrid headless CMS that uses a modern tech stack and offers full DevContentOps™ support. As a hybrid headless CMS, Crafter provides not only robust APIs but also a modern presentation and scripting layer that's delivers much more flexibility than monolithic-turned-headless solutions such as Drupal. The git-based repository that CrafterCMS uses aids in seamless movement of code forward from development environments to production, and content back from production to development -- breaking down barriers between IT (dev and ops) and content creators. Crafter’s serverless architecture eliminates the memory and caching issues that occur with many older technologies. Instead of dealing with the migration challenges of each Drupal version, and continuously playing catch-up, companies should consider moving to a forward-thinking CMS that is solving modern business needs.
For more information, download the Crafter White Paper titled, “Seven Reasons Why Crafter Should Be On Your Web CMS Shortlist”.
Composable Software: Are There Potential Downsides?
Magnolia Alternatives: Why Enterprises Choose CrafterCMS
Optimizing Digital Experiences with A/B Testing and CrafterCMS
Building React Apps on a Headless CMS
Building OTT Video Experiences with Headless CMS on AWS
Server Side Rendering: The Missing Component of Headless CMS
How to Easily Migrate from Contentful to CrafterCMS
Building AI Chatbots with a Headless CMS on AWS