Движок платформы Росток.Онлайн
GLS CMFФреймворк для управления контентом
Не готовая CMS, а основа, из которой собираются сайты. На нём целиком работают конструктор сайтов Росток.Онлайн ↗ и проекты, которые мы делаем на заказ. GLS CMF отдельно не поставляется: эта страница о том, как он устроен и почему именно так.
Главное решение
Ядро описывает, что происходит, — контракты и сущности; как это делается, живёт отдельным слоем. Переезд на другой фреймворк меняет слой, а не бизнес-логику.
Ядро
Контракты и сущности
правила предметной области
не знает ни про базу, ни про HTTP, ни про шаблоны
Мост · сегодня Symfony
Реализации контрактов
хранение, запросы, шаблоны
заменяется целиком — ядро этого не замечает
Приложение
Росток.Онлайн
модули, темы, содержимое
то, что видит посетитель
каждый слой опирается на соседа слева и ничего не знает о тех, что справа
Мост сегодня
Сменным слой делает архитектура. А выбрать для него лучшее из того, что есть, — наша работа. Сегодня это Symfony: фреймворк, на котором держатся большие и долгоживущие проекты.
Предсказуемость
Версии выходят по публичному графику: новая — раз в полгода, крупная — раз в два года. Обновление планируется, а не случается.
Срок жизни
У версий с долгосрочной поддержкой — три года исправлений и четыре года исправлений безопасности.
Совместимость
Совместимость внутри крупной версии — не привычка, а опубликованное обязательство проекта.
Сообщество
Компоненты Symfony лежат в основе Drupal, Laravel и множества других проектов — их проверяет огромная аудитория.
Symfony — товарный знак Symfony SAS. GLS CMF не аффилирован с проектом Symfony.
Из чего собирается
Не «конструктор с плагинами»: модуль отвечает за содержимое страницы, бандл — за целую подсистему.
Модуль
Блок, из которого собирается страница: заголовок, галерея, карточки, форма. Объявляет собственные настройки, и редактор строит по ним поля сам — отдельный интерфейс писать не нужно.
Бандл
Целая подсистема: блог, магазин, аналитика. Приходит со своими сущностями, экранами и модулями, объявляет себя манифестом и подключается без правки чужого кода.
Система находит её при запуске: нет общего списка, в который надо не забыть дописаться, — и нет поломки от того, что забыли.
Оформление отделено от содержимого: тема переопределяет вид, не трогая логику блока.
Подсистемы узнают о происходящем через события и не знают друг о друге напрямую.
Тот же принцип в действии
Каждый шаг знает только о соседях. Поэтому новый модуль добавляется, не трогая ни страницы, ни тему, а тема меняет вид, не трогая модули.
Адрес
что открыли
Страница
узел в дереве
Макет
из каких мест состоит
Модули в местах
Тема
как это выглядит
Возможности
Это не список галочек — это то, что иначе пришлось бы писать под каждый проект заново.
Версии и черновики, отложенная публикация, мягкое удаление с восстановлением, журнал изменений, перенаправление старых адресов.
Хранилище за абстракцией — диск или объектное хранилище без правки кода. Обработка изображений, учёт использования файлов.
Долгие задачи уходят в очередь, регулярные — в расписание: посетитель не ждёт того, что можно сделать потом.
Каждый сайт живёт своей жизнью и не видит данных соседа. Разделение обеспечивает сам движок — не внимательность автора очередного модуля.
Дерево страниц, макеты с местами для содержимого, переопределение вида на любом уровне.
Правка блока на самой странице, предпросмотр до публикации, черновики на сервере.
Потому что он делается не «как получится», а по написанному заранее. Три правила, которые мы не нарушаем.
Сначала спецификация
у каждой подсистемы есть письменное описание: что делает, где границы, какие развилки были и почему выбрана эта
Строгие типы и тесты на правила
ошибку ловит анализатор до запуска; договорённости стерегут тесты, а не память
Совместимость
обновление ядра не ломает собранные на нём сайты — иначе это не фундамент
Неудобный вопрос
Его задают сразу после «а что за система». Отвечаем без фокусов, включая ту часть, которая нам невыгодна.
Массовые атаки
Большинство взломов безадресны: робот перебирает сайты, ищет известную систему известной версии и пробует на ней готовый список дыр. Для системы, которой нет в этом списке, такого потока просто не существует.
Честная оговорка
Она убирает очередь, а не риск: тому, кто придёт именно за вами, неизвестность системы не помешает. Защищает не она, а то, что выше на этой странице.
Ответственность
Нет десятка чужих дополнений, каждое со своим автором и своей заброшенностью через два года. Обновляем мы — вам не нужно следить за бюллетенями.
Коротко
GLS CMF отдельно не поставляется: мы развиваем его сами и на нём же делаем сайты. Подробности — по договору.
Да. Содержимым вы управляете сами в кабинете Росток.Онлайн, и то, что сделали мы, редактируется там же, как остальное.
Зависит от задачи. Срок и стоимость называем письменно после разбора — до того, как начнём.
Соберите его сами в конструкторе Росток.Онлайн — он работает на этом движке.