A Symfony foundation
Since the release of Drupal 8 at the end of 2015, the CMS has been based on Symfony components that provide the technology foundations for its operation. But why incorporate Symfony elements in Drupal?
It is not through laziness or a desire to follow trends, but to provide a solid basis for the system as a whole. The Symfony components used will form the foundation that the CMS is built on. Whatever project you want to create using Drupal, this foundation will remain identical. The idea is to reuse what has already been produced, tested and maintained, so you don’t have to reinvent the wheel and can rely on tried-and-tested building blocks.
These two tools, which were both designed using PHP technology, are fairly complementary: the Symfony framework serves as the technology foundation, while the aim of Drupal is to provide a content creation and management experience.
Note that this paradigm shift has also affected the frequency of subsequent major version releases. To take a recent example, in early November 2021 support for Drupal 8 came to an end, for the simple reason that the built-in components, based on Symfony 3, were also arriving at their end-of-support date. The same will happen with Drupal 9 and Symfony 4, and so on. Drupal and Symfony version upgrades will now be linked.
This evolution of the Drupal CMS has also opened the door to all Symfony developers and thereby increased the number of potential developers for a Drupal project. While not all Symfony components are built into Drupal, the approach to this CMS will not be too confusing for anyone who is familiar with the Symfony framework.
A plethora of themes and modules
Upon installation, Drupal is fairly sparing with features. What may at first seem like a limitation is actually intentional: Drupal is based on a modular approach where you only activate the features you need for your project. This approach avoids overloading your administration interfaces with unnecessary pages or buttons, and can of course help optimize the performance of your project by using only what is needed.
These functional building blocks are referred to as ‘modules’ in the Drupal ecosystem. The basic modules (available upon installation) can, for example, be used to add comments at the bottom of articles or a basic contact form, but they also offer more advanced settings, such as page rendering with the BigPipe technology or webservice management modules.
The range of possibilities can be widened using modules from the Drupal community. The key factor in Drupal’s success has been that it offers developers centralized management of these modules on the website Drupal.org. If we only take into account the latest major version, Drupal 9, there are no less than 7200 modules available to expand the tool’s features.
When reading through client specifications, a project manager I know had a catchphrase: “there’s a module for that” (in reference to Apple’s famous slogan for its app store). And he is not wrong: this huge shared code base often enables us to cover 80% of the needs of a project!
This is the major strength of OpenSource platforms and their communities. Without the contribution of these modules, Drupal would not be as widespread as it is today and I would not be writing this article.