Яковлев


Форкнул GetSimple CMS

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

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

Среди, получивших развитие и популярность, файловых систем управления контентом, главным инструментом предпочитаемого лично технологического стека, сразу стала GetSimple CMS. Работая с ней, участвовал в развитии и вносил вклад в популяризацию системы. В первую очередь ориентировался на среду русскоязычных веб-разработчиков и пользователей — отвечал на вопросы, делился приёмами, идеями, писал обучающие руководства и плагины, адаптировал и вносил изменения в ядро для интеграции GetSimple CMS с информационными системами клиентов.

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

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

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

Следование последним стандартам создания PHP-приложений, объектно-ориентированная модель, использование фреймворков, шаблонизатора Twig, конфигурационных файлов в формате YAML, подготовка контента в Markdown – передний план сегодняшней разработки, а значит инструмент практического обучения веб-разработчика и средство пополнить портфолио. Всегда утверждал и продолжаю утверждать, что Grav это инструмент созданный разработчиками для разработчиков, не конечный продукт для пользователя. Отсюда возникает оборотная сторона медали — высокий уровень абстракции, тяжеловесность, сложность освоения для пользователя, высокий порог входа и избыточность для круга задач, на который изначально ориентирована Grav.

С GetSimple CMS ситуация ровно обратная. Легковесный, понятный пользовательский интерфейс, принцип WYSIWYG при работе с контентом веб-сайта, отсутствие необходимости погружения в техническую сторону и изучения десятков доступных настроек — та зона комфорта, покидать которую пользователю нет необходимости. Всё это работает и работает хорошо, но для пользователя, не для разработчика.

Чистый PHP 5.2, устаревшие практики в виде хранения всего в отдельных глобальных переменных, логика, построенная на побочных эффектах функций, накопленный спагетти-код, отсутствие объектно-ориентированного подхода и абстракций – то, с чем сталкивается разработчик, желающий понять, как устроена GetSimple CMS изнутри. На этом заинтересованность в трате собственного времени с GetSimple CMS заканчивается, а поддержка свободных программных продуктов держится, как правило, на прямом или косвенном интересе. Задержка релиза версии GetSimple CMS 3.4 на годы и заморозка состояния текущей ветки — всё это последствия отсутствия заинтересованности, а значит, после очередного обновления версии PHP пользователи обнаружат, что система перестанет работать или начнёт выдавать множественные предупреждения об устаревании. Таково положение дел.

Начал разговор с описания опыта работы с GetSimple CMS не просто так. При всей критичности, утверждаю: этот “тёплый ламповый” программный продукт, не только не потерял практическую актуальность для пользователя, но способен продолжать конкурировать в задачах, на которые ориентирован.

Доступные в репозитории плагины расширяют функциональность, однако не всегда их работа оптимальна, что сказывается на производительности и потреблении ресурсов. Кроме того, всегда было желание получить от GetSimple CMS больше “из коробки”, тем более, плагины, а именно, проверка версий, привязывает систему к внешнему API репозитория, работа которого контролируется третьими лицами.

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

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

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

Текущая версия форка доступна для скачивания и тестирования из репозитория на GitHub. Предложить собственные идеи и обсудить работу над форком можно через контакты, указанные на страницах веб-сайта. Ход работы над форком будет описываться здесь же.

Жду всех заинтересовавшихся и желаю себе не потерять мотивацию!