Вы здесь

План по Drupal 9

На Европейском Друпалконе я объявил о том, что Drupal 9 будет выпущен в 2020 году. Хотя я объяснил, почему мы планируем выход новой версии в 2020 году, я не рассказал о том, когда именно мы собираемся это сделать. Учитывая, что 2020 год наступит меньше чем через 13 месяцев, время поговорить более конкретно.

Сдвиг 6 месячного цикла выхода версий Drupal

План по Drupal 9

Мы сдвинули окна выхода MINOR-версии Drupal 8, чтобы быстрее принимать версии Symfony.

Прежде чем говорить о дате выхода Drupal 9, я хочу объяснить ещё одно изменение, которое имеет незначительное влияние на дату выхода.

Как было объявлено пару лет назад, Drupal 8 принял 6 месячный цикл выхода версий (2 версии в год). Symfony, PHP-фрейм-ворк от которого зависит Drupal, использует похожее расписание выхода версий, но к несчастью, исторически сроки выхода версий Друпала на 1–2 месяца опережали сроки выхода версий Symfony, что заставляло нас ждать полгода, чтобы принять последнюю версию Symfony в Drupal. Чтобы быстрее принимать последние версии Symfony, мы недавно перенесли выход MINOR-версий Друпала на июнь и декабрь. Это позволяет нам принимать последнюю версию Symfony за 1 месяц и выпускать Drupal уже на новой версии Symfony. Например, Drupal 8.8.0 выйдет теперь в декабре 2019 года.

Планируемая дата выхода Drupal 9 — 3 июня 2020 года

Самая большая зависимость Drupal 8 это Symfony 3, срок поддержки которого заканчивается в ноябре 2021 года. Это значит, что после ноября 2021 года, все ошибки связанные с безопасностью в Symfony 3, исправляться не будут. Таким образом, нам нужно уйти с Drupal 8 не позднее этой даты или говоря другими словами, к ноябрю 2021 года все должны быть на Drupal 9.

Мы хотели бы дать владельцам сайтов хотя бы 1 год для перехода с Drupal 8 на Drupal 9. Хотя мы можем выпустить Drupal 9 в декабре 2020 года, мы решили, что лучше попытаться выпустить Drupal 9 3 июня 2020 года. С одной стороны это даст владельцам сайтов 18 месяцев для обновления, а с другой стороны это даст разработчикам ядра дополнительный буфер в том случае, если мы не успеем сделать Drupal 9 вовремя и выпустить его летом.

План по Drupal 9

Запланированные даты выхода версий Drupal 8 и Drupal 9.

Мы делаем Drupal 9 в Drupal 8

Вместо работы над Drupal 9 как отдельной базы кода, мы делаем Drupal 9 в Drupal 8. Это означает добавление новых возможностей, которые имеют обратную совместимость и экспериментальные возможности. При этом как только код становится стабильным, мы отказываемся от старых возможностей.

Давайте посмотрим пример. Как уже упоминалось, Drupal 8 сейчас зависит от Symfony 3. Мы планируем выпустить Drupal 9 на базе Symfony 4 или 5. Версия Symfony 5 выйдет меньше чем через год, а Symfony 4 вышел год назад. В идеале Drupal 9 может быть выпущен на Symfony 5, это лучше с точки зрения новых возможностей включенных в Symfony и с точки зрения долговременности поддержки. Но Symfony 5 ещё не выпущен, и мы не можем точно сказать о масштабе тех изменений которые он принесёт, и у нас будет ограниченное время чтобы его попробовать принять до завершения поддержки Symfony 3.

В настоящее время мы работаем над тем, чтобы сделать возможным работу Drupal 8 на Symfony 4 (без требования к четвёртой версии). Поддержка Symfony 4 это значительный шаг к Symfony 5, так как он несёт новые возможности для сайтов и уменьшает количество работы по дальнейшему обновлению к 5 версии. В конце концов наша цель в том, чтобы Drupal 8 работал с Symfony 3, 4 или 5, и чтобы мы могли определять и исправлять ошибки до того, как Symfony 4 или 5 станет обязательным в Drupal 9.

Другой пример — поддержка повторного использования медиаданных. Drupal 8.0.0 был выпущен с медиабиблиотекой. Мы до сих пор работаем над добавлением медиабиблиотеки в Drupal 8, чтобы уже существующее содержание могло выбираться из неё авторами и легко встраиваться в новое содержание. После того, как медиабиблиотека станет стабильной, мы сможем отказаться от старой возможности по загрузке файлов и сделать медиабиблиотеку используемой по умолчанию.

Обновление до Drupal 9 будет простым и лёгким

Поскольку мы делает Drupal 9 в Drupal 8, технологии используемые в Drupal 9 будут уже протестированы в реальных условиях.

Для разработчиков ядра это означает то, что у нас есть ограниченный набор задач которые нужно сделать в самом Drupal 9 перед его выпуском. Выпуск Drupal 9 будет зависеть только от удаления устаревших возможностей и обновления зависимостей Drupal, таких как Symfony. Это сделает сроки выпуска более предсказуемыми и улучшит качество.

Для разработчиков модулей это означает то, что у них уже есть новые технологии и они могут начать работать над совместимостью с Drupal 9 раньше. Например, они могут начать обновлять свои медиамодули для совместимости с медиабиблиотекой раньше выхода Drupal 9. Наконец, их знание Drupal 8 останется актуальным и для Drupal 9, так как не будет существенных изменений в коде.

Для владельцев сайтов это означает то, что обновление до Drupal 9 будет намного проще чем было до Drupal 8. Drupal 9 будет просто последней версией Drupal 8, в которой удалены устаревшие возможности. Это потому, что мы не будем вводить в Drupal 9 новые API или возможности нарушающие обратную совместимость, за исключением обновления зависимостей ядра. Пока модули и темы остаются совместимыми с последним API Drupal 8, обновление до Drupal 9 должно быть простым и лёгким. Поэтому мы считаем, что период обновления в 12–18 месяцев будет достаточным.

Так что же с Drupal 9, когда?

Главное в вопросе с Drupal 9 то, что это не должно быть сложным делом. Лучший способ быть готовым к обновлению на Drupal 9 это следить за обновлениями Drupal 8. Убедитесь, что вы не используете устаревшие модули и API, и где это возможно, используйте последние версии зависимостей. Если вы это сделаете, то обновление пройдёт гладко и это для нас важно.

Отдельная благодарность за помощь в написании этой статьи Gábor Hojtsy, Angie Byron, xjm и catch.