Drupal 7, 8, and 9: deprecate the old to intake the new

Published on Monday 17, September 2018

At Drupal Europe, Dries announced the release cycle and end of life for Drupal's current and next version. Spoiler alert: I am beyond excited, but I wish the timeline could be expedited. More on that to follow.

Here is a quick breakdown:

Drupal 8 uses Symfony 3. Symfony 3 will be at its end-of-life at the end of 2021, forcing Drupal 8 into end-of-life

Drupal 9 will use Symfony 4 or 5 and be released in 2020 (a year before end-of-life.)

Drupal 7 will also end-of-life at the end of 2021, matching Drupal 8, simplifying security and release management.

Timeline copied and cropped from https://dri.es/drupal-7-8-and-9

I feel some will use this as an excuse to bash and argue against our adoption of Symfony within Drupal core. Instead, I see it as a blessing. It is forcing Drupal to adopt new technology and force our hosting platforms and providers to do the same.

At a minimum, here are the aging technologies we are forced to support:

MySQL 5.5.3/MariaDB 5.5.20/Percona Server 5.5.8

MySQL 5.6 provides many improvements over 5.5, alone. Yes, you can use Drupal with MySQL 5.6, but the core product itself cannot harness any of its benefits. Or, what about MySQL 5.7 which includes support for JSON fields? In the 8.6 release, support for MySQL 8 was added -- but the only benefit is performance gains, not new technology.

PHP 5.5.9+ and 5.6

This is one of my biggest pain points. If you look at Drupal's PHP requirements page we support 5.5.9+, 5.6, 7.0, 7.1, and 7.2 However, Drupal 8 will drop support for PHP 5.5 and 5.6 on March 6, 2019. PHP 5.5 was end-of-life 2 years ago and 5.6 will at the end of 2018. Not to mention, 7.0 is end-of-life before 5.6!

We need modern technology in our stacks.

I am aware that hosts were slow to adopt PHP 7. Know why? Because our software was slow to adopt. We never caused them to update technology stacks. Symfony 4 requires PHP 7.1.3 or higher. Meanwhile, a stable Symfony 5 is planned to be released Nov 2019 (one year before Drupal 9 release.) I wasn't able to find information on the minimum PHP requirement, but I would assume it is at least 7.2 which means 7.3 will have full support.

I am excited for 7.3, like beyond excited. Why? Because garbage collection is severely improved. And Drupal loves to create a lot of objects and trigger a garbage collection during a request. For example, in Drupal 7 we had to disable it during a request to improve performance (was worth the tradeoffs.) Here's a link to the PR which hit 7.3.0beta3 and looks to improve the process by 5x its current speeds.

Having MySQL 5.7 would allow us to fully use JSON fields. This would be immensely useful in Drupal Commerce.

And now we wait (well, don't wait, Contribute!)

I wish we could make this process happen earlier. But that would be pretty unreasonable. There is a lot to accomplish in Drupal core to make this happen. The release managers and core maintainers have done an amazing job at managing Drupal 8 and shipping stable releases. They now have had a whole additional release branch and process thrown at them.

I encourage you to embrace this change and find ways to contribute to the 9.0.x branch, which might be easier than you think. Part of the 9.0.x effort is removing deprecated code (which is pretty easy to find.) I'm not sure if a plan has been cooked up yet, but there are issues on the 9.x branch https://www.drupal.org/project/issues/drupal?version=9.x