What is Drupal?
Drupal is a popular content management system (CMS) for building websites, web applications, and digital experiences. With such flexibility, it can be difficult to define exactly what Drupal is. This chapter explores that question in depth to clarify its identity, purpose, and objective.
The goal of this chapter is to provide a solid foundation that we will build upon in the more practical, hands-on chapters found later in this book. Learning basic concepts and understanding the community are essential for anyone who wants to work with Drupal.
In this chapter, we will explore the following topics:
- What is a CMS?
- Framework and extensibility
- Basic concepts
- Popular case studies
What is a CMS?
A CMS, in its simplest form, is a tool to create, update, maintain, and present content. This was historically for websites, but now, they’re commonly used for digital experiences given the rise of omnichannel content delivery. The foundations of the web started with servers delivering static HTML files over the internet. Tools that abstracted technical complexities in building HTML, such as Macromedia Dreamweaver, allowed non-technical audiences to author websites without knowing how to code. HTML files would be modified on someone’s personal computer and subsequently pushed up to a web server through protocols such as FTP or SFTP. A CMS abstracts both the coding and the file-based operations to enhance the capabilities of a system. Many CMSs also handle content delivery given that managing content has evolved to address more complex use cases with specific access controls, editorial reviews, and more.
The modern CMS has evolved to serve several popular use cases. Many eCommerce websites manage products, pricing, and promotions through a CMS where the system manages shopping carts, users, and payment transactions. Social networks, such as Twitter and Facebook, harness content management capabilities to deliver user-specific, innovative digital experiences.
Enterprise CMS systems must account for much more than just browser-based content delivery, which explains Drupal’s evolution. Omnichannel capabilities often allow a CMS to serve as a central content store while allowing the same content to be served across any channel from a website, app on your phone, a notification stream, and more. A CMS is now viewed as a major enabler for an effective digital strategy spanning simple websites for small businesses to a highly integrated content store for major corporations. Over time, Drupal has added the features and extensibility necessary to be a platform that enterprises adopt.
CMS systems began by managing content published on basic websites. Today, applications such as Drupal have evolved to be able to dynamically deliver content through many channels and manage data across a vast amount of enterprise capabilities. Recognizing this evolution helps explain Drupal’s position in the space of CMS solutions as an enabler not just for simple website use cases, but far more.
Frameworks and extensibility
I once heard Drupal described as analogous to Lego building blocks in that Lego blocks of all shapes and sizes; what can be created is limited only by your imagination. Many people have attempted to define what Drupal is. While a clear definition may help people understand when and how to adopt Drupal, if Drupal is of interest to them, or if Drupal can help them deliver a specific solution effectively, this is not a constructive way to understand what Drupal is.
Drupal is a tool. What is delivered with the tool can vary drastically. That is why the Lego analogy works. With Lego blocks, you can build a house, a car, a Star Wars figure… practically anything. Lego blocks empower a builder to create what they want to create. Often, people want a clear definition of Drupal. Is it a house, a car, or a Star Wars figure? No – it is a tool that helps you create the digital experiences you want to build. While I understand a desire to define what Drupal can be used for, looking at Drupal in this manner can be significantly limiting.
Drupal grew in popularity as a CMS. Drupal empowered site builders by offering a user interface for configuring structured content and serving that structured content as rendered HTML. Imagine a system that can be used to both create and deliver websites. Drupal offers that. Content is stored persistently by authors and then rendered for site visitors dynamically. Drupal is an application developed in PHP that leverages a database storage backend. Older CMSs simply managed static files, whereas Drupal is a functional system that can be programmed to manage content. Page requests do not correspond to static files; instead, they are dynamically processed by Drupal. The system interprets a URL, parameters, and sessions to deliver a unique, generated result back to the browser at the time the request was made. Some requests get content, others serve the user interface to manage content. Drupal handles all of that.
However, Drupal can do much more than basic content management. Out of the box, the core of Drupal delivers many features that allow it to be configured for conventional content management. This includes structured content, WYSIWYG, media/static file management, caching, rendering content displays, API-based content delivery, and more. However, Drupal also comes with a highly extensible framework that allows for it to be customized. Given Drupal is open source, community members have contributed their customizations back to the open-source community as projects that can be downloaded and installed on any Drupal application.
The goal of this book is to show how Drupal, its out-of-the-box features, and contributed projects can be built and configured to deliver amazing digital experiences. Like a large box of Lego blocks, the aim of this book is not to define exactly what can be built but to show you how to use the tool to accomplish a large number of potential outcomes. What you do is only bound by your imagination.
Basic Drupal concepts
Drupal’s core delivers two fundamental parts of the application: a frontend web application and a backend administrative system. Both are delivered through the Drupal application, which can be accessed from a web browser differentiated based on the request. Common backend paths, such as the user login page “user” and administrative console “admin,” help Drupal differentiate requests.
Drupal’s administrative backend
Conceptually, Drupal’s backend performs tasks and retrieves information about the Drupal system. Tasks change based on the access granted to the user. However, common tasks include performing content updates, configuring Drupal system settings, and managing modules. Useful information, such as Drupal’s system status page, access to Drupal logs, and help pages, can also be accessed from Drupal’s backend. It is useful for content editors and those managing the Drupal system.
The following figure demonstrates Drupal’s administrative backend, which can be found at
/admin after logging in:
Figure 1.1 – Drupal’s administrative home page
At the top, Drupal has an administrative menu that helps navigate the entirety of Drupal’s administrative backend. This figure demonstrates the initial, primary administrative page that lists links within Drupal’s backend. Each category has a gray background that represents a core feature or subsystem. Under each category are links to pages that perform administrative actions or configure the behavior of that subsystem.
Drupal’s frontend presentation layer
Since the backend configures Drupal and manages content, the frontend is responsible for serving content. Drupal’s render subsystem is used to correlate a page request to the corresponding response, which is dynamically returned by Drupal. While there is far more complexity, a high-level request flow interprets the path, gathers the relevant structured content from Drupal’s backend, maps the content to HTML templates found in the enabled Drupal theme, and returns rendered markup.
The following figure shows Drupal 10’s default home page rendered by the frontend presentation layer:
Figure 1.2 – Drupal’s default home page
While this shows simple, basic placeholder content, it differs drastically from Figure 1.1, given that it is presenting content and not configuring Drupal.
Consider authenticated users while using Drupal’s frontend and backend. Drupal can deliver content, but not just for anonymous visitors who visit a Drupal website. During frontend processing, Drupal can render content specific for the user who’s being authenticated. Such a capability allows you to leverage Drupal features to build dashboards with individualized content, create personalized experiences, and even deliver content moderation workflows that pair with Drupal’s frontend. The most common use case for authenticated users is still accessing and using the administrative backend of Drupal, but a user can be configured without permission to access the backend. Given users have an expanded role in Drupal, a user can log into Drupal with no backend access and get content that’s specific and relevant to them. Imagine building a social network where every user only sees content they subscribe to. Drupal can do that.
Popular Drupal case studies
Drupal case studies start with their fundamental content management features, which build off of structured data. Drupal has been commonly used for blogs, websites, or news. Stanford University offers a web content management program that delivers Drupal and various content management features as a service through their IT department. The State of Georgia offers a similar web platform built with Drupal. Other popular Drupal websites include London.gov.uk, home.cern, unicef.org, the Syfy network, the State of Massachusetts, The Weather Channel, Tesla, Entertainment Weekly, NCAA, the Emmy Awards, and NASA.
Distributions in Drupal often represent popular use cases for Drupal, reducing the time and cost of creating multiple sites that have similar requirements. Websites built with the Open Social distribution (getopensocial.com) help create community-based websites with groups, events, private messaging, and enhanced user profiles. Case studies include Local Gov Drupal (drupal.org/project/localgov), The United Nations, The Salvation Army, and The European Commission. Drupal Commerce is a distribution tailored for eCommerce websites, with a series of optional features for payment gateway integrations, promotions/coupons, analytics, shipping, and fulfillment. Case studies include EuroCentres, Open Sesame, and Artellite.
Drupal has countless published case studies and even more undocumented installations that highlight its wide adoption. These case studies demonstrate Drupal’s ability to be used in different industries and verticals, as well as for different implementations.
This chapter covered introductory concepts regarding CMSs and highlighted how Drupal built a CMS through its high-level features. First, we introduced Drupal’s framework and extensibility value proposition, which enables both its vibrant community and enterprise-level customizations. Next, we reviewed Drupal.org, which introduced you to how to engage with the community, work with community projects, and the purpose of the Drupal Association. Finally, we looked at some case studies that demonstrate Drupal’s capabilities. The next chapter dives deeper into projects by reviewing core, contributed, and custom projects.