The path to Drupal 9 - What's new, Drupal 7 upgrade, Drupal 8 to Drupal 9...

L'équipe se prépare à Drupal 9 - Image d'agrément
Certainly this is not the priority at the moment... Certainly. However, we can take advantage of this period of calm to think about important projects. So far, the announcement of the future release of Drupal 9 has only worried Drupal 7 sites administrators. What is it exactly?

Version 9 of Drupal will be released in June 2020. It will be released alongside a minor "Long Term Services" (LTS) version of Drupal 8. Alpha 1 version is already available since 02/11/2020 (drupal 9.0.0-alpha1), version alpha 2 is available since 03/04/2020 (drupal 9.0.0-alpha2), version 9.0.0 beta 1 was released on 03/20/2020 (drupal 9.0.0-beta1).

Not a revolution, an update of the technical base

It is essentially an update, a technical rejuvenation of the CMS, with the ambition of remaining in the race (or rather maintaining the lead) of online content publication tools (headless or not). We are mainly referring here to Symfony and Twig. The objective is to ensure better performance, code standardization while guaranteeing the scalability of the CMS. The community has been preparing this new version for a long time ... Proof of this is the change in the frequency of Drupal 8 updates, which now align as closely as possible with the versions of the Symfony framework.

There will therefore be few changes at the functional and backend level (although changes of certain habits can severely test technical teams, and their productivity.) New features should arrive with version 9.1, but the road map is still very blurry...

For our daily life - internal message - it is very likely, for example, that Panalizer will be replaced by the Layout Builder Module . We’re getting ready for it ... We will continue to anticipate as much as possible.


How long will Drupal 9 be supported?

The Drupal 9 end-of-life date is not yet communicated, but it should match the end-of-support dates for the Drupal 9 dependencies. If the CMS integrates Symfony 4, its lifespan should be set to November 2023. In the case of an optimistic scenario where Drupal 9 integrates Symfony 5, the CMS support could go until November 2025. But if other dependencies, like branch, have a lower lifespan than that of Symfony 4 or 5, end of support could be earlier than 2023 or 2025. 

You decided to upgrade...

We will not address versions lower than Drupal 7 (there are still some running D6 ...) Let's focus on of the vast majority of our projects: Drupal 7 and Drupal 8. For Drupal 8, we have little concern, for Drupal 7, let’s be aware that there’s substantial work to be done.

Upgrade effort - Drupal 8

Migration between the two versions will require virtually no code tweaking compared to previous versions. Indeed, Drupal 9 is built and tested on Drupal 8. This is a real advantage over previous versions, which will make the migration easier.
Most modules and themes will be compatible in the Drupal 9 version . In addition, the modification of the release frequencies of Drupal 8 has paved the way.
The only difference between the Drupal 9 and Drupal 8 versions is characterized by the dependency on updates and the code depreciation of certain parts of Drupal 8. We will have to manage the deprecated code of our projects. If your site does not have outdated code (or if you are organized to never produce obsolete code), the migration to Drupal 9 will be as easy and fast as a minor version upgrade of Drupal 8 (from Drupal 8.7 to 8.8 for example).   
To summarize, provided you "hunt" the deprecated code (see below):
  • The migration will be as simple and fast as an upgrade to a minor version of Drupal 8;
  • Drupal 8 contributed modules will be 95% compatible with Drupal 9;
  • The custom modules will follow the same compatibility curve as the contributed modules.

Upgrade efforts - Drupal 7

Here it is not the same story... We are already, with some of our customers who will recognize themselves :), preparing the migration of the Drupal 7 sites towards Drupal 9. We draw their attention on the work ahead, because it does not is not our habit to impose, to force a decision, especially when it involves considerable work. We list the risks not to migrate, the constraints of the future development of the site. Each project is unique. However, the ideal is to consider upgrading. It will guarantee the sustainability of the site, its security, the maintainability of the configurations of the hosting infrastructure, of the libraries used.
To reassure the administrators of Drupal 7 sites, and there are many of them (estimated at nearly 750,000 sites 6 months ago), the community has decided to extend the support until November 2021 (Drupal end of life date 8). There are therefore 18 months left to prepare to migrate from the release date of Drupal 9. At the end of community support, you will only have the possibility of contracting paid support, by third-party companies (we have never tested this type of solution, but why not ...)
So what to do? Administrators of Drupal 7 sites will be able to migrate directly to Drupal 9 after its release, under the same conditions and investments as a migration to Drupal 8. But before the release, the widespread opinion seems to advise to switch to Drupal 8 in the short term.

Prepare for the migration to Drupal 9

We are considering Drupal 8 sites here. If you want to anticipate the move to Drupal 9 as a minor upgrade, you should prepare for it.
The Upgrade Status module lets you scan your code base for depreciations using a powerful command line tool called Drupal-check. This module analyzes the code of contributed and custom projects you have installed and reports "deprecated" code that must be replaced before the next major release. Available project updates are also suggested to keep your site up to date, and to avoid depreciation errors over time.
The module has a graphical interface. It indicates the status of each project, namely "No known error" or "Error found". When you click on "Show errors", you access the page with information about the deprecated function or API.
It also shows you the updates available for contributed projects. These updates are highly recommended, as Drupal project managers resolve depreciation issues over time.

Any Drupal module that does not use deprecated code will continue to work on Drupal 9. However, functions and APIs marked as deprecated continue to exist alongside these alternatives, until removed. The release of Drupal 9 will see a deep cleanup of impairments. For more information and to better understand what an obsolete code is, here is Drupal's depreciation policy .
Developers of contributed modules are encouraged to remove obsolete code by June 2020 to facilitate the collective migration to Drupal 9 (we are among them :)

Let's discuss it!

For your Drupal 8 projects, we have started a campaign to verify deprecated code, for customers who want it. For your Drupal 7 projects, we must discuss with our clients, for each project, the strategy to be adopted. The only bad solution: doing nothing.

Useful resources :