Решив заняться есервисами, в очередной раз столкнулся с выбором: создавать ли с нуля велосипедный парк, либо же арендовать один из существующих. В рамках оценки перспективности второй стратегии предполагаю оттестировать функциональность и юзабилити–решения, применяемые в среде популярных бесплатных CMS–систем и web–фреймворков.
Часть первая: CMSки.
Оказалось, почти все бесплатные CMS–системы написаны на странном языке PHP и с непременным использованием СУБД MySQL. Видимо с целью максимального охвата, ибо PHP с MySQL суть непременный атрибут дешевых хостингов, что сложно сказать о питонах, верблюдах и прочих.
WordPress
Первым мне в руки попал наиболее часто встречающийся в сети движок: Wordpress. Продукт обладает довольно обширным, хотя и зело разношерстным сообществом , в том числе и русскоязычным (хотя русское дело тёмное ). Движок используется примерно на 70% так называемых автономных блогов. Эта радость входит даже в дистрибутив Debian GNU/Linux (и, например, Debian package of the day работает именно на нём), но дабы побыть настоящим джедаем, ставлю последнюю версию с официального сайта.
Первое окно порадовало необыкновенной возможностью обойтись без ручной правки конфигурационного файла, да и в дальнейшем инсталляционный интерфейс не представил каких–либо сложностей и менее чем через минуту я уже был в главном административном интерфейсе.
Работает административный интерфейс весьма шустро, сами страницы также довольно быстро отображаются. Кроме того, весьма понравилась возможность импорта блога из множества иных блогодвижков.
Возможностей в целом не сказать, чтобы много, но того, что идёт в поставке движка вполне хватает для множества виденных мною wp–блогов.
Первыми же установленными плагинами оказались SEO tittle tag, помогающий установить произвольный заголовок, а не ту жуть, что по умолчанию (сначала идут описания всех разделов, куда включен пост, и лишь затем идёт заголовок поста — людям и поисковикам это не очень нравится, лучше быть наоборот), LJ–кросспостер, Google Sitemap, RusToLat (без этого плагина адреса русских постов рискуют быть натурально русскими, что обычно не очень красиво выглядит в строке адреса), Subscribe to comments и WP–print. Плагины как правило устанавливаются простой распаковкой оных в папку wp–content/plugins.
О хорошем: шустрый легкий и простой блогодвижок. Вероятно достаточный почти всем, кто хочет установить домашний блог и при этом не особо заморачиваться по его поводу.
Теперь о недостатках. Как видите на предыдущем скриншоте располагается календарь. Я не вижу в оном ни малейшего смысла. Вряд ли кто из читателей данного блога когда–либо задастся вопросом «а что он писал ровно год тому назад». Календарь надо удалить. Как? Был бы это, скажем, google blogger, то весьма просто: page layout–>выбираем лишний блок->edit–>delete. Тут же нам предлагается только самостоятельно поправить PHP–код темы.
Однако, не очень удобно. Предпочитаю редактировать код в самых исключительных случаях.
Первый недостаток — нет менеджера блоков, отображаемых на странице.
Идём дальше. Я, как пользователь блогосервиса от ЖЖ привык к древовидным комментариям, тогда как WordPress по умолчанию умеет только плоские. Но чу! Для WordPress есть плагин, обеспечивающий и такую функциональность. Что же, что же он нам предлагает в своём INSTALL.txt файле?
To install brians threaded comments, do the following: 1) Before beginning, make backup copies of [top]/wp–content/themes/[yourtheme]/comments.php 2) Copy briansthreadedcomments.php to [top]/wp–content/plugins/ 3) Copy comments.php to [top]/wp–content/theme/[yourtheme]/ 4) Activate brians threaded comments from the plugin page
И да, оно работает. Но для обеспечения этой работы пришлось модифицировать файл, относящийся к совсем другому модулю . Собственно, как я с огорчением отметил, и многие иные плагины также требуют модификации кода темы, а то и вовсе ядра. Как они при этом предполагают возможность легкого перехода на следующую версию ядра, плагина, темы… Не представляю.
Недостаток второй: отсутствует полноценная работа с плагинами. Очевидно предполагается, что данный блогодвижок будет использоваться в поставке по умолчанию, разве что с весьма небольшим числом внешних модулей.
Недостаток же третий становится очевидным, стоит лишь взглянуть на число постоянно обнаруживаемых багов в обеспечении безопасности работы данного блогодвижка. Чего стоит взлом раздающего сервера , в силу чего оный некоторое время раздавал версию wordpress с встроенным back–door. Впрочем, разработчики весьма оперативно выпускают заплаты, которые вам придётся столь же оперативно применять. Издержки популярности.
Общий итог:
- плюсы: быстрый и простой, встроенные по умолчанию функции для блога довольно неплохи
- минусы: неаккуратный (небезопасный) код, отсутствие понятия о блочном представлении страниц, нет продуманной системы работы с плагинами
Вывод:
Великолепный кандидат на блог начального уровня, особенно если все вопросы по поддержке движка берёт на себя хостер.
Movable Type
Второй по числу автономных инсталляций (около 1%) бологодвижок это MovableType от SixApart . До недавних пор он был довольно коммерческим (бесплатно предоставлялась только однопользовательская лицензия), что и теперь очень заметно. Во первых, он единственный из рассматриваемых в данном обзоре не содержит в стандартной поставке каталога doc/ или хотя бы файла INSTALL.txt (README.txt тоже нет). За документацией предлагается посетить официальный сайт.
Впрочем, это не принципиальная проблема. Мне удалось догадаться, где лежит конфигурационный файл, куда его надо скопировать и что там изменить. Процесс инсталляции в дальнейшем вполне прост.
Очень удобно то, что поддерживается изрядное количество баз данных, включая и SQLite, соответственно в данном случае нет нужны требовать от хостера высокоскоростного доступа к MySQL или ему подобным. Административный интерфейс вполне интуитивен (хотя и слабо структурирован).
В силу коммерциализированности, имеется очень малое число доступных тем, Но зато (как и в Wordpress) можно создать свою правя шаблон прямо в административном интерфейсе.
]
Встроенная функциональность довольно обширна (всё таки практически коммерческий продукт), внешних плагинов число невелико (в силу той же причины). Система плагинов при этом кажется довольно невнятной, в частности озадачивают постоянные отсылки к Six Apart Ltd.
Killer–feature MT является возможность генерации полностью статичной версии страниц блога (до последних версий это был единственный вариант работы движка). И это действительно жутко удобно, особенно если у вас не высокопроизводительный dedicated сервер, а, к примеру, обыкновенный shared хостинг. В таком случае, после добавления очередной порции данных на сайт нажимается волшебная кнопка rebuild site, запускающая на ближайшие нескольких минут процесс перестройки сайта. При этом, ваши посетители не ждут лишних десятых долей секунды (а то и, о ужас, единиц секунд) пока им движок блога сгенерирует индивидуальную копию текущей страницы — отображение страниц начинается мгновенно.
Итого:
За счет возможности генерации статической версии сайта, MT можно считать практическим лидером по критерию скорости. Также, данный движок сильно выделяется на фоне прочих своей неприхотливостью. Для работы ему достаточно наличия perl с модулем для sqlite.
Недостатком является ровно то же, что и для wordpress. Отсутствует понятие о блочном дизайне, плохо реализована работа с плагинами (в частности, плагин для древовидных комментариев под последнюю версию MT я так и не нашел, только под предпоследнюю), кроме того не было замечено достаточно активного сообщества пользователей вокруг данного коммерческого проекта.
e107
Следующим был установлен e107 . Я уже привык, что все предыдущие движки распаковывались в отдельный — свой — каталог. Этот доказал, что не стоит расслабляться, и распаковался в каталог текущий, уже несколько и без того занятый. В остальном, инсталляция не представляла из себя каких–либо сложностей, разумеется конфигурационные файлы вручную модифицировать не пришлось, хватило и web–интерфейса. Удивлён, что подобное ещё не все умеют.
Главная по умолчанию страница выглядит вполне терпимо (хотя и имеет фиксированный дизайн, что очень зря с их стороны). Но вот административный интерфейс уже ошарашивает своей не структурированностью (так и вспоминается «панель управления MS Widows»).
Впрочем, были и приятные находки. Например, понравилось что можно в разделе выбора темы сразу видеть результат её применения («предпросмотр темы»), чего я не отметил боле ни у одной из CMS. Однако, хорошо (на мой вкус) выглядящей темы я так и не обнаружил.
Единственный способ модификации внешнего вида, похоже, всё та же правка theme.php в каталоге выбранной темы. Зато, есть нечто вроде менеджера блоков, называемых тут отчего–то «меню».
Итого:
Движок впечатлил относительным богатством встроенных функций, уравновешивающимся довольно небольшим количеством расширений. Минусы — некоторая хаотичность функциональности, вперемешку идут действительно полезные функции и то, что даже сразу и не понятно когда и зачем было бы нужно. Общее впечатление: потенциал у системы есть, но необходимо достаточно много уделить оной времени, дабы довести функциональность и дизайн до терпимого уровня.
Typo3
Следующий по очереди Typo3 обладает наибольшим (в рамках данного обзора) дистрибутивом: 8 мегабайт.
Автоинсталлятор встретил меня радостными сообщениями (см. картинку). Так как на localhost мне прятаться не от кого, можно и chmod -R 777 . сказануть, что излечило все баги, кроме последнего. Обычные параметры (login, password, db name, db host, db port, tables prefix) тут с неизвестной мне целью (не травмировать нежных клиентов обилием выбора на единицу площади страницы?) разделены на несколько этапов.
Похоже, о tables prefix этот движок и не подозревает. Система грузится довольно неспешно и выглядит несколько контринтуитивно. Обратите внимание, скажем, на пункт “Configuration”. Или на то, что я увидел открыв раздел Page (попытается создать новую страничку).
Оказалось, что от пользователя ждут интуиции. А именно, что что оный догадается нажать на New TYPO3 site правой кнопкой мыши, закроет броузерное окно, которое выпадает по данному событию и под ним уже обнаружит (если оно не успеет закрыться) контекстное меню движка. Впечатляюще. Неожиданно введя русский Pagetittle, я достиг наличия кракозябров в административной панели.
Собственно, на этом я знакомство с движком и свернул. Нет желания наблюдать, как оный борется за монополию на контекстное меню с броузером, нет желания тратить время на изучение документации к движку, который не в состоянии отображать заголовки в UTF. Я могу поверить, что путём многочасового исследования можно постичь замыслы разработчиков, можно сделать среду весьма комфортной, быстрой и удобной. Могу. Но пока лишь ощущаю, что эта система сделана явно не для людей.
Ez publish
Ez publish встретила меня оригинальным сообщением: “Unsupported PHP version”. И действительно, у данной системы у единственной есть весьма тонкий вкус к софтовому окружению. В частности, PHP нужен исключительно версии 4.4 и ни в коем случае не 5. Также, рекомендуется в php.ini выставить 64 мегабайта на процесс и более чем несколько минут на оного процесса долгожительство. В противном случае (я пробовал) оно не живёт. Например, первичная инсталляция требует непрерывной работы скрипта более, чем две минуты. Однако.
Ну да ладно, поставил я php4 и модифицировал php.ini, за что был награждён сообщением не менее оригинальным, но демонстрирующим заботу авторов CMS о своих пользователях.
Эта система не вопиёт подобно typo3 об ошибках, но разумно предлагает готовые команды для ошибок тех исправления. Похвально. Кстати, и каталоги в разделе “Missed some directories” оно само создало, как только я применил свой chmod -R 777 патч. Весьма похвально. Надеюсь, со временем подобный уровень заботы о пользователе станет среди CMS обычным делом.
Понравилась поддержка изрядного количества языков (как для интерфейса, так и для многоязычных сайтов). Не понравилось, что не смотря на то, что я загрузил с сайта самый полный из бесплатных вариантов, оно всё таки хочет догрузить из сети ещё что–то. Параноики — берегитесь!
Интерфейс администратора довольно неторопливый и несколько озадачивающий.
Отмечено обычное для коммерциализированных CMSок обилие встроенный в дистрибутив функций. В частности, понравилось разнообразие опций кэширования, есть хорошая надежда на то, что сайт под управлением данной CMS будет достаточно быстрым.
Не понравилась сложность и перегруженность интерфейса. Требуется время, чтобы начать тут более–менее ориентироваться.
Общее впечатление: сложная, относительно закрытая CMS, рассчитанная на некий более–менее определенный тип сайта (и уж определенно не на блоги).
Joomla (бывшая Mamba )
Далее, дабы немного отдохнуть от излишне навороченных CMS я попробовал нечто позиционируемое, как простое. Установка действительно оказалась довольно простой. Довольно забавный дизайн главной панели.
Работает несколько неспешно. Функциональность особо не впечатляет, всё вполне красиво, но не сказать, чтобы удобно. В общем, я явно не принадлежу к целевой аудитории данной CMSки.
Впрочем, по некоторым мнениям, дання CMS одна из лучших. Хм…
Geeklog
Также, я попробовал некий загадочный geeklog, но получил “Unfortunately, an error has occurred rendering this page. Please try again later.” вместо приглашения к установке. И, разумеется, никакой дополнительной информации в error.log.
UMI.CMS
Пытался также установить UMI.CMS. Оказался впечатлен использованием русских букв в именах файлов. Да, я знаю, у меня недонастроена перекодировка в распаковщике, надо полагать. Попытался запустить install.php, получил другую ошибку (см. картинку).
Надо полагать, ничего страшного. Просто у меня не установлен Zend encoder (ну нет его в Debian GNU/Linux дистрибюции).
Авторы, похоже, опасаются, что пользователи бесплатной версии их продукта могут в коде увидеть нечто такое, что изрядно скажется на продажах коммерческой версии движка. Собственно, один этот фактор закрывает для меня возможность применения данной CMS в своих проектах. Ежели поставлю когда себе zend encoder (сайт коего требует заполнить изрядную регистрационную форму прежде, чем можно будет начать разговор о загрузке программы), то вероятно дополню данный обзор ещё одной системой, судя по некоторым отзывам, не из худших. Разумеется, использовать то, к коду чего у меня нет доступа я всё равно не буду, но любопытно будет оценить юзабилити решения да функциональные возможности.
Drupal
Крайней для данного обзора CMSью стал Drupal (номер два, по предыдущему рейтингу , и номер один, например, по обзору от IBM . Достаточно простая установка из единственного шага: указания всех необходимых параметров доступа к базе данных.
Вполне симпатичная главная страница, подробно описывающая что и как.
И тут проснулась интуиция: «оно!». «Но почему?» — удивился я — «Ведь это PHP , что хорошего может быть сделано на PHP ? Да и, положим, я даже ещё не знаю, есть ли вокруг этой CMS хоть какое–то сообщество». Интуиция же только подмигнула — «верь мне».
Сообщество таки обнаружилось. Даже два: drupal.ru (привычно — для русского сайта — малоактивный) и drupal.org (по данным alexa.com , данный сайт собирает около тысячной доли ото всех посетителей Интернета, что, однако, впечатляет и превышает аудиторию другого известного мне сайта на d — debian.org , с сообществом коего я немного знаком).
Предлагается неплохо выбор тем (встроенных, а также созданных сообществом на соответствующих сайтах ). Темы тут пишутся с использованием одного из нескольких поддерживаемых шаблонизаторов (по умолчанию, это PHPTemplate), что вполне удобно в применении и (что приятно) практически не вынуждает редактировать код PHP. Присутствует возможность устанавливать разные темы для основного сайта и для административного интерфейса (жаль, что без возможности предпросмотра).
Есть тут и блочное управление размещением данных на странице (жаль, не такое, как на Google Blogger).
Достаточно прозрачное управление менюхами, модулями (так тут зовут аддоны, или расширения), при этом в отличии от wordpress устанавливаемые мною модули не требовали какой–либо ручной доработки в файловой системе, друг с другом они также конкурировать и не пытались. Как пример серьёзного подхода, могу привести то, что тут не забыли предусмотреть механизм обновления как расширений, так и самого Drupal без особого вреда для данных, хранимых в базе — после обновления расширений запускается скрипт update.php, который и осуществляет все правки (например, создание/изменение/удаление таблиц базы), необходимые для перехода с одной версии на другую:
Отмечаю также продвинутый подход к структуризации содержимого, а именно жесткое разделение на фолксономию (суть теги) и таксономию (суть иерархия категорий), что, впрочем, несколько облегчает модуль Category, объединяющий оба подхода.
Вокруг Drupal существует действительно активное сообщество, написавшее изрядное количество модулей почти на все случаи жизни.
Стоит отметить также ролевой подход к разграничению полномочий пользователей.
Кэширование в основном нацелено на незарегистрированных пользователей, которым из базы достаётся уже готовая к отображению страница, но не только. Так, например, можно кэшировать отдельные блоки с довольно богатым выбором вариантов.
В разработке находятся модули обеспечивающие более серьёзные алгоритмы кэширования, включая выдачу полностью статического контента, примерно как в MT. Присутствует также небесполезная возможность отключать выбранную часть функциональности сайта начиная с определенного уровня нагрузки (throttling).
Впрочем, сказков не бывает, есть в Drupal и недостатки. Например, в модулях встречаются ошибки. Так, сразу по установке модуля gsitemap я обнаружил две откровенные баги. Думал, как себя повести — как конечному пользователю, али в роли программиста. Попробовал первый вариант. Написал на форум , а также в #drupal–support канал. Ноль реакции. Что–же, пришлось править баги самолично. Благо они оказались элементарные. Поправил и, понятно, послал разработчикам описание с патчем. Разработчики сообщили, что в общем они уже в курсе и в ближайшей версии всё это будет включено. Через пару дней Google Alert отрапортовал об обнаружении thanks to меня в changelog данного модуля, а update notifyer блога уведомил о выходе обещанной новой версии. Однако, в новой версии, чуть осмотревшись, я обнаружил ещё пару багов. Несколько более хитрых, но куда как менее важных. Первый был поправлен на следующий же день после того, как я об оном сообщил ментейнеру (вышла очередная версия), второй оказался ошибкой не в механизме работы gsitemap, что мне ментейнер оперативно и показал. Итого: оценка общения с сообществом «обыкновенно» (уровень помощи не выше и не ниже, чем, скажем, у сообщества пользователей Debian), оценка общения с поддержкой gsitemap «весьма оперативно». Надеюсь, прочие модули поддерживаются не хуже.
С gsitemap всё было просто. Случалось же, я иногда принимал за баги фичи. Drupal обладает существенно более низким входным порогом, нежели скажем typo3, но он всё же сложнее того же wordpress. Рекомендую помнить, что Drupal был создан всё же человеком , что существует несколько веток , что он активно развивается , и у него есть план .
Drupal это, разумеется, отнюдь не только блогодвижок, но полноценная CMS. На нём могут строится как блоги , так и новостные сайты , форумы и многое другое .
Возможно стоит также ознакомится с кратким русскоязычным или англоязычным обзором функциональных возможностей.
Несколько более подробно данная CMS обозрета на сайте IBM , правда они использовали более старую версию CMS, нежели текущая пятая. IBM также вкладывала деньги в разработку данной CMS, а Google ежелетне финансирует развитие как очередного десятка–иного модулей Drupal так и самой системы в целом.
Итог первого шага
Первичный осмотр достопримечательностей в среде CMS завершен. Локальный блог запущен . А я перехожу к изучению возможностей современных web–фреймворков. Однако, любопытно, на сколько легко будет реализовать реально необходимую мне часть функциональности того же Drupal на, скажем, django.
А именно:
- хорошее кэширование всего на свете и с богатым выбором правил обновления кэша, возможность throttling`а
- возможность легкого добавления/удаления/перемещения отдельных отображаемых блоков
- удобное API для создания расширений базовой (CORE) функциональности движка, принципиальна возможность комфортного подключения, отключения и обновления дополнительных модулей
- ролевая модель работы с пользователями
- категоризация материала, с удобным отображением структуры сайта в меню и «хлебные крошки»
- функциональность некоторых Drupal`овых модулей. Например, openid, autotimezone, gsitemap, pathauto, ping, search и typografica
- многоплановая защита от спама — кстати, уже через неделю после появления блога в сети был обнаружен первый СПАМ–комментарий (разумеется, только лишь в очереди на бан, не на общедоступном сегменте).