Посты / Мое знакомство с October CMS

28.03.2017 14:55
Привет друзья. Судьба распорядилась таким образом, что попал я на достаточно крупный финансовый проект. И этот проект был создан на базе CMS системы - October CMS. Данная CMS создана на базе уже устаревшего framework Laravel 5.1. Но дело в том, что это не пакет или надстройка над самим фреймворком - это независимое решение, которое использует фреймворк Ларавел в своих целях, как ядро. А сам Ларавел полностью переписан и переделан именно на уровне самого ядра фреймворка так, что говорить о каком-то преимуществе использования Ларавел, в принципе, бессмысленно. Итак, мое субъективное мнение о том, что это за зверь такой. И его преимущества и недостатки.

Начну с преимуществ October CMS:

  • Полностью готовая админка, с самым современным дизайном
  • Модульная система подключения плагинов с автоустановкой
  • Наличие готовых плагинов для разных задач (мало, но есть)
  • Быстрое и простое создание собственных форм в админке, через YAML файл
  • Простота связывания зависимых таблиц, полей и форм
  • Богатый функционал по настройке сайта из коробки
  • Развертывание сайта в один клик
Вот так выглядит админка изнутри:
Так выглядит система плагинов:

А это маркет из которого можно ставить плагины: При этом многие плагины платные. Что является довольно не привычным для опен сорс решений.

Вот так можно создать форму для админки через создание полей в файле настроек: Будет создана форма с закрытым полем id, текстовое поле для ввода заголовка, форма загрузки изображений и графический текстовый редактор для описания. Эта форма будет выглядеть вот так: Должен согласится, что это очень быстро и круто. Также можно настроить так, чтобы в одну форму была встроена другая форма. Можно все это достаточно быстро кастомизировать.


Теперь хочу поговорить о недостатках. Как по мне, то они перечеркивают абсолютно все плюсы с головой.

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

2. Над проектом работает всего 188 контрибьюторов. Много это или мало, в масштабах всего мира, решать вам. Но мое личное мнение, что это мертвый проект. 

3. Вытекает из первого и второго пункта. Это отсутствие какой-либо популярности.

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

  Например:

1) Роуты подключаются в шаблоне страницы!!! И если у вас будут десятки сущностей, то вы должны будете прошерстить все эти страницы для того, чтобы понять, какой контроллер за что отвечает.

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

3) Вы не контролируете процесс создания моделей, миграций и контроллеров именно так, как это задумали вы. Система будет думать за вас, строить свои пути и ссылки на которые и будет привязан функционал. Где-то что-то переделали немного, значит готовьтесь переделать это везде! А если хотите все сами контролировать от и до, то прочувствуйте на себе всю "силу наследования". Вам придется переопределять все и вся.

4) Из-за костылей вам нужно навсегда забыть про автокомплит в вашей IDE. А отладка кода и поиск глюков с костылями, превращается в очень интересный и долгоиграющий квест.

5) Подключение своих ассетов происходит прямо из кода, со всеми вытекающими от сюда последствиями.

6) MVC научил вас передавать данные из контроллера в шаблон, а из шаблона получать данные от пользователя назад в контроллер? Забудьте об этом. Для этого вам будет доступен свой бубен с переменными $params, $vars и другие сомнительные ништяки.

7) Вы привыкли, что ajax - это скрипт с запросом к вашему контроллеру? Что прикрутить уже готовый скрипт к новому проекту - это дело пяти минут? Забудьте об этом. Октобер научит вас тому, что аякс - это не совсем то, о чем вы думали раньше. Более того, что это даже совсем и не JS!

9) Вам предстоит узнать, что вызывать методы контроллера прямо в шаблоне - это очень даже правильная и новомодная практика.

10) А еще вы узнаете, что подключение одного шаблона внутри другого - это очень банально. Для этого вы будете подключать классы компонент, которые будут что-то выполнять и выводить в свой шаблон, который в итоге и подключится. А партиалы - это такие маленькие шаблончики, которые могут подключаться везде и повсюду, например, в качестве статического блока. Но только, как потом всю эту "хрень" отлаживать и поддерживать, вы в документации не найдете.


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

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


Это мое субъективное мнение. Всем всех благ и удачных проектов. Желаю в начале много раз подумать об архитектуре проекта, а только потом уже начинать делать сам проект. И ваша жизнь тогда будет гораздо проще и счастливее. До новых встреч.

2

Комментарии (19):

Буду краток, автор глубоко заблуждается в своих выводах. Всем прочитавшим этот опус предлагаю установить чистый October и попробовать на нем что-то сделать самостоятельно.
Мне кажется само название этому инструменту дано неправильно. Это ведь не только CMS. Сам модуль CMS у меня, к примеру, отключен, ибо используем только интерфейс админки. Более правильно было бы назвать October RAD (Rapid Application Development)
elvendor wrote:
Я даже больше скажу, я перевыполнил ТЗ, ибо от меня не требовался мультиязычный интерфейс, реалтайм (вебсокеты), никаких пуш уведомлений, но благодаря тому, что в данной CMS все это есть из коробки и очень удобно пишется, мне не составило труда это все добавить.
В этом и проблема. Когда вы сами что-то создаете/пилите, то вы можете писать на чем угодно! Хоть нативной пыхой. А когда вы работаете в команде разработчиков, то за такие решения могут и "ногами побить".

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

Я написал последнюю статью про легаси код. Там я описал, почему так происходит. И решения использовать любые CMS для крупного проекта - это значит самому себе поиметь проблемы в будущем.
 @А когда на этой ботве создали финансовый проект, который падает день через день...

Во многом не согласен с автором, в особенности цитатой выше. Такое ощущение, как будто человек потратил вечерочек, чтобы попытаться разобраться с CMS.

Я в одиночку за 3 месяца написал и поддерживаю проект на октобере для большой турфирмы, где около 700 гидов и около 200 сотрудников 4 странах делают продажи экскурсий, авиабилетов, трансферов и т.п. Кроме этого в системе высчитываются комиссии с продаж, выплаты субподрядчикам, транспортные затраты, зарплаты сотрудников и все это в разной валюте и на разных языках + десяток интеграций с разными системами, будь то центробанки стран, в которых работает система, или карты гугл, с помощью которых вычисляется расстояние от точки А до точки Б, чтобы расчитать приблизительные затраты на бензин в зависимости от страны, или же автоматические рассылки инвойсов субподрядчикам, где на помощь приходят Queues.

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

И все работает как швейцарские часы, ничего не падает. Так что у вас видимо проболема была в плохо настроенном сервере или в разработчике. 

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

по сути:
из всего что вы перечислили я согласен с пунктом 2 - мне не нравится, что в twig шаблонах можно использовать php.
но, тут есть нюанс, вы можете не писаться php-код в twig шаблонах. Если вам нужен код, чтобы передать какие-то переменные в шаблон страницы, вы можете создать компонент, например newsPage и передать все параметры через него (в методе onRender например).

остальные пункты либо полностью субъективны, либо вводят в заблуждение, как например пункт 3, где вы говорите, что вы нет контроля над процессом создания моделей, миграций, контроллеров. При этом не приводите никаких примеров. На самом деле в этом плане octobercms ничем не отличается от laravel, процесс создания примерно такой же.

мое мнение, на данный момент это лучшая cms из того что есть. Именно лучшая, а не идеальная. А создаст кто-то более качественное решение - я первый кину камень в october.
@Может вы не замечаете, как переходите на личности в пылу обсуждения?@ 
Вас задело слово "глупости", извините.

 @Что с чем вы сравниваете?@
Я ничего не сравниваю

@Про мой плохой код и мои плохие решения кто написал?@
Вы с чего вдруг решили рассказать что мне делать "Начните с MVC и дальше по нарастающей: SOLID, DI, DRY" 
Вы решили как это почему то происходит во всех ваших дискусиях (комплекс какой-то наверно") , рассказать какой вы великий гуру " Я пишу на 3 языках и знаю с пяток фреймворков. Не хватало мне еще изучать всякую гнусность, созданную для тех, кто не может осилить язык программирования и принципы проектирования. " .  На что и получили ответ, что все, что вы выкладывали, такие себе поделки и человек позиционирующих себя так как вы, явно такого не допустит"

@Вы от чего-то там фанатеете, я же нет.@ 
Откуда вы знаете от чего я фанатею, что так уверены что вы не фанатеете??

@И единственное к чему я в итоге пришел, так это то, что ЛЮБАЯ CMS - это зло по своей природе.@

То есть во всех 100% случаев, не зависимо от задач/бюджета/сроков , делать на фреймворке или вообще с нуля лучше, чем на цмс? Серьезно?

@И если вы не понимаете о чем я вообще говорю, то очень сильно рекомендую ознакомится с Django@

Я работал с джанго и там проблем тоже хватает.

Классно кстати с вами общаться, когда вы игнорируете вопросы, что-то выдумываете и пишите стены непонятно чего. 
Alexander wrote:
К чему это вообще вы пишите?? Я пришел сюда обсудить вашу статью и статью которую скинул, вы начинаете, что-то придумывать, приписывать мне вещи, которые ко мне не относятся. Щас вообще расписали непонятно что. Вы написали 10 недостатков, вам на них ответили, разве нельзя просто обсудить эту тему дальше?? Почему в каждом обсуждении вы обязательно начнете хватится какой вы мего гуру и великий программист, а потом расскажите что все говно?? Вы высказали свое мнение по октобер, мне оно интересно, я вам скинул статью где мнение другое, в надежде на то, что мы будем обсуждать эти темы, зачем вы все сводите не пойми к чему...
Может вы не замечаете, как переходите на личности в пылу обсуждения? Что с чем вы сравниваете? Мои кастомные решения на фреймворке и опенсорс CMS, которую пилят в сообществе? Про мой плохой код и мои плохие решения кто написал? Не вы, кто-то другой? Кто захотел посмотреть код этого блога и найти там 10 недостатков? Что с чем вы вообще сравниваете, теплое с мягким? Это не обсуждение в принципе! И даже не холивар. Вы от чего-то там фанатеете, я же нет. Мне каждый день приходится писать на чем придется, так как у меня на работе нет единой системы, а множество разношерстных проектов.  А значит есть с чем сравнивать. И единственное к чему я в итоге пришел, так это то, что ЛЮБАЯ CMS - это зло по своей природе. О чем я не однократно писал на страницах своего блога. А Октобер - это зло в квадрате. Потому что, якобы, использует мощь и силу фреймворка, хотя на самом деле извратило принцип и назначение фреймворка, используя его как переделанное ядро, а не как надстройка над ним в виде пакетов. И если вы не понимаете о чем я вообще говорю, то очень сильно рекомендую ознакомится с Django! Вот там вы и увидите фреймворк с человеческим лицом, и со всем кастомизируемым бекендом. Который построен таким образом, что Октобер кажется жалкой и примитивной пародией, даже и не знаю на что. И изменить мое мнение об этом не возможно никак и никогда! Тут нет поля для обсуждения вообще и в принципе.
К чему это вообще вы пишите?? Я пришел сюда обсудить вашу статью и статью которую скинул, вы начинаете, что-то придумывать, приписывать мне вещи, которые ко мне не относятся.  Щас вообще расписали непонятно что. Вы написали 10 недостатков, вам на них ответили, разве нельзя просто обсудить эту тему дальше?? Почему в каждом обсуждении вы обязательно начнете хватится какой вы мего гуру и великий программист, а потом расскажите  что все говно?? 
Вы высказали свое мнение по октобер, мне оно интересно, я вам скинул статью где мнение другое, в надежде на то, что мы будем обсуждать эти темы, зачем вы все сводите не пойми к чему...
Alexander wrote:
Выложите код этого сайта и я найду 10 недостатков( только нормальных, а не таких как вы выше написали). Писать красивые слова про паттерны и архитектуру это одно, а вот действительно их понимать и применять там где нужно это совсем другое.
Вы меня конечно простите за грубость, но кто вы вообще такой? Все мои работы на виду, и их очень много. От таких как вы я слышу только о том, что все они ужасны. Но своим прекрасным, что-то никто делится не хочет (а может нечем?). Да и кому судить, хорошо у меня сделано или нет? Вам что-ли? Так и для этого у меня тоже есть аргумент, мы сейчас спорим у меня на проекте, а не у вас! А это уже о чем-то да говорит. Я реально разрываюсь между работой, ведением блога, и созданием опенсорса. А приходят такие "гении", как вы и рассказывают мне, что все говно. Говно по сравнению с чем? Со сферическим конем в вакууме? Покажите свой блог и мы сравним. Или вы создадите прекрасный блок из парочки модулей в вашей любимой CMS и будете чрезмерно этим горды? Подключите систему статистики, нажав на одну кнопку и будете меня тыкать носом, как вы быстро и качественно создали систему статистики? Я уже устал от этих разговоров, где мне рассказывают, что у меня все отстой, а вот эти рассказчики нереально круты. Кругом одни диванные воины и крутейшие специалисты, вот только никто ничего предъявить не может. За сим откланяюсь.
Почему вы в каждом своем ответе, что-то выдумываете?

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

Выложите код этого сайта и я найду 10 недостатков( только нормальных, а не таких как вы выше написали). Писать красивые слова про паттерны и архитектуру это одно, а вот действительно их понимать и применять там где нужно это совсем другое.
Alexander wrote:
Если создали финансовый сайт на цмс, то это проблемы тех кто создал. Покажите мне хоть одну цмс с отличной архитектурой и кодом? Это про цмс как бы, они все такие.

@Я пишу на 3 языках и знаю с пяток фреймворков. Не хватало мне еще изучать всякую гнусность, созданную для тех, кто не может осилить язык программирования и принципы проектирования. @ Ахаха, вот просто смешно, учитывая какой ужасный код вы выкладывали.

@А ваших аргументов я не услышал вообще@ - Статью не пробовали прочитать? P.S. Осильте уже с вашими кучами лет опыта, просто мультицитирование в коментариях, гораздо удобней будет
Если вы говорите о ЦМС, да еще и фетишируете на нее, то это сразу показывает, чем вы занимаетесь. Ужасный код или прекрасный код, но я пишу статьи на своем блоге, который я создал с нуля на Ларе 5.4. Здесь все сделано только своим кодом, и регистрация, и авторизация, и комментарии и система лайков/дизлайков, и статистика, и управление сообщениями, загрузка и управление изображениями, вся админка, вообще все! И это не самый сложный проект.  Что показать можете вы? Тоже касается подколок и с мультицитированием.
Если  создали финансовый сайт на цмс, то это проблемы тех кто создал. Покажите мне хоть одну цмс с отличной архитектурой и кодом? Это про цмс как бы, они все такие.

@Я пишу на 3 языках и знаю с пяток фреймворков. Не хватало мне еще изучать всякую гнусность, созданную для тех, кто не может осилить язык программирования и принципы проектирования. @

Ахаха, вот просто смешно, учитывая какой ужасный код вы выкладывали. 

@А ваших аргументов я не услышал вообще@ - Статью не пробовали прочитать?

P.S. Осильте уже с вашими кучами лет опыта, просто мультицитирование в коментариях, гораздо удобней будет
Alexander wrote:
Глупости в ваших аргументах. Обычно такое происходит, когда разбирался в проекте( в данном случае October). Что-то не понял, что-то не понравилось, что-то не так как привык и сразу "какая ужасная цмс".
Почитайте про паттерны проектирования! Начните с MVC и дальше по нарастающей: SOLID, DI, DRY и так далее. Вы кайфуете от этой подделки? Ваше дело - наслаждайтесь! Если вы пишите лендинги и сайтики с пятью сущностями, то я понимаю вашу радость. А когда на этой ботве создали финансовый проект, который падает день через день. На этот ужас ищут специалистов, которые такие решения стороной обходят, и найти не могут. В шаблонах каша из пхп кода и аяксовых скриптов, подгрузка ассетов происходит откуда-то из кишок, а на проекте три сотни мутно названных классов, в которых, в том числе и обращение к базе и генерация скриптов на лету и т.д. Желаю вам всем эти счастьем наслаждаться, как можно дольше. Я пишу на 3 языках и знаю с пяток фреймворков. Не хватало мне еще изучать всякую гнусность, созданную для тех, кто не может осилить язык программирования и принципы проектирования. А ваших аргументов я не услышал вообще. Все крутится вокруг того, что это я не распробовал, и какая няшная штучка.
Kirill wrote:
Так, а в чем глупость-то?
Глупости в ваших аргументах. Обычно такое происходит, когда разбирался в проекте( в данном случае October). Что-то не понял, что-то не понравилось, что-то не так как привык и сразу "какая ужасная цмс".
Alexander wrote:
Сколько глупостей в статье
Так, а в чем глупость-то? Нравится Октобер - в добрый путь. Здесь мое мнение, в вашей статье ваше мнение. Но я ведь не называю ваше мнение глупостью. Хотя у вас все свелось к "не осилил Друпал 8".

Ужас ссылка, вот покороче https://goo.gl/UQPdru )

Сколько глупостей в статье
Почитайте на досуге http://blog.sozonov-alexey.ru/post/159686575990/%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D0%BA-%D0%B4%D0%BB%D1%8F-%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE-%D0%B4%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D0%BD%D1%81%D1%82%D0%B2%D0%BE-%D0%B4%D0%BB%D1%8F-%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B3%D0%BE
yuran wrote:
Согласен, что чистый фреймворк всегда лучше чем cms.... Лишь бы на фреймворке профи делал, а не человек, осваивающий фреймворк:) Насчет одностраничника или бложика думаю тоже October ни к чему, есть уже куча проверенных и более удобных cms под эти цели.
Согласен полностью. Если уже и стоит задача сделать что-то простое, то лучше взять Вордпресс, для которого есть миллион решений и огромное количество специалистов. Почему появляются такие велосипеды, как Октобер и подобные ему - для меня загадка. Ведь разработчики проделали колоссальную работу, чтобы создать эту CMS.
Согласен, что чистый фреймворк всегда лучше чем cms.... Лишь бы на фреймворке профи делал, а не человек, осваивающий фреймворк:)   Насчет одностраничника или бложика думаю тоже October ни к чему, есть уже куча проверенных и более удобных cms под эти цели.