Что должна уметь правильная CMS?

сентября 23, 2011  |  Published in CMS, Новости  |  9 Comments

Я уже писал о том, что работаю над QuasarCMS — CMS’кой на Rails. После нескольких недель разработки зашел в тупик. То, что я сделал нельзя назвать CMS, это скорее приложение на Rails реализующее функционал блога + несколько различных плюшек, которым я хочу заменить нынешний движек RubyDev — WordPress.

Вы уже заметили, что я начал псать о RSpec и обещал написать большую статью по Git. Все это длятого, чтобы новички могли присоединиться к проекту и поучаствовать в нем набираясь опыта. Хочется побыстрее довести работу до некоторой кондиции, когда можно уже пригласить людей для совместной разработки. Скоро, все желающие смогут поучаствовать в разработке CMS. Причинами того, что все так затянуто является мой поиск работы, учеба, иногда, просто лень, и то, что я стаю на распутьи выбора того, какой должна быть CMS. Поэтому хочу задать читателям несколько вопросов:

1. Что должна уметь CMS при работе из коробки?

2. Как лучше сделать расширения: в виде gem’ов или в виде какого-то собственного формата.

3. Что лучше использовать для конфигураций? Сейчас конфиги реализованы на основе yaml, в будущем планирую использовать json (говорят с ним будет значительно быстрее, чем с yaml), но опять не знаю правильный ли это выбор. В директории с конфигами хранится файл base.yml в котором хранятся настройки примерно в таком формате:

property:
  description:
    ru: бла-бла-бла
    en: blah-blah-blah
  value: 
  default: true
  type: string

и так для каждого свойства. type используется для построения формы (string — text input, text — textarea, file — file input, list — select и т.д.). Для каждого расширения предполагается использование такого файла, например my_ext.yml. Каждое расширение состоит из набора файлов + генератора, который из расбрасывает в нужные директории. Все это мне кажется сильно громоздким (следует упомянуть, что у меня фобия низкой производительности). В общем жду совета как все это организовать. Основное требование чтобы настройки грузились только один раз, а не при каждом запросе.

4. Представление страницы. Сдесь я вообще извратился, код еще не написал, но перепортил тону бумаги на проектирование того как и что должно работать. Остановился на концепции потоков. Что это? — Эту тему я сам придумал, но возможно она уже где-то или везде=) применяется, но под другим названием. Суть заключается вот в чем:
Весь контент помещается в общий поток main.
Поток main может делиться на множество других потоков:

main
|-head
|-content
| |-article
|
|-rightbar
  |-column1
  |-column2

Таким образом любой поток — это ветвящаяся структура — хэш в которой кроме hash key имеется целочисленный ключ обозначающий порядок. Рассмотрим например ветку rightbar, она состоит из веток column1 и column2, это означает, что будет использоваться 3-х колоночная тема. В column1 могут содержаться, например: категории(1), последние статьи(2), форма входа(3). В column2, например: рекламный блок(1), теги(2). Настройка потока происходит, разумеется в настройках темы. То есть нельзя будет с одной темы перейти на другую без необходимости заново распределять блоки контента, или как стало модным называть их — виджеты. Здесь опять воспрос: стоит ли использовать такую схему или нет. Предлагайте свои варианты.

5. Пользователи, какими они должны быть? Использовать роли (admin, moderator, user, guest) или что-то еще?

6. Вам хочется чтобы CMS работала без необходимости лезть в код при этом была очень страшной и огромной с сотнями настроек или такой, чтобы можно было легко открыть код и что не устраивает — подправить в ручную. Как тогда реализовать обновление?

7. Вообще интересуют любые пожелания.

Responses

  1. says:

    сентября 23, 2011 at 11:43 (#)

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

    Главной проблемой распространения любой CMS на RoR я считаю сложность деплоя на хостинг. Нормальных хостингов с RoR и RVM я не видел, а те что есть очень дороги. А для настройки виртуального сервера рядовому пользователю не хватит знаний.

  2. dimanon says:

    сентября 23, 2011 at 14:02 (#)

    1. Я думаю для начала CMS сделать простой для наполнения базы данными… а потом голосованием добавлять фичи.
    2-й и 3-й вопросы точно не к новичку :) но yaml по-моему красивее, хотя и во втором разобраться просто.

  3. admin says:

    сентября 23, 2011 at 15:03 (#)

    JonNIBravo, для CMS на Rails хостинги — совсем не то если сайт имеет посещаемость от 1000 пользователей. Мне кажется, что такие CMS — удел крупных сайтов, которые хостятся не на хостингах за $4, а на VDS, хотя бы за $15 c 256 оперативы и т.д.

    dinamon, JSON достаточно читабельный формат, хотя и устпает в этом YAML’у. Зато JSON можно хорошо сжать, а вот с YAML этого не выйдет. Кроме того, сам конвертер YAML в Ruby хэш более медленный, чем для JSON. Тут однозначно выигрыш в производительности. Нужно просто подумать, о других способах хранения конфигов, например о хранении их в БД, однако, на сколько я понимаю. их тогда нужно будет загружать при каждом запросе, что не есть хорошо. В любом случае о том, чтобы использовать CMS в продакшене после первого релиза речи не идет, нужно будет однозначно много чего задачивать, от многого отказываться.

  4. dimanon says:

    сентября 23, 2011 at 15:27 (#)

    ну так json по версии википедии является подмножеством yaml-a,
    и по возможностям yaml более мощный, ну это так моё мнение, по поводу git-a, если кто-то уже более-имение освоился, хоть посмотреть что, да как?

  5. Tankard says:

    сентября 24, 2011 at 12:12 (#)

    По поводу 6го пункта. Я считаю, что CMS на рельсах просто не суждено стать популярной и народной в ближайшем будущем. По разным причинам это и сложность деплоя, но в основном из-за популярности php, к которой руби еще очень не скоро приблизится если вообще когда-нибудь приблизится. У руби своя ниша и с php он не сильно и соперничает.
    Поэтому имхо cms на рельсах нужно делать ориентируясь на программистов или хотя бы на людей которые могут сами что-то делать, а не просто тыкать мышкой на кнопки. Имхо не стоит делать такую же простую в обращении cms как вордпресс или джумла т.к. времени и сил потратишь на это очень много а толка мало будет. Простые люди все равно врятли обратят на нее внимание.
    А вот сделать удобную cms для более продвинутых людей идея хорошая.

  6. admin says:

    сентября 24, 2011 at 14:41 (#)

    Tankard, это да, затачивать под Васю «SuperWebMaster», который в локалке хочет сайт о любимом коте сделать никто не собирается. Первым делом хочу чтобы CMS была удобна для разработчиков. Разработчик берет CMS, настраивает как хочет, дописывает, переписывает, создает расширения и т.д. А патом конечный пользователь вогнан в рамки того, что сделал разработчик. Если что-то нужно — он снова платит разработчику деньги или сам на свой страх и риск лезет в код. Т.е. управление сайтом заточена под пользователя, а разработка под разработчика, но здесь есть проблема в том, что эти области пересекаются и нужно найти какой-то разумный баланс.

  7. says:

    октября 4, 2011 at 04:05 (#)

    Наследование блоков, например на главной странице есть блоки: меню, баннеры, форма авторизации, последни 10 новостей и вывод контент. Тогда внутренняя страница наследуе главную, заменяет своим layout’ом и подменяет например блоки баннеров и последние 10 новостей удаляя их.

    Побольше модулей с возможностью легкой установки, без разницы будут ли это gems, engines или просто заливаемые через админку файлы.

    Такую систему я писал и работаю с ней, правда на PHP. Может в будущем перенесу на Rails
    Вот описывал: и тут продолжение

  8. Ras says:

    декабря 14, 2011 at 09:24 (#)

    — самый классный движок на php вот такой бы для rails и цены cms не будет… И рельсы мне нравятся больше php, так что перспектив много…

  9. Ras says:

    декабря 14, 2011 at 19:24 (#)

    Да, давай делать свой двигатель как было с php fusion, собрался народ и сделали все как надо

Leave a Response

Для подсветки кода используйте BB - коды: [language]...[/language], где language может быть: ruby, javascript, css, html.