Unser Drupal 9 Masterplan

Es gibt 3 mögliche Release-Termine, abhängig davon, wann alle Bedingungen erfüllt sind. Das frühestmögliche Datum ist der 3. Juni, siehe https://www.drupal.org/core/release-cycle-overview#next-development-cycle für Details sowie die folgende Übersicht.

Drupal 9 Scenarios draft

Drupal 9 Szenarien

Die wichtigste Erkenntnis ist, dass Drupal 9.0.0 im Vergleich zu Drupal 8, Drupal 7 etc. ganz anders ist. Vor der Veröffentlichung von Drupal 8 hat die Community jeweils jahrelang an einer neuen Version gearbeitet, mit vielen neuen Funktionalitäten und großen Änderungen. Die Aktualisierung bzw. Migration einer Website auf eine neue Version erforderte dadurch enorme Aufwände.

Seit Drupal 8.0.0 hat die Drupal-Community jedoch etwa alle 6 Monate eine neue Minor-Version (8.1.0, 8.2.0 etc.) mit neuen Funktionen und Verbesserungen veröffentlicht. Das bedeutet, dass der Betrieb von Drupal 8-Webseiten ein kontinuierlicher Prozess ist, bei dem regelmässige Aktualisierungen erforderlich sind. Dafür beinhaltet Drupal 9.0 keine neuen Funktionalitäten mehr, sondern es werden lediglich alle Abhängigkeiten von Drittanbietern (wie Symfony) aktualisiert und die so genannte Rückwärtskompatibilität (BC) entfernt. Dies ermöglicht es, viele Änderungen zur Verbesserung und Modernisierung der Codebasis vorzunehmen, ohne dass bestehende Module angepasst werden müssen.

Zwischen Drupal 8.9 und 9.0 sind keine Änderungen der Inhaltsstruktur vorgesehen, was bedeutet, dass es bei der Aktualisierung von 8.9 zu 9.0 nur um die Aktualisierung des Codes und - in kleinerem Umfang - der Konfiguration geht.

Für Websites, die noch Drupal 7 oder sogar frühere, nicht mehr offiziell unterstützte Versionen verwenden, ist es sinnvoll, jetzt damit zu beginnen, die Migration auf Drupal 8 anzugehen, anstatt auf die Veröffentlichung von Drupal 9 zu warten. Dadurch hat man länger Zeit, die Umstellung auf Drupal 8 vorzunehmen und kann anschliessend leicht auf Drupal 9 aktualisieren.

Dies bedeutet:

  • Planbarkeit: Drupal 9 wird an einem dieser 3 Termine veröffentlicht werden. Dies ist anders als bei früheren Major Versionen, die oft um Monate oder Jahre verzögert wurden.
  • Geringerer Aufwand für die Betreiber von Drupal Modulen: Die Module werden Drupal 8.8+ und Drupal 9+ mit einer einzigen Version unterstützen können, wofür nur eine begrenzte Anzahl an Anpassungen notwendig ist. Dies wiederum wird dazu führen, dass die Module früher als bei vorherigen Versionen für Drupal 9 verfügbar sind.
  • Nahtlose Aktualisierung: Sobald alle Module, die in einem Website-Projekt verwendet werden, Drupal 9 unterstützen und auch der eigene, individuelle Code und die Design-Themes aktualisiert sind, kann das Projekt auf Drupal 9.0 aktualisiert werden - genau wie bei der Aktualisierung von Drupal 8.7 auf 8.8.
  • Kürzerer Zeitraum für die Unterstützung von früheren Versionen: Der Support für Drupal 7 und 8 endet im November 2021, weil dann der Support für diverse Komponenten von Drittanbietern endet.

Wie geht MD Systems als engagierter Betreiber von zahlreiche Drupal Modulen mit diesem grossen Umstellungsprozess um?

Primer-Update in Wartungsvertrag inbegriffen

Für alle unsere Kunden, die unser Installationsprofil Primer verwenden und einen aktiven Wartungsvertrag mit uns haben, werden die Websites auf Drupal 9.0 aktualisiert, sobald es bereit ist - als Teil unserer regelmässigen Primer-Updates. Dank unserer umfangreichen automatisierten Tests und den visuellen Regressionstests kann Primer voraussichtlich aktualisiert werden, ohne dass die Primer-Kunden etwas bemerken würden.
    
MD Systems steht zur Verfügung, um Sie bei der Aktualisierung von Ihren Websites auf Drupal 9 sowie bei einem Update eines Ihrer Drupal Module zu unterstützen.

Nun folgt mehr über den Hintergrund, technische Prozesse und Tools für die Vorbereitung von Drupal 9 sowie unser Mitwirken (in englisch).

Drupal Core and Tooling Status

Preparations in Drupal core are ongoing for Drupal 9. There has been a lot of progress already, but there is still a lot to do. Drupal 9.0.0-alpha1 is expected to be released very soon.

The following graph shows the remaining work in the progress on removing the mentioned backwards-compatibility layers around deprecated code: https://dev.acquia.com/drupal9/deprecation_status/graphs

Drupal core 9.x-dev @deprecated mentions graph

Once this is done as well as the other required preparations, then Drupal 9.0.0-beta1 will be released and the release date of Drupal 9.0.0 will be set. MD Systems is actively involved in removing these BC layers.

Beside Drupal core itself, a lot of work is also going into the infrastructure on drupal.org, which will for example allow contributed modules to adopt semantic versions (1.2.0 instead of 8.x-1.2) as well as tooling to support contributed project maintainers as well as custom code in sites in updating their modules to Drupal 9.

For example, https://dev.acquia.com/drupal9/deprecation_status inspects the whole ecosystem of contributed modules in regular intervals to identify the progress in becoming Drupal 9-ready. Drupal-check is a CLI tool that allows to check the status of one or multiple modules and Upgrade Status is a Drupal module that can check all or some of the installed modules that a site uses and display a report of the Drupal 9-readiness of a site.

Some deprecations can not be identified with static code analysis, the best way to identify these is to have automated test coverage with phpunit tests which can report issues based on runtime calls to deprecatd methods.

There is also a weekly meeting in #d9readiness in Slack on Monday 7pm UTC where the progress is discussed.

Collaboration for Contrib readyness

Drupal 8.8, released back in December, is the last minor Drupal 8 release with additional Drupal 9 deprecations. Drupal 8.9, will focus on stability instead.

This allows most contributed modules to be compatible with Drupal 8.8+ and Drupal 9 in the same release and makes it a perfect time to start preparing for Drupal 9.

And while the community has been preparing for Drupal 9 for some time already, there has been a flurry of activity since the release of Drupal 8.8.0 and improved tooling. Maintainers of large distributions and ecosystems like Thunder, Lightning and Commerce have committed to making their projects available to Drupal 9 as early as possible and have committed a lot of time already to work on the modules they use.

MD Systems maintains multiple internal install profiles and supports almost 100 projects on drupal.org. We are committed to prepare all modules that we maintain for Drupal 9 and have already been working actively on that in the last weeks and months. Many of our modules now require at least Drupal 8.7 and only have a few remaining deprecations left to be fully ready for Drupal 9. Resolving these means requiring Drupal 8.8, which we’ll start doing in a few weeks.

In the upcoming Global Contribution Weekend, a key focus will be to prepare modules for Drupal 9 and our team will join the local sprint in Zurich. If you have any questions about our projects or need help in preparing your own, talk to us in person or Slack.

Custom transition

Typically, Drupal sites also have custom code that might need to be updated as well. The same tools that can be used for contributed modules can also be used for these custom modules. 

If a site has kernel or functional phpunit tests then these are a great way to test for deprecations in custom code as well as contributed modules as well.

To be able to test a site on Drupal 9, all used modules need to have a release that supports Drupal 9. Once that is the case, it is also possible to do manual tests as well as running automated test suites like Behat.

Making legacy projects ready

Some projects that were released early in the Drupal 8 cycle might be using legacy contributed modules that have been abandoned or have been merged into Drupal core or other modules might face some challenges.

Examples include the Media Entity project (8.x-1.x, including its large ecosystem), the Workbench Moderation modules as well as File entity. While some of these projects might still receive Drupal 9 compatibility releases, they only receive minimal maintenance.

These sites will either need to find ways to migrate away from these old modules or new maintainers need to step up and make the module available for Drupal 9.

MD Systems is available to consult with updating sites to Drupal 9 as well as working on specific contributed projects.