Подробное сравнение WordPress и October CMS

Перевод, оригинал: https://www.smashingmagazine.com/2019/03/wordpress-october-cms/ 

Автор: Leonardo Losoviz

Многие люди в настоящий момент ищут альтернативы WordPress.  В этой статье производится сравнение WordPress и October CMS с учетом основных вопросов, которые необходимо иметь в виду при поиске подходящей CMS для своих проектов.

3 месяца назад состоялся релиз написанного на React нового редактора WordPress Gutenberg, обеспечивающего основной функционал редактирования, что заставило множество людей, которые не были рады этому изменению, искать альтернативу этой CMS. Кое-кто решил сделать форк и выпустил релиз «прe-гутенбергcкого вордпресса», однако для меня в этом мало смысла, поскольку этот релиз в техническом смысле запаздывает лет на 15. Если бы я искал альтернативу WordPress, то постарался бы не застревать в прошлом и устремит свой взгляд в другом направлении в поисках зрелой платформы, основанной на современных технологиях.  

Эта статья сравнивает WordPress с похожей - хотя это сходство спорно - но более современной October CMS, по широкому спектру как технических, так и не-технических параметров. Цель этой статьи не убедить людей остаться на Wordpress или переключиться на October CMS, но просто продемонстрировать, какие аспекты должны быть приняты во внимание при принятии решения о переезде на другую платформу. Такое же сравнение может быть (и должно быть) сделано также с другими платформами для принятия взвешенного решения.

Почему October CMS

Я считаю что October CMS - интересный для рассмотрения кандидат, потому что она основана на фреймворке Laravel, используемом для создания современных приложений. За 7 лет своего существования эта CMS получила признание среди разработчиков (что подтверждается развитыми комьюнити и "экосистемой"). October CMS демонстрирует значительный контраст по стилю кодинга по сравнению с WordPress. WordPress - это преимущественно процедурное программирование, в отличие от фреймворка Laravel, который написан в стиле объектно-ориентированного программирования.

В чём же разница между ними (WordPress vs October)?

Ниже я буду сравнивать WordPress and October CMS по различным параметрам и выделять то, что, как мне кажется, хорошо или не очень в той или другой. Однако я не буду выбирать победителя. Так как это не является целью статьи и, в любом случае, не существует такой вещи как «лучшая» или «самая лучшая» CMS: каждая CMS имеет свои собственные сильные и слабые стороны, которые делают ее более или менее подходящий для каждой задачи, проекта, компании, команды или чего-либо ещё. Более того, проект может выиграть от использования более чем одной CMS, например, от использования одной CMS для управления контентом и другой CMS для рендеринга шаблонов. Какая CMS из множества существующих на рынке больше подходит - выбирать вам.

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

Начнём сравнение.

Философия и целевая группа 

Не случайность, что WordPress сейчас является движком для 1 из 3 сайтов в интернете. С самого начала он был призван быть максимально user-friendly и разработчики достигли этого, устраняя любые сложности и препятствия как для технических, так и для не-технических пользователей, - для людей с любым бэкграундом, вне зависимости от их образования или достатка. Основатель WordPress Matt Mullenweg выразил это в девизе WordPress “Democratize Publishing”,  что для современной эпохи означало следующее: "Людям с любым опытом и образованием, интересами и способностями должно быть доступно использование "Free-as-in-speech ПО", которое позволит им выражать себя в интернете и публиковать там свой контент".

WordPress очень прост в использовании для всех, и его доступность с точки зрения процесса разработки многократно подтверждена, - вы часто можете встретить людей, которые без опыта программирования (такие как маркетологи, дизайнеры, блогеры, продажники и другие) справляются с установкой WordPress, кастомизацией тем и успешно запускают веб-сайты собственной разработки. WordPress "юзероцентричен", и нужды пользователей ставятся в приоритет перед интересами разработчиков. В WordPress пользователь  - Король (или Королева).

В противоположность Wordpress, October CMS в большей степени приспособлен к нуждам разработчиков, что в явной форме заявлено после самого первого релиза. Разработчики October прямолинейно, но справедливо указывают: «Клиенты не разрабатывают сайты - их разрабатывают программисты. Роль клиента - управлять веб-сайтом и решать свои бизнес-задачи. Веб-разработчик, так же как и индустрия веб-разработки, является для них необходимым посредником». При этом, по словам создателей, их миссия  - доказать, что создание web-сайтов это не ракетостроение (то есть доступно и относительно просто — прим. Переводчика). 

Так как October CMS базируется на фреймворке Laravel, можно утверждать, что она имеет качественный код в своей основе, - имеющий потенциал повторного использования, создания приложений с правильной архитектурой, обеспечения длительный поддержки и лёгкой кастомизации без использования хаков - это тот тип CMS, который привлекает серьёзных программистов.

Установка

WordPress знаменит своей пятиминутной установкой, но многие люди указывают на то, что типичная установка требует 15 минут или более (принимая во внимание все плагины, которые должны быть установлены). В дополнение, WordPress также предлагает функцию Multisite, которая позволяет создать кластер многочисленных виртуальных сайтов внутри одной инсталляции. Эта функция позволяет агентству, например, администрировать несколько сайтов своих клиентов.

Установка October CMS также чрезвычайно проста - с Wizard installation она занимает менее пяти минут, а если вы устанавливаете через консоль, то ещё быстрее. Вы можете сделать последнее просто перейдя в папку проекта и исполнив команду curl -s https://octobercms.com/api/installer | php. После этого необходимо внести данные для подключения к базе данных, в противном случае CMS ведет себя как flat-file cms. После того как установка завершена, мы получаем полностью функциональный сайт, но все ещё довольно пустой (если добавить время, необходимое для установки и конфигурации необходимых плагинов, процесс установки займёт как минимум 15 минут).

Безопасность

WordPress часто обвиняют в том, что он не безопасен, из-за большого количества уязвимостей, которые постоянно выявляются. Это заставляет пользователей использовать специальные компоненты для защиты CMS и постоянно обновлять плагины до последней версии, чтобы избежать взлома. Среди основных проблем - осуществляемая WordPress поддержка старых версий PHP, которые не поддерживаются больше PHP-комьюнити (WordPress в данный момент поддерживает PHP 5.2.4, тогда как последняя полностью поддерживаемая версия PHP 5.6). Тем не менее, эта проблема должна быть решена в апреле 2019 года, когда WordPress официально начнет поддерживать версию PHP 5.6 и выше.

С другой стороны, нельзя сказать, что WordPress небезопасная CMS сама по себе — это в том числе следствие ее высокой популярности, которая делает ее желанной целью для хакеров. И это палка о двух концах: повсеместное распространение и успех на рынке WordPress означает, что их команда по безопасности просто обязана относиться к своей работе серьёзно, постоянно отыскивая уязвимости и исправляя их максимально быстро, иначе треть интернета будет поставлена под удар. Ставки слишком высоки.

October CMS, с другой стороны, не обладает репутацией небезопасной. Сейчас по грубым оценкам в интернете около 27000 веб-сайтов, использующих October. Мы не можем сравнивать его полноценно с WordPress, используемой миллионами сайтов в интернете. Тем не менее, команда, стоящая за October CMS, явно серьёзно относится к теме безопасности. Например, в процессе установки с помощью Install Wizard есть возможность изменить адрес административной панели cms, установленной как /backend по умолчанию, но которую можно изменить на любое другое, так как это усложнит задачу для хакеров. Для сравнения, изменение логина и адреса с /wp-login.php и /wp-admin на что-то другое в WordPress может быть сделано только с помощью плагина. Кроме того, October CMS может функционировать как flat-file CMS (то есть без базы данных) и избежать уязвимостей, связанных с базами данных, как например, SQL-injection. Прим. переводчика: В October CMS также стоит запрет на исполнение php-файлов, кроме тех, которые инициализируют приложение. Загруженные хакерами вредоносные файлы не могут быть исполнены, это также выгодно отличает October от WP.

Стек технологий

И WordPress, и October CMS требуют традиционной LAMP среды: Linux, Apache, MySQL, and PHP. (Однако только PHP обязательно: мы можем использовать Windows, Nginx, MariaDB и др.). October CMS также может вести себя как flat-file CMS, что означает, что она может обойтись без базы данных, но в этом случае придется обойтись без блога или функционала регистрации пользователей и единственным доступным функционалом будут «Страницы» (RainLab Static Pages), которые считаются базовым элементом для создания и публикации контента и поставляются как один из ключевых плагинов.

Если говорить о языках, сайты, построенные и на WordPress, и на October CMS, используют HTML, CSS, и JavaScript (PHP используется для генерации HTML). С October CMS легко использовать LESS и SASS файлы.

Парадигма программирования

WordPress использует процедyрный стиль программирования. И хотя разработчики WordPress не обязаны придерживаться этого стиля программирования (например, при разработке своих плагинов и тем), код ядра WordPress  наследует эту парадигму вследствие 15 лет обеспечения обратной совместимости, которая была одной из фич, обеспечивших успех этой CMS, но непреднамеренным следствием которой стало аккумулированное технологическое отставание.

С другой стороны, October CMS следует парадигме императивного программирования, основанной на вычислениях через манипуляцию состояниями объектов. October CMS разработан на базе фреймворка Laravel, полностью базирующегося на принципах ООП, позволяющих разрабатывать модульные приложения, основанном на таких концептах как MVC, отделяющем пользовательский интерфейс от данных приложения, Dependency Injection (внедрение зависимостей) для настройки зависимостей классов (class dependencies), и принцип разделения интерфейса (Interface Segregation Principle или ISP) для определения ключевых сервисов (core services), обеспечиваемых фреймворком, и других принципах many others.

Хуки/События

Программирование на WordPress может быть охарактеризовано как «разработка на хуках*».

*Хуки — это функции, которые могут применяться к действиям или фильтрам, которые в свою очередь являются функциями, способными изменять дефолтное поведение темы или ядра WordPress — прим. переводчика. 

Хуки - это механизм, который позволяет изменять дефолтное поведение или значение, или разрешает другому коду исполнять относящуюся к нему функциональность. Хуки срабатывают через «Действие» (Action), которое разрешает исполнение дополнительного функционала, и через «Фильтры» (Filters), которые позволяют модифицировать значение.

Хуки, которые используются повсеместно в коде WordPress, являются одним из концептов, который мне нравится в разработке на WordPress более всего. Они позволяют плагинам взаимодействовать с другими плагинами (или с ядром или темой) в понятном ключе, обеспечивая базовую поддержку принципов аспектно-ориентированного программирования (Aspect-Oriented Programming).

Хорошие новости, что Laravel (и как следствие October CMS) также поддерживает концепт хуков, который называется событием (events). События обеспечивают простое для наблюдателя применение, позволяющее коду подписываться и слушать события, которые происходят в приложении и отрабатывают так, как задумано. События делают возможным разделить сложные функциональные компоненты, которые могут быть установлены независимо, но взаимодействовать друг с другом, таким образом обеспечивается модульность приложения.

Зависимость от Javascript библиотек 

Последняя версия WordPress включает в себя редактор Gutenberg, написанный на React, который обеспечивает основной функционал редактирования контента. Следовательно WordPress-разработка теперь в значительной степени зависит от Javascript (в первую очередь от React). Хотя по-прежнему возможно использовать другие фреймворки или библиотеки (как видно по Elementor Blocks for Gutenberg, которой основан на Marionette). Компоненты WordPress все еще полагается на Backbone.js (медиа-менеджер), основной код — на jQuery. Однако, мы можем ожидать, что зависимость от этих библиотек будет устранена со временем, так как Gutenberg становится новой нормой.

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

Страницы, темы и плагины 

И WordPress, и October CMS считают страницу базовым элементом для создания и публикации контента (в случае WordPress в дополнение к посту блога), позволяют изменять вид сайта через переключение темы и позволяют определять и расширять функционал сайта через плагины. И хотя принципы примерно одни и те же, в обеих CMS есть некоторые различия в применении этих принципов, которые в результате дают достаточно разное поведение.

WordPress страницы определяются как контент и хранятся в базе данных. Как следствие,  контент страницы может быть создан только через CMS (то есть через dashboard-секцию), и переключение между темами не делают страницу недоступной. Это создает различные сложности в работе. 

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

Что значимо, October CMS осуществляет роутинг через страницы. Следовательно страницы используются не только контейнеры для контента, но также реализуют функционал. Например, плагин для блога зависит от страницы, отражающий список записей постов блога по указанному URL, и еще одной страницы, отображающей единичную запись блога по другому URL и так далее. Если одна из этих страниц исчезнет, ассоциированный функционал из плагина станет недоступен, и этот адрес будет возвращать 404 ошибку. То есть в October CMS тема и плагины жестко не привязаны друг другу и переключение между темами должно осуществляться осмотрительно.

Функционал ядра и плагинов

WordPress стремится предоставить минимально необходимый функционал ядра, который может быть расширен через плагины. WordPress полагается на правило «80/20» при принятии решения, включать тот или иной функционал в ядро или нет. Если от этого выиграет 80 % юзеров, функционал включается, в противном случае  - это территория плагинов. Установка большого числа плагинов на сайт может привести к раздуванию кода. Плагины могут конфликтовать друг с другом или исполнять похожий код или загружать похожие ассеты, что приводит к неоптимальной производительности. Поэтому, если запуск сайта на WordPress достаточно прост, то значительно сложнее осуществлять поддержку или сохранить оптимальное и производительное состояние приложения при добавлении новых фич.

October CMS следует по тому же пути и стремится предоставить минимально необходимый функционал ядра, но "на стероидах": единственный гарантированный функционал - это создание и публикация страниц, а для всего остального мы должны будем установить тот или иной плагин, что было сформулировано как: «Все что вам нужно и ничего из того, что не нужно». Это утверждение понятно: большинство простых сайтов состоят только из страниц, вероятно там нет ни записей блога, ни пользователей, ни регистрации. Зачем приложению загружать ресурсы для функционала, который не нужен? Как следствие, функционал для блога, управления пользователями, мультиязычности и других опций выпущен в форме плагинов.

October CMS также включает определенные возможности в ядро, которые (хотя они нужны не всегда) могут расширить возможности приложения значительным образом. Например, из коробки предоставлена поддержка загрузки медиафайлов на Amazon S3 или доступ к ним через Rackspace CDN. Он также включает медиа-менеджер , которые преимущественно используется плагинами, например, для добавления картинок в запись блога. (Страницы также могут использовать медиа-менеджер для загрузки медиафайлов, однако CMS также предоставляет доступ к секции ассетов* для загрузки медиафайлов (*в папку темы — прим. переводчика), способ который в данном контексте кажется более подходящим).

Продолжение следует...