With two days to go until Drupal 8's end of life (on November 2, 2021), now is a good time to take stock of your Drupal 8 sites' modules. Use Upgrade Status to check for environment and module compatibility with Drupal 9.
Drupal 8 was released on November 19th, 2015. The end of life comes on November 2, 2021, after almost 6 years of support. Is this too soon? I think the answer will be different from situation to situation. But why do we need to end of life Drupal 8 in the first place?
Drupal has been dependent on various third party components for a while. jQuery was added to Drupal 5 and has been in core since January 2007. However, Drupal 8 depends on a lot more third party libraries, several more on the frontend (CKEditor, Backbone, jQuery UI, Joyride, etc) and even more on the backend (Symfony, Doctrine, Guzzle, etc).
On the one hand, this is great because Drupal core developers don't need to reinvent the wheel, ensure the security of these packages and maintain them. Also, Drupal developers can contribute to and make these libraries better for the benefit of the whole PHP ecosystem, rather than just Drupal. This was particularly shown recently with the work on PHP 8.1 compatibility in Drupal 9 where Drupal core developers contributed to more than a dozen major upstream dependencies and made PHP 8.1 adoption easier across the whole web community. Similarly, the Drupal automated updates team is working with other open source projects (Typo3 and Joomla in particular) on the PHP-TUF implementation, and our work there benefits users outside of Drupal as well.
On the other hand, this means that Drupal needs to align our release schedules with schedules of other third party libraries. We did a Symfony major version update within Drupal 8's minor releases, and it was a bad idea. Symfony 2 to 3 was breaking various contributed projects and it questioned our commitment to stability of major versions. For our Symfony 3 to 4 update, we did a clean break from Drupal 8 to 9.
Looking into the future, when projects like jQuery UI go end of life (as it happened), we need to work to make a peaceful transition to other libraries and have an opportunity to actually remove jQuery UI from Drupal. When major dependencies like Symfony 4 and CKEditor 5 go end of life (both around end of 2022), we need to have a transition to the newer versions. The updates and replacements of these libraries will not provide identical APIs and user interfaces, so we need to increase the major version number of Drupal itself to signify the updates. This is why we are working on Drupal 10 for release next year to upgrade Symfony 4 to 5 or 6, update CKEditor 4 to CKEditor 5, and so on.
As Drupal 9's lifetime is bound by the end of life of Symfony 4 and CKEditor 4 (around the end of 2022), Drupal 10's end of life will primarily depend on the end of life of its components too. I don't think the frequent end of life of major versions is a problem as long as we can make the transitions as easy as possible, which is what I dedicated most of my previous posts in this series to. Do you have ideas to make the transitions even easier? Let me know!