Drupal 9 is here and if you’re a web developer or company seeking to have a robust application built, you’d better know about it.
Drupal 9.0.0 was officially released on June 3, 2020. With new releases happening on the first and third Wednesday of every month, we are currently at a stable and fabulous Drupal 9.1.4.
Drupal facilitates a first-class development experience by providing a comprehensive, holistic and hardy family of building blocks for constructing complex web applications. At SiteCrafting we have always worked a bit with Drupal, but the stunning evolution that occurred in Drupal 8 and 9 excited us to base our most complicated new projects on it.
What is Drupal?
Drupal 9 is classified as a CMS. What is a CMS? A Content Management System (CMS), the administration-side of a website where site managers can log in and control website content, process orders, manage users, etc. When I started working on websites 18 years ago, CMS systems were proprietary things built from scratch by freelance developers and web firms to handle the needs of their particular clientele. As time rolled on, developers began to notice that they were all solving the same problems over and over again and open-source communities began to rally around favored CMS offerings.
Open-source communities became packed full of talented programmers pivoting away from their homemade CMS and teaming up to strengthen community projects that they and countless others would benefit from. As the years passed, many CMS offerings competed in this space. Decades later the space is no longer filled with scrappy contenders, but a handful of champions each best-serving a particular purpose.
While it is true that the CMS WordPress has become the champion for websites (64 percent of market share), Drupal has emerged with strength as the champion for web applications.
If you’ve ever been hesitant about using Drupal for your web application take it from us, this is the time to jump on board. Drupal versions 1.0 through 7.0, while wonderful in their own way, were built completely by the Drupal team so not only was that team responsible for the quality of the CMS, but for the underlying web framework as well. The result was good enough to keep the community thriving, but one can only do two things half as well as they can do one thing. As new features were introduced, cracks in the form of complexities for developers began to form.
For Drupal 8, the team made a huge decision to consolidate energy and dedicate itself completely to the CMS side of things. The Drupal team decided to craft the CMS on top of the framework and practices found in Symfony, which had emerged as the most adopted, sophisticated and reliable PHP framework in the world.
For the next five years or so, all of the fresh Drupal 8 code built on top of Symfony matured, hardened, and stabilized to the point where Drupal 8.9 was so excellent that it simply dropped any deprecated functionality and itself became Drupal 9.0.0. The resulting Drupal 9 CMS is the most well-organized, secure, powerful, versatile and useful version of Drupal ever.
Symfony Gives Drupal Sparkle
So far I’ve lavished Drupal 9 in lofty praise, but what specifically makes it so great? Several things! First, I must begin with the Symfony framework they based it on. Symfony is, simply put, one of the most brilliant things to happen in the PHP landscape. It is a set of reusable PHP components that are expertly designed, clearly documented and as powerful as you need. It seems there is a Symfony component for just about any need you may have. Need a template engine? You will fall in love with Twig. Need a good ORM for data model behaviors? Doctrine has your back. Need to secure some API endpoints? The Security component will save you countless hours.
Every Symfony component tracks its own dependencies with composer (PHP package and dependency manager) so it’s easy to add, remove, upgrade or downgrade components in a snap. Yet, Symfony is just the beginning, as what Drupal has done on top of Symfony is equally brilliant. From the get-go, Drupal 9 anticipates that you will be building something big and establishes a clean system of organization for your views, models, controllers, routes, services, listeners, etc.
Next, Drupal 9 knows what kinds of things a developer needs to do and provides CLI commands, admin center tools, and YAML config that do much of the heavy lifting typically handled in code. Flexible content types, models/data structures, admin forms, web forms, content appearance preferences and more can all be crafted right inside of the admin center before touching a line of code. Using this tooling does not paint you into a corner, as Drupal perfectly strikes a harmony between the concepts of automation and customization.
To Drupal or not to Drupal?
So, how do you know if Drupal 9 is right for your PHP project? To start, I am going to assume that your web application displays content to the public and you’ve narrowed down your choices to WordPress and Drupal. If you need a website to simply display rich content types and perform a few typical bits of functionality, WordPress can probably handle things just fine. However, if any of the following are true you should probably step up to the magic and power of Drupal 9:
- You are storing or processing a high volume of data. WordPress encourages developers to store data in two tables: wp_posts and wp_postmeta. This is fine for pages, articles, galleries, event calendars, etc. But if you need to store a high volume of data for some reason, you will find that these two tables can become overwhelmed and site performance can suffer.
- Your application will have related data models. As mentioned above, WordPress encourages developers to store data in two tables. Doing so means that you simply cannot benefit from MySQL relationships or proper indexing. To sweeten the deal, Drupal 9 even supports database migrations so that your entire history of schema changes are tracked and can be deployed to your test & production environments.
- Your web application has many custom areas. When it comes to organizing and building a large web application, there is simply no substitute for a proper MVC framework with a URL router that forwards requests to actions in controllers. While one may be able to get vaguely near this setup in WordPress, it will never be the same as the real deal. Drupal 9 is a complete web application ecosystem designed from the ground up to empower custom development.
There are more reasons I could think up, but the general idea is that if you are building a web application into your website you should really be using a CMS that is based on a web application framework like Drupal 9 based on Symfony. It does come with a steeper learning curve than WordPress has, but after learning you will be able to do more — and do it all in a more resilient and future-proof manner.
So what about you? Do you need a web application that could benefit from the strength and extensibility of Drupal 9? Fill out the contact form below and let’s talk.