Переход с Drupal 8 на Drupal 9 будет простым, если вы будете регулярно проверять и удалять устаревший код.
Drupal 9 планируется выпустить в июне 2020 года, поэтому многие люди задаются вопросом, что им нужно сделать, чтобы к этому подготовиться.
Хорошая и важная новость заключается в том, что переход с Drupal 8 на Drupal 9 должен быть действительно простым — кардинально более простым, чем переход с Drupal 7 на Drupal 8.
С единственной оговоркой, что необходимо будет внимательно проверить использование функций и кода, отмеченных как «устаревшие» и обновить их соответственно.
Если в модулях и темах на вашем сайте не используется устаревший код, который планируется удалить в Drupal 9, обновление до Drupal 9 будет очень простым. В действительности, это должно быть так же просто, как и обновление до минорной версии (например, с Drupal 8.6 на Drupal 8.7).
Почему код устаревает?
Код в Drupal помечается как «устаревший», когда он больше не должен использоваться. Как правило, код устаревает, потому что появляются более эффективные решения.
Например, в Drupal 8.0.0 мы отказались от \Drupal::l($text, $url)
. Вместо \Drupal::l()
необходимо использовать Link::fromTextAndUrl($text, $url)
. Функция \Drupal::l()
была отмечена к удалению в рамках работ по очистке кода, так как в Drupal 8 было слишком много способов генерировать ссылки.
Обычно устаревший код продолжает функционировать еще некоторое время, прежде чем он будет удалён окончательно. Например, функция \Drupal::l()
по-прежнему доступна в Drupal 8.7, несмотря на то, что она была отмечена как устаревшая в Drupal 8.0.0 более трех лет назад. Это дает разработчикам модулей достаточно времени для обновления своего кода.
С релизом Drupal 9 наиболее устаревший код будет удален. Так, например, функция \Drupal::l()
будет недоступна в Drupal 9.
Другими словами:
- Модули для Drupal 8, не использующие устаревший код, продолжат работать в Drupal 9.
- Модули для Drupal 8, использующие устаревший код, должны быть обновлены до выхода Drupal 9, иначе они перестанут работать в Drupal 9.
С более подробной информацией о политике депрекации кода в Drupal можно ознакомиться на странице https://www.drupal.org/core/deprecation.
Как узнать, что на сайте используется устаревший код?
Есть несколько способов проверить, используется ли на вашем сайте устаревший код.
Если вы разработчик сайта на Drupal, запустите утилиту drupal-check
. Мэтт Гламан (Centarro) разработал инструмент статического анализа PHP под названием drupal-check
, с помощью которого вы можете проверить кодовую базу сайта на наличие устаревшего кода. Я рекомендую сделать автоматический запуск drupal-check
частью вашего процесса разработки.
Если вы веб-мастер или владелец сайта, установите модуль Upgrade Status. Этот модуль был разработан компанией Acquia. Модуль предоставляет графический интерфейс пользователя для утилиты drupal-check
. С его помощью можно будет легко оценить готовность вашего сайта к переходу на Drupal 9.
Если у вас на поддержке имеются проекты на Drupal.org, включите тестовую инфраструктуру Drupal.org, чтобы обнаружить использование устаревшего кода. Есть два взаимодополняющих способа: вы можете запускать статический анализ кода и/или добавить в существующие тесты сбой при вызове устаревшего кода. Оба варианта можно настроить в конфигурационном файле drupalci.yml
.
Если вы обнаружите устаревший код в модуле, установленном на вашем сайте, разместите сообщение о проблеме в очереди проблем проекта на Drupal.org (после проверки, что сообщение об этом еще не было создано). Если можете, предоставьте патч для исправления проблемы использования устаревшего кода и свяжитесь с разработчиком проекта для его включения исправления в код.
Насколько сложно обновить код?
Некоторая часть устаревшего кода требует глубокого рефакторинга, но большую часть можно исправить простым поиском и заменой.
В документации по API вы можете найти инструкции по обновлению кода.
Когда следует приступить к обновлению кода?
Я призываю вас начать прямо сегодня. Используя в модулях и темах новейшие версий API Drupal 8, вы сразу же получаете все преимущества от этих улучшений. Вовсе не обязательно ждать выхода Drupal 9.
Релиз Drupal 8.8.0 будет последним перед выходом Drupal 9. Но на данный момент список всех депрекаций еще не определен.
Сколько времени осталось на обновление кода?
Drupal 9 планируется выпустить в июне 2020 года, а разработка Drupal 8 будет прекращена в ноябре 2021 года.
Мы очень надеемся, что к июню 2020 года разработчики модулей избавятся от использования устаревшего кода в своих проектах, чтобы возможность обновить сайты до Drupal 9 появилась сразу в день его выхода.
Мейнтейнерам проектов на Drupal.org необходимо помнить о политике расширенного выпуска релизов безопасности, согласно которой Drupal 8.8 будет поддерживаться до тех пор, пока не будет выпущен Drupal 9.1. Для модулей и тем оформления, которые будут поддерживать как Drupal 8.8, так и Drupal 9.0, могут потребоваться отдельные ветви в репозитории Drupal.org.
Текущая ситуация с контриб-модулями
Дуэйн МакДэниел (Pantheon) проанализировал 7000 модулей для Drupal 8 утилитой drupal-check
.
На сегодняшний день 44% модулей не имеют предупреждений об использовании устаревшего кода. Остальные 56% модулей нуждаются в обновлении, но в большинстве случаев анализатор выдает менее трех предупреждений об использовании устаревшего кода.
Перевод статьи «How to prepare for Drupal 9» из блога Дриса Бёйтарта.
Комментарии
В переводе на программистский это значит deprecated.
Также рекомендую разработчикам поглядывать и помогать в задачах по чистке кода core @deprecated
Проще говоря, до 4-го квартала 2021-го можно сидеть на 7-ке
Если мне Дрис оплатит апгрейд, то пожалуй перейду. А так, переходить чтобы перейти? А смысл?
Может 8-ка чем-то лучше 7-ки с точки зрения пользовательского опыта (читателя, редактора, издателя)? Вроде нет, те же яйки, только в профиль
В продакшене?
Глянул на мелком сайте апгрейд статус..
половина модулей для 8-ки то в альфе, то в бете..., та же капча
ютуб-филд.. - казалось бы простой модуль
а ВК-кросс-постинг.. - может и непростой, но нужный
Походу мало кто переходит на 8-ку и поэтому нет смысла мододелам допиливать до релиза
Вангую, срок поддержки 7-ки продлят
Я думаю не продлят, старое и не будут мигрэтить просто, а новое будут делать с допилами.
Прикольно. Я еще на 7 сижу, а тут уже о девятке говорят)