Joomla Production Department публикует результаты обсуждений, вызванных в свою очередь дискуссией о Joomla 5 на GitHub. Первоисточник на английском.

Кратко

Мы получили обратную связь от Joomla сообщества и приняли некоторые решения относительно выпуска 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 года.

Причины принятия данных решений

Вступление

Последние несколько недель на GitHub шла активная дискуссия, вызванная статьёй  Joomla 5 announcement Joomla! 5.0 Bold in one year - But can WE do it?, в которой задавался вопрос: "Можно ли выпустить Joomla 5 за 1 год?"

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

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

Мы определили два самых больших страха Joomla-сообщества, которые необходимо преодолеть. Оба требуют времени и денег:

  • Страх первый: обновление до Joomla 5 снова будет болезненной миграцией (а затем снова до 6 и т.д.)

  • Страх второй: расширения, работающие на Joomla 4, снова несовместимы с Joomla 5

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

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

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

  • Использование функционала ядра (например, переопределения макетов) не должно наказывать разработчиков при переходе на новые версии Joomla, заставляя их перестраивать свои десятки и сотни переопределений.

  • Временные рамки выпусков слишком жёсткие

В результате обсуждения Production Department принял несколько решений.

Циклы выпуска

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

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

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

Четвертая минорная версия каждого жизненного цикла (например, 4.4, 5.4, 6.4) является “контрольной версией”, где основное внимание уделяется доработке средства проверки обновлений, устранению оставшихся ошибок и созданию стабильного продукта в качестве основы для предстоящей основной версии.

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

Новые месяцы выпуска

  • Мажорные версии будут выпущены в течение двухлетнего цикла - Joomla 5 в 2023 году, Joomla 6 в 2025 году и т.д. Это сократит количество шагов, необходимых при обновлении до новой основной версии.

  • Минорные версии будут по-прежнему выпускаться раз в 6 месяцев. Это предотвращает ”выгорание" менеджера релизов и обеспечивает надежную дату выпуска.

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

Устаревший код (deprecations)

Вкратце:

Мы не будем удалять устаревшие MVC framework, plugin framework, module framework и класс Factory. Это означает, что компоненты, работающие в Joomla 4, также должны работать с Joomla 5 (с требованием, чтобы они поддерживали PHP 8.1).

Подробно:

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

  • Legacy MVC Framework

  • Legacy Plugin Framework

  • Legacy Module Framework

  • Factory

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

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

Помните, что “самое раннее” не означает, что устаревший код будет удален в это время, это просто открывает такую возможность.

Мы начали комментировать и уточнять устаревшие методы в этом pull request, который будет обновлен в ближайшие пару дней.

Версия PHP

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

Когда Joomla 5 будет выпущена, срок поддержки PHP 7.4 истечет (EOL), он не будет получать обновления безопасности или исправления ошибок (см. версии PHP).

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

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

Версии SQL

Joomla 5 будет поддерживать MySQL 8.0.11+, MariaDB 10.4+ and PostgreSQL 12+.

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

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

Оптимизация

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

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

Плагин совместимости (Early adopters)

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

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

Например, мы переместим псевдонимы классов, такие как JDatabase (которые существуют только виртуально), в этот системный плагин.

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

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

  • Он может быть обновлен только после выпуска новой основной версии

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

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

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

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

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

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

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

  • Production Team приняла решение о том, что отныне новые функции могут быть объединены только при наличии письменной документации для разработчиков (manual.joomla.org ) и конечных пользователей (docs.joomla.org ).

  • Код может быть отмечен устаревшим только в том случае, если руководство по миграции опубликовано на manual.joomla.org . Это позволит любому заинтересованному лицу отслеживать устаревшие методы, подписавшись на репозиторий документации. Можно предоставить обратную связь до того, как работа по разметке устаревшего кода будет окончательно произведена.

С принятием новых положений о том, что в документации необходимы руководства по миграции как при добавлении новых методов, так и при устаревании кода, также оказывается поддержка в том, чтобы помочь разработчикам написать свою документацию. Даже если английский не является вашим родным языком или если написание текстов не является вашей сильной стороной, вы все равно можете внести свой вклад в код и получить помощь в написании документов от “Приятеля по документации” (Documentation Buddy). Помощник по документации подскажет вам источники для написания вашей документации или будет держать руку на пульсе, дабы помочь вам написать вашу документацию.

Найти специалиста по документации можно здесь.

Вы мастер пера и слова, но не умеете программировать и могли бы стать помощником по документации? Тогда Вам сюда.

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

Шаблоны / UI

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

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

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

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

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

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

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

Усиленное внимание к UX

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

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

Нам нужна ваша помощь! Мы планируем очень скоро организовать несколько мероприятий Pizza, Bugs & Fun, но, пожалуйста, свяжитесь с командами и примите участие прямо сейчас! Чтобы стать лучше, нам нужно много умов и рук, работающих вместе.

Новые функции

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

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

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

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

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

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

Это может произойти только с вашей помощью

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

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

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

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

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

Пожалуйста, если вы программист, автор документов, маркетолог или пользователь, желающий протестировать и сообщить о том, что вы нашли, свяжитесь с нами через портал волонтеров и страницу "contribute to joomla ", примите участие и выведите Joomla на новый уровень!