Joomla Production Department делится своими мыслями, идеями, проблемами и планами в отношении Joomla 5.

С какими проблемами мы сталкиваемся?

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

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

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

Не существует идеальных временных рамок. Всегда есть победители и проигравшие, и всегда будут возникать проблемы в той или иной части процесса сборки CMS.

Некоторые изменения также кажутся немного сомнительными на первый взгляд. Например, почему большинство классов Joomla\Cms\Factory устарели, и должны ли они быть удалены из Joomla 5? Это отлично работало в течение 11 лет, почему это должно стать плохой практикой сейчас?

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

Хорошие новости

Прежде чем мы начнем говорить о будущем, давайте оглянемся на то, что мы имеем с Joomla 4. После почти семи долгих лет разработки мы, наконец, выпустили новую основную версию Joomla. И Joomla 4 — действительно отличное программное обеспечение. Создание компонента для Joomla 4 требует гораздо меньше кода по сравнению с Joomla 3. Безопасность была повышена за счет многих изменений, включая подготовленные операторы для защиты от SQL-инъекций.

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

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

У нас есть четкая стратегия достижения успеха, нам просто нужно её придерживаться.

Какие планы на Joomla 5?

Наиболее важной «фичей» Joomla 5.0 является удаление устаревшего кода. Это делает Joomla ориентированной на будущее. Мы значительно сократим усилия по обслуживанию, объединив различные области кода. Кроме того, в будущем написание тестов станет намного проще и надежнее.

Мы хотим иметь структуру кода, которая дает нам возможность поддерживать сторонних разработчиков, повышая качество и безопасность их кода. Представьте, что ваш код автоматически тестируется только потому, что вы следуете базовому стандарту Joomla. Так мы видим будущее нашей CMS. Самое главное, мы знаем о проблеме устаревших методов Joomla\Cms\Factory, которые широко используются во всей экосистеме. В настоящее время мы работаем над тем, чтобы у нас было решение, поэтому расширения, использующие это, не перестанут работать в Joomla 5.0.

В Joomla 5.0 мы увеличим минимальную версию PHP до 8.1. Это изменение принесет нам много преимуществ и поможет нам оставаться конкурентоспособными на рынке.

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

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

Все, что так или иначе связано с CSS, планируется перенести из основных макетов в шаблон Cassiopeia. Cassiopeia (или, возможно, новый шаблон) служит родительским шаблоном на основе Bootstrap, а затем может быть настроен с помощью дочерних шаблонов. Это позволяет создавать дополнительные родительские шаблоны на основе других фреймворков, таких как Tailwind или UIKit. Мы хотели бы интегрировать такой альтернативный шаблон в Joomla 5, если кто-то сможет его реализовать.

Как обычно для новой основной версии, большинство улучшений не видны снаружи, а находятся «под капотом».

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

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

Каковы следующие шаги?

В настоящее время мы работаем над двумя основными вещами: документацией для разработчиков и оценкой всех устаревших классов и функций в CMS Joomla. Итак, с выпуском Joomla 4.3 мы хотим пересмотреть весь устаревший код в Joomla. Этот обзор приведет к одному из двух:

  1. Устаревший код будет удалён.
  2. Описание и полные примеры кода будут приведены в качестве комментария к коду о том, как мигрировать использование данного кода.

Кроме того, должна быть готова полная документация по миграции для разработчиков, объясняющая, как можно перенести расширение Joomla 3 и сделать его полностью совместимым с Joomla 4, а затем совместимым с Joomla 5.

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

И последнее, но не менее важное: мы планируем создать для выпуска Joomla 5.0 RC1 полный набор правил ректора для поддержки автоматического переписывания устаревшего кода. Для этого мы не будем вручную корректировать места, где устаревший код все еще используется в CMS, а напишем соответствующие правила для внесения изменений. Затем эти правила станут доступны разработчикам расширений для адаптации своих компонентов, модулей и плагинов к Joomla 5 одним вызовом из командной строки, включая автоматический рефакторинг для устаревших классов Joomla\Cms\Factory. Мы надеемся улучшить средство проверки JED таким образом, чтобы оно могло давать обратную связь об устаревшем коде в сторонних расширениях.

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

Чтобы ответить на вопрос, поднятый в начале: мы очень надеемся, что Joomla 5.0 будет готова вовремя со многими важными изменениями для будущего Joomla, но мы зависим от ВАС. Нам нужны ваши навыки программирования, навыки тестирования, писательское и графическое мастерство, а также любая помощь, которую вы можете предложить. Тогда мы все получим прекрасную Joomla 5.0!

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

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

CSS, JED, Joomla, PHP, CMS, MySQL, Cassiopeia, Bootstrap