Новости и анонсы

London Super Sprint – некоторые подробности о Joomla! 4

Joomla
London Super Sprint – некоторые подробности о Joomla! 4

С 21 по 23 января 2017 года в Лондоне прошёл London Super Sprint – событие, которое собрало 37 участников из 6 различных команд: Joomla! 4 Backend, Joomla! 4 Backend Template, User Experience (JUX), Marketing (MWG), Site Optimisation Team (SEO) теперь это Joomla! Optimisation Team (JOT), Joomla! Extensions Directory (JED) и Certification Program.

На Joomla! Volunteers Portal™ вы сможете найти всё отчёты с этого события, мы же остановимся на отчёте о Joomla! 4, который опубликовал George Wilson, член команды Production Leadership Team и Joomla! 4. Ниже перевод этого отчёта.

Файлы манифеста и Service Workers

Была продолжена работа над плагином manifest.json, который позволит разработчикам создавать свои service workers для Joomla (плагин будет доступен в этом репозитории). Сама спецификация service worker ещё в процессе разработки командой W3C, и в Joomla 4, скорее всего, не появится никаких мажорных service worker плагинов. Однако возможен вариант релиза некоторых плагинов ядра, которые могут быть быстро обновлены под реалии спецификаций. Это решение будет принято ближе к выпуску бета версии.

Пересмотр MVC

Команда пересмотрела текущий слой MVC. Со времён Joomla! 1.6 в расширениях существует небольшое количество дублирования кода, однако этого нельзя сказать про модули. Если же говорить в общем, то, безусловно, слой MVC в Joomla должен быть более простым и понятным при использовании, чтобы стать более привлекательным как для текущих, так и для новых разработчиков.

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

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

  1. Уход от файлов шаблона (типа default.php) на полное использование JLayout. Цель в том, чтобы сделать макеты (layouts) повторно используемыми, и использовать их в представлениях, модулях и т.д., а также отделить контент от представления. Этот PR (https://github.com/joomla/joomla-cms/pull/13684) можно назвать первым черновиком концепции повсеместного использования JLayout.
  2. Отказ от JModelLegacy::getInstance() в пользу прямого вызова модели.
  3. По умолчанию контроллер будет создавать состояние (state). Модель по умолчанию установлена в ignore_request => true. Это было началом спринта. Но оказалось, что это более сложно, чем предвиделось, так как для наполнения модели состоянием необходимо создавать множество контроллеров (многие использовали дефолтный контроллер для отображения данных). Работа будет продолжена.
  4. Диспатчер (Dispatcher) в качестве точки входа компонента (Class based), в качестве альтернативы входного файла (entry file). Этот PR https://github.com/joomla/joomla-cms/pull/13687 представляет базовый класс диспатчера.
  5. Добавить интерфейс многозадачного (multi-task) контроллера. Этот PR https://github.com/joomla/joomla-cms/pull/13670 представляет интерфейс многозадачного контроллера, который будет требовать диспатчер для запуска компонента.
  6. Рефакторинг com_config обратно на старый MVC (сначала потребуется введение пространства имён (namespacing), но зато будет пример, как фронтенд контроллеры могут вызывать задачи бэкенда).
  7. Автозагрузка компонентов с пространством имён (скорее всего, будет адаптирована структура, предложенная командой JoomlaX): https://volunteers.joomla.org/teams/joomla-4-architecture/reports/115-joomla-4-architecture-sprint-odense-dk
  8. Для того, чтобы не нарушить существующую экосистему расширений, должен быть предложен вариант плавного перехода ядра на пространство имён.

    Папка libraries MVC слоя будет переведена на пространство имён в Joomla 3.8 и будет расположена в папке libraries/src. Также будет настроен алиас, чтобы по-прежнему работали классы без пространства имён, и не было проблем со сторонними расширениями. Например, класс JControllerLegacy будет перемещён в libraries/src/Controller/Controller.php. Также не планируется убирать алиас и в Joomla 4, и держать его в качестве устаревшего. Уже сейчас можно ознакомиться с переведёнными на пространство имён классами на https://github.com/joomla/joomla-cms/tree/4.0-dev/libraries/src.

  9. Вызов компонентов и особенно модулей в лямбда функциях для контроля того, что является областью входного файла (entry file scope).
  10. Название контроллера не должно зависеть от формата (например, controller.json.php).
  11. Удалить “view.” из названий файлов представлений и оставить только тип (view.html.php -> html.php).

Рабочая стратегия разработки для 3.8 и 4

Joomla 3.8 будет последним минорным релизом серии Joomla 3, хотя мы ещё должны получить подтверждение этого от Production Department, когда он будет сформирован. Скорее всего, версия 3.8 будет содержать в себе бэкпорты из бранча Joomla 4 для того, чтобы помочь разработчикам держать код, который будет запускаться как на 3.x, так и на 4.x.

Редизайн шаблона панели управления

С августа 2016 идёт работа над миграцией с Bootstrap 2 на Bootstrap 4, а вместе с этим и редизайн всей админки (дизайн от Elisa Foltyn). Цель – использовать современные практики для улучшения производительности, рабочего процесса, а также движение вперёд в ногу со временем.

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

Изменения, сделанные в Joomla 4 теперь включают изменения в процессе пулл реквестов клиентской части. Теперь используется Node.JS и Grunt для установки/обновления сторонних зависимостей. В дополнение к этому, мы также перешли с LESS на SCSS, поэтому Node будет использовать и для компиляции.

Пакет иконок IcoMoon был заменён на Font Awesome, однако держа в голове обратную совместимость, все классы были замаплены на старые. Все jQuery скрипты были переписаны на чистом JS для улучшения производительности. Сейчас также просходит работа над разработкой кастомных элементов (custom elements), как решение для отделения CMS от фреймворка Bootstrap. Кастомные элементы, это то, что мы предполагаем использовать в ближайшие 5 лет. Совсем скоро вы увидите результат работы в https://github.com/joomla-projects/custom-elements.

Веб-сервисы

Хотя добавление веб-сервисов и не было запланировано в Joomla 4.0, очень важно, чтобы это случилось в серии Joomla 4.x (возможно, в форме GSOC проекта этим летом).

Некоторые тезисы веб-сервисов:

  • Мы сошлись на том, что основной идеей будет создание новой точки входа/API, и вместе с ней новое приложение JApplicationWebservice, а не подход с плагином
  • Для этого нужно достучаться до разработчиков расширений и донести до них необходимость больше не использовать устаревшие методы JApplicationCms::isSite и JApplicationCms::isAdmin, а использовать JApplicationCms::isClient($client_name).
  • Конечно, существуют некоторые проблемы, которые стоит обсудить. В первом релизе мы скорее всего остановимся на более простом API, которое будет предоставлять публичны доступ к неконфедициальной информации и аутентифицированный доступ к запросам POSTи PUT. Всё это потому, что контроль доступа на уровне колонок (column level access control) не очень вписывается в то, как работает текущий слой ACL.

От переводчика

Приятно видеть, что уже идёт непосредственная работа над следующей минорной версией Joomla. Какой она будет, пока тяжело предположить, но позитивные моменты уже вырисовываются. Это вроде и не революция, но и говорить о том, что всё останется, как было, тоже нельзя. Просматривается забота как о конечном пользователе (новичках), так и о разработчиках. И что немаловажно, не забывают об обратной совместимости. Видимо переход с 1.5 на 2.5 всё ещё свеж в памяти.

Революция творится параллельно, в проекте Joomla X (Joomla Pythagoras), но нужна ли нам она сейчас?

Фотография взята из статьи JCM.

Оригинальная статья:
Dmitry Rekun
Работаю в банковской сфере, а с веб-разработкой (непосредственно с Joomla) столкнулся в 2007 году. Теперь это моё хобби и время от времени вторая работа. Какое-то время вёл свой блог, но решил попробовать работать в команде. И вот c 2012 года я здесь :)

Последние комментарии