Joomla Production Department делится результатами обсуждений, возникших в связи с последней статьёй о Joomla 5.

Краткая сводка

Мы услышали отзывы сообщества и приняли некоторые решения относительно выпуска Joomla 5 и цикла релизов в целом.

Если вы не хотите читать много, вот краткая сводка:

  • Joomla 5 не будет включать критические изменения для шаблонов и сторонних расширений.
  • Код, помеченный как устаревший в Joomla 4, не будет удалён.
  • Joomla 5 будет иметь минимальную версию PHP 8.1.
  • Компоненты, работающие в Joomla 4, должны работать и в Joomla 5, если они поддерживают PHP 8.1.
  • Joomla 5 выйдет в октябре 2023 года. Из-за вышеперечисленных моментов это не будет большим и болезненным обновлением, как прошлые выпуски.
  • Второстепенные (минорные) обновления продолжатся по 6-месячному графику, но все выпуски будут перенесены на апрель и октябрь, начиная с выпуска 4.3 (апрель 2023 г.).

Если вы хотите узнать больше о причинах и деталях этих решений, тогда продолжайте читать.

Вступление 

За последние несколько недель после анонса Joomla 5 было много дискуссий по этому поводу.

Статья была создана, чтобы стимулировать интерес и обратную связь, и производственный отдел ценит этот живой обмен идеями, запросами и отзывами. Члены производственного отдела участвовали в обсуждении по нескольким каналам, чтобы узнать личное мнение и лучше понять, как люди видят влияние Joomla 5 на их мир.

Основываясь на этой обратной связи, мы получили ряд предложений и за последние несколько дней приняли множество решений относительно будущего Joomla 5.

Мы определили два самых больших опасения, решение которых потребует времени и денег:

  1. Обновление до Joomla 5 снова будет болезненной миграцией (а затем снова до 6 и т. д.).
  2. Расширения, работающие в Joomla 4, будут снова несовместимы с Joomla 5.

Возникли и другие опасения, такие как:

  • Код, помеченный как устаревший, не будет иметь документации, показывающей разработчикам, что делать вместо этого.
  • Текущий график релизов является «убойным» для наших волонтеров и сообщества, особенно летом для обоих полушарий планеты.
  • В новой основной (мажорной) версии должно быть что-то, чтобы обновление «стоило того».
  • Использование ядра (например, переопределения шаблонов) не должно «карать» разработчиков при переходе на новые версии, заставляя их всё пересобирать.
  • Сроки слишком сжаты.

В результате этих обсуждений производственным отделом было принято несколько решений.

Циклы релизов

  • Мы сохраним 6-месячный цикл второстепенных (минорных) релизов. Причина в том, чтобы защитить релиз-менеджеров от выгорания, так как релиз — это большая работа, они начинают работу за 6 месяцев до релиза и затем работают еще 6 месяцев, когда релиз выпущен. Наличие фиксированных месяцев позволяет планировать процессы.
  • Мы также оставим 2-летний цикл выпуска основных (мажорных) версий. Таким образом, Joomla 5 выйдет в 2023 году, Joomla 6 — в 2025 году и так далее. Это делается во избежание болезненных крупных обновлений, как это было ранее.

Устаревшие версии

Если коротко:
Мы не будем удалять «устаревший фреймворк MVC», «устаревший фреймворк плагинов», «устаревший фреймворк модулей» и класс «Factory». Это означает, что компоненты, работающие в Joomla 4, также должны работать с Joomla 5 (при условии, что они поддерживают PHP 8.1).

Если подробно:

Производство приняло предложение о том, что устаревшее версии могут быть удалены, как минимум, через две основные версии после того, как они будут объявлены устаревшими. Это означает, что если код объявлен устаревшим в версии 4.x, самое раннее, когда он может быть удален, — это в Joomla 6. Это предложение охватывает (помимо прочего):

  • Legacy MVC Framework
  • Legacy Plugin Framework
  • Legacy Module Framework
  • Factory

и позволяет удалить устаревший код не ранее, чем в 2025 году.

Вместо того, чтобы продлевать цикл релизов Joomla 5 до 3 лет, мы даем сторонним разработчикам как минимум 4 года на обновление своего расширения. Это также снижает необходимость поддержки трех версий расширения.

Отметим, что «самое раннее» не означает, что устаревший код будет обязательно удалён в это время, это просто гарантия того, что он не будет удалён раньше данного срока.

Версия PHP

Для Joomla 5 потребуется минимальная версия PHP 8.1.

Когда выйдет Joomla 5, PHP 7.4 останется без обновлений безопасности или исправлений ошибок.

Joomla 5 потребует PHP 8.1. Если ваш хостинг не будет поддерживать 8.1, вы сможете либо сменить его, либо продолжать использовать Joomla 4 еще два года.

В PHP 8.1, помимо других новых функций, появилась возможность «параллельного» выполнения частей кода, что может привести к значительному увеличению производительности. Переход на PHP 8.1 для Joomla 5 позволяет нам писать код, использующий эту функцию, и даже если у нас не будет времени задействовать её в версии 5.0, мы сможем это реализовать позже в минорных версиях, тем самым ускорив работу CMS.

Версия SQL

Joomla 5 будет поддерживать:

  • MySQL 8.0.11+,
  • MariaDB 10.4+,
  • PostgreSQL 12+.

Мы разделим драйверы баз данных для MySQL и MariaDB, так как эти две системы становятся все более и более отдаленными друг от друга. Отдельные драйверы позволяют нам наилучшим образом поддерживать соответствующие системы управления базами данных (СУБД).

Оптимизация

PHP 8.1 позволяет выполнять операции ввода-вывода (чтения и записи) асинхронно, то есть выполнять их в фоновом режиме. Эта возможность будет доступна для расширений Joomla 5.

Современные системы баз данных обеспечивают рекурсивные запросы. Это позволит заменить вложенные наборы. Вложенные наборы используются для управления доступом, категорий и т. д., но, несмотря на то, что они очень быстры для чтения, их запись требует очень много времени. Для сайтов с тысячами статей в категориях или пользователями и группами пользователей это иногда приводит к проблемам с производительностью. Поэтому в Joomla 5 вложенные множества будут заменены рекурсивными запросами.

Плагин совместимости

Устаревший код устаревает по какой-то причине, и в большинстве случаев существует лучший, более быстрый и удобный код, который дает вашему сайту импульс. Поддержка устаревшего кода в течение длительного периода времени является негативным моментом для владельцев веб-сайтов, желающих использовать только современный код (или только ядро). Для них устаревший код — это бремя. Как мы можем им помочь?

Цель состоит в том, чтобы перенести как можно больше устаревшего кода в системный плагин, который по умолчанию включается при обновлении. Эта идея была впервые использована еще в Joomla 1.0 и работала. Благодаря таким усовершенствованиям, как пространство имен, эту идею можно сделать еще более мощной, чтобы помочь вернуть власть над сайтом. Владельцы сайтов, которые знают, что устаревший код не используется, могут отключить плагин и воспользоваться улучшенной производительностью и более чистым кодом. Например, мы переместим псевдонимы классов, такие как JDatabase (который существует только виртуально), в этот системный плагин.

У этого плагина есть несколько правил относительно того, когда он может быть изменён:

  • Плагин содержит только устаревший код из предыдущей основной версии.
  • Его можно обновить только при выпуске новой основной версии.

Таким образом, в Joomla 5 плагин будет содержать все возможные устаревшие версии Joomla 4, но не устаревшие версии Joomla 5.

Когда мы выпустим Joomla 6, мы удалим все устаревшие версии Joomla 4 из плагина и, если остались, из ядра. Затем мы могли бы также перенести все возможные устаревшие компоненты из ядра Joomla 5 в плагин. При обновлении до Joomla 6, плагин будет снова активирован, чтобы обеспечить плавное обновление.

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

Мы прислушались к опасениям многих, что обновления повлияют на распространение Joomla и усложнят жизнь веб-агентствам и разработчикам, и мы слышали, как другие говорили, что нам нужно придерживаться пути по кривой скорости и безопасности. Мы надеемся, что это решение обеспечит более плавный путь обновления, даст больше времени, когда это необходимо, и позволит нам также предлагать последний, самый быстрый и безопасный пакет сборки для тех, кто в нем нуждается.

Документация

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

  • Мы начали новый проект: manual.joomla.org, который мы планируем заполнить подробной практической документацией для разработчиков по разработке расширений. В этом году мы планируем провести спринты сообщества, в которых каждый может принять участие, чтобы узнать о новой документации и помочь наполнить ее контентом. Мы будем держать вас в курсе.
  • Производство приняло решение о том, что отныне новые функции могут быть реализованы только при наличии письменной документации для разработчиков (manual.joomla.org) и конечных пользователей (docs.joomla.org).
  • Код может считаться устаревшим только в том случае, если для manual.joomla.org написано руководство по миграции. Это позволит любому желающему отслеживать эти устаревания, подписавшись на репозиторий документации. Можно предоставить обратную связь до того, как устаревание будет окончательным.

После принятия данных решений потребуется документация при добавлении новых функций и руководства по миграции при устаревании кода, также должна оказываться поддержка разработчиков в написании своей документации. Даже если английский не является вашим родным языком или письмо не является вашей сильной стороной, вы все равно можете добавлять свой код и получать помощь в написании документов от друга по документации. Этот друг проведет вас к ресурсам для написания документов или поможет вам в их написании.

И разработчик, и друг по документации, и сообщество выиграют от большего количества более качественной документации на протяжении всего процесса разработки. Это поможет всем понять, оценить и использовать новые функции и отказаться от использования устаревшего кода.

Шаблоны и пользовательский интерфейс (UI)

Далее следует информация технического характера, поэтому вкратце для тех, кто не является разработчиком: мы стараемся сделать так, чтобы основные изменения в меньшей степени усложняли разработку шаблонов.

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

К счастью, в Joomla 4 у нас есть WebAsset Manager, который позволяет нам делать такие проблемы непродолжительными в будущих версиях. Мы также планируем воспользоваться преимуществами новой функции Joomla 4 «Дочерние шаблоны», чтобы еще больше облегчить работу.

Долгосрочная цель состоит в том, чтобы макеты ядра и Cassiopeia были разделены (работали автономно и больше не зависели друг от друга).

Разделение позволит нам запланировать использование шаблона Bootstrap как основы, в которую будет включен весь код Bootstrap в качестве переопределения. Всё, что связано с этим шаблоном, перемещается из макетов ядра в Cassiopeia. Затем Cassiopeia либо становится дочерним шаблоном этого нового шаблона Bootstrap 5, либо остается автономным со всеми включенными переопределениями. Это позволяет создавать дополнительные родительские шаблоны на основе других фреймворков, таких как Tailwind или UIKit.

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

Шаблон админки останется на Bootstrap 5 и получит лишь незначительные изменения для повышения удобства использования.

Приверженность пользовательскому опыту

Мы все знаем, что оба основных шаблона все еще имеют свои недостатки и есть много возможностей для улучшения. Поэтому мы очень рады сообщить, что формируется новая Команда Joomla Experience Team (JXT).

Цель команды — повысить общий пользовательский опыт в Joomla, что также включает в себя шаблоны и многое другое. Мы все возлагаем большие надежды на то, что эта команда в сотрудничестве с Командой доступности Joomla (JAT) даст нам большой толчок в правильном направлении.

Новые особенности

Важнейшая задача мажорного релиза — предоставить новые функции, которые были невозможны с существующей кодовой базой.

За то короткое время до выпуска Joomla 5, мы, вероятно, не реализуем все новые функции, которые хотели бы включить в релиз (например, многодоменность). Тем не менее, в Joomla 5 будет заложено всё, что нужно для их реализации в более поздней версии, если это необходимо.

Это не должно удерживать вас от самостоятельного внесения новых функций. Мы также снова воспользуемся функциями, разработанными во время Google Summer of Code и почти готовыми, такими как улучшенная поисковая оптимизация (SEO).

Поддержка разработчиков расширений

Мы своевременно предоставим полный набор правил Rector для первого релиза-кандидата Joomla 5 для поддержки автоматического переписывания устаревшего кода.

Rector — относительно новый инструмент разработки, который может переписывать код на основе наборов правил.  Эти правила будут доступны разработчикам расширений для адаптации своих компонентов, модулей и плагинов к Joomla 5 с помощью вызова из командной строки. Вероятно, будет невозможно устранить все ручные изменения, но с Rector их можно свести к минимуму.

Всё возможно только с вашей помощью

Мы большое сообщество. Стоит помнить о достижениях этого проекта, предприятиях, которые он поддерживает, и рабочих местах, которые он обеспечивает. Для многих в командах это их вечера и свободное время, которое они уделяют проекту неделю за неделей. Они, как и все остальные, хотят всё работало правильно.

Статьи, которые мы разместили, принесли обратную связь и подсказали возможное направление развития.

Было много отзывов, иногда противоречивых и с разных источников, поэтому нам пришлось потратить время, чтобы собрать, уточнить и провести дополнительные исследования, чтобы собрать больше фактов, а затем обсудить возможности реализации полученных идей.

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

Оригинальный материал

Упоминаемые термины:

Joomla, PHP, SEO, CMS, MySQL, Cassiopeia, Bootstrap