Вот и дорос LiveStreet до того, что настала пора делать первый настоящий форк от него. И зовется этот форк – Alto CMS.
Вообще-то, если верить статистике GitHub'а, то ЛС форкнули уже 99 раз. Но Alto CMS – это первый форк, который вышел в свой первый официальный релиз, и который отныне начинает жить своей собственной жизнью. Сейчас мы постараемся дать ответы на вопросы, которые наверняка возникнут в первую очередь. И, пожалуй, самый первый вопрос…
Зачем и почему?
Мы – разработчики. И занимаемся, как правило, не «домашними страничками», а серьезными проектами. И нередко для реализации проектов в качестве движка выбираем LS. И очень часто нам приходится дотачивать и допиливать одни и те же вещи, подрихтовывать и подгонять одни и те же фишки, дополнять и подкладывать один и тот же функционал. Вот мы в один прекрасный день и озадачились – а почему, собственно?Активное продвижение в сторону форка, которое наблюдается у LS – это отлично. Но мы работаем с конечными клиентами, которые хотят решать свои задачи быстро и эффективно. Кроме того, большинству клиентов нужна не «блого-социальная сеть», а нормальный современный сайт. Вот из всего этого и родилась…
Общая концепция Alto CMS
1. Это должен быть движок общего назначения, на базе которого можно создавать сайты самых разных направлений – личных блогов до корпоративных и городских порталов, от общества любителей кошечек до фан-клубов футбольных команд.2. Движок должен представлять из себя не «набор юного краснодеревщика», а, скорее, конструктор Лего с готовыми решениями.
3. При всем уважении к разработчикам и при всем желании максимально облегчить их труд по созданию проектов на базе движка, ключевой акцент делается на том, чтобы облегчить жизнь конечным клиентам во время создания, развития и управления сайтами на базе Alto CMS.
И тут, пожалуй, возникает уже ключевой вопрос…
Что же нового есть в Alto CMS?
Во-первых, мы решили отказаться от жесткого разделения на «просто топики», «опросы-топики», «ссылки-топики» и «топики-фотосеты». У нас есть только топик (или, другими словами, «статья»), который входит в какой-то блог (или «раздел»). И к любому топику вы можете прикреплять фото, опрос, ссылку на источник и т.д. Более того – в движок заложен механизм создания собственных типов контента. Да, теперь вы можете прямо из админки создать свой собственный тип контента со своими полями, настройками и свойствами (более подробное описание работы будет в следующх топиках).Во-вторых, прямо «из коробки» присутствуют такие вещи, как админка, «родной» поиск (без сторонних компонентов), настройка виджетов (это то, что в ЛС называется «блоками») и т.д.
В-третьих, изменен подход к формированию главной страницы сообщества. Мы решили отказаться от кучи крайне редко используемых фильтров и несколько иначе формировать подборки. И если говорить о главной странице сайта вообще, то мы, исходя из своего опыта, решили, что вовсе не обязательно она должна состоять из списка последних топиков, а подход к ее формированию и оформлению следует сделать более гибким.
Есть еще множество мелких (и не очень) изменений, и все в одной статье вряд ли опишешь. И, разумеется, в этой версии применены уже все обновления безопасности последнего официального релиза LiveStreet 1.0.3.
Но как бы не был наш форк «клиенто-ориентированным», не будем забывать и разработчиков. А им ведь наверняка интересно…
А что же под капотом?
Пожалуй, одна из ключевых вещей: движок работает под PHP версии не ниже 5.3.Ядро LS, разумеется, претерпело некоторые изменения. Но при этом мы постарались сохранить максимальную совместимость с LS 1.0.2 на уровне плагинов и скинов (совместимость, пожалуй, на уровне 99.83%).
Структура БД немного изменена, но имеется конвертер с LS 1.0.2. И, кстати, о базе – библиотека DbSimple была обновлена, и теперь по умолчанию используется MySQLi с «ленивым» подключением, а также есть поддержка PDO, PostgreSQL, MS SQL и др.
Есть встроенный LESS-компилятор, на подходе — скин на базе Bootstrap в базовой поставке, встроенный обработчик ошибок и полностью переписанная система логгирования, улучшенная (и стандартизированная) поддержка тем оформления, а также множество других «плюшек» и «фишек», которые призваны облегчить труд разработчика по созданию и поддержке сайтов на нашем движке. Серьезное внимание уделено вопросам безопасности. Если попробовать это сформулировать более четко, то получим...
9 фактов об AltoCMS
- Встроенная админка с возможностью расширения сторонними разработчиками
- Установка плагинов прямо из админки, заливкой архива
- Новая упорядоченная система шаблонов с поддержкой разных тем оформления в одном скине
- (скоро!) Bootstrap шаблон. Скины с bootswatch в комплекте. Платные скины, основанные на bootstrap, несложно адаптировать. Адаптация одного из скинов уже сейчас используется на нашем сайте.
- Встроенный LESS-компилятор позволить использовать всю мощь программируемого CSS, при этом не замедляя работы сайта, т.к. компиляция выполняется на стороне сервера
- Настраиваемые типы контента. Жесткие ограничения типов topic/link/photoset/question уходят в прошлое. Все настраивается гибче.
- Потребление памяти снижено на ~20%
- Упрощенная навигация главной позволит не усложнять жизнь вашим пользователям на старте проекта. Убраны устаревшие меню и фильтры, от которых “хабр”-родитель отказался уже несколько лет назад.
- Поддержка и логгирование мультисессий для пользователей. Т.е. пользователь может теперь заходить на сайт из разных мест, с разных устройств без разрыва предыдущей сессии.
И, наконец, многих, думаем, заинтересовал вопрос, а кто же выпустил этот форк? То есть…
А кто такие «мы»?
Отвечаем: мы – это человеки, которые давно известны в LS-сообществе. Итак, основатели форка LiveStreet под названием Alto CMS – это extravert и aVadim. В настоящее время с нами работает еще несколько человек, которые являются кандидатами в нашу команду. И, отставив буквально на минуту в сторонку ложную скромность, мы можем уверенно сказать, что наша репутация, наш опыт и профессионализм явно благоприятно скажутся на развитие нашего форка.Пожалуй, стоит на этом пока остановиться.
Ах да, совсем забыл. Скачать Alto CMS можно тут:
94 комментария
Экстраверт, создай блог для описания багов, что бы не лепить топики с вопросами где попало
Связи с выходом Альто. Вы галерею свою адаптировать будете под этот двиг?
В админке не изменяется рейтинг юзеров.
1. конвертация базы LS -> Alto
2. копирование шаблонов страниц в новое место (из плагинов к шаблонам эешнна)
3. небольшая доработка шаблонов в части создания и отображения топиков
Но по п.3 будем думать, как это упростить, возможно, сможем предложить более простое решение
Все плагины LS должны работать без проблем
github.com/ulogin/ulogin-livestreet/zipball/master
Устанавливаться то он в вашей системе устанавливается, но в окне входа его виджет не появляется — исправьте пожалуйста, ведь в лайвстрит-то он работает
Ещё момент — почему просмотр комментариев в топиках по умолчанию скрыт? Почему кнопки поделится с друзьями по умолчанию скрыты (я обнаружил их наличия только на 2 день тестирования, что же говорить о простых пользователях, которые зайдут на сайт) — очень неудобно.
А если по делу — social не пробовали ставить. Но попробуем, посмотрим, что там не так.
И насчет «почему» — как-то странно ты формулируешь. Тебе важно услышать «почему так»? Или есть предлжения, как это сделать лучше и удобней? И будет здорово, если еще и браузер свой укажешь — поможет в обнаружении и исправлении недочетов, о которых пишешь.
По предложениям, кроме совместимости плагинов и тем:
1. Было бы здорово, если бы комментарии в основной теме не были скрыты по умолчанию
2. То же самое с кнопками «Поделится с друзьями»
3. Ещё заметил глобальную путаницу между топиками и блогами (хотя эта проблема есть и в livestreet) — я например (и думаю что 100% читателей сайтов на основе livestreet), постоянно путаются в поисках нужного топика или блога. Не знаю почему так получается, но именно так. Было бы идеально иметь возможность ВООБЩЕ отключить блоги как класс и оставить только топики. То есть к каждому пользователю привязаны топики. Никаких блогов которые только всё путают. Было бы мега-удобно!
Брузер у меня хром, ось — дебиан.
Ведь что такое по сути блог в контексте лайвстрит — это структуризация топиков по каким то общим моментам. Думаю что в 95% случаев хватает структуризации по автору этого топика. Для остального есть тэги и т.д.
Насчет п.3, правда, до сих пор не встречал такой точки зрения. Но надо будет подумать
Вам спасибо!
Задавайте еще вопросы.
В продолжении темы о запутанности блогов. Созданы топики в персональных блогах. Захожу в главном меню в Блоги. В результате вижу пустоту, так как по умолчанию стоит показывать какие-то коллективные блоги (что это вообще такое?). Чтобы просмотреть персональные блоги нужно щелкнуть на них отдельно. А пока этого не сделать (о том что нужно куда-то щелкнуть, пользователю предстоит ещё как-то догадаться) создается впечатление что на сайте нет никаких блогов. Это путает. Как сделать персональные блоги выводимыми по умолчанию?
Exception: Unable to load template file 'widgets/widget.blog.tpl' in 'blocks.tpl'
See details in error.log
Где искать это error.log не знаю. В админке в ошибках системы чисто — No data
Плагин этот кстати всё равно в этой сборке не работал, а жаль — плагин нужный.
See details in error.log
Удаление топиков так и не работает
А вот насчет плагина — а для чего он?
А вообще для этой задачи у Альто есть для этого функционал «из коробки». Посмотрите в админке «Настройки», вкладка «CSS и javascript»
Нужно сделать так что бы из админки можно было ставить «разрешить пользователям создавать блоги», а иначе их может создавать только админ и модератор.
К стати как дела обстоят с модераторами?(их назначением)
Но лучше через админку)
еще порадоваться за себя, что таки решился начать пересоздание своего блога и спрыгнуть с WP
Заодно возник такой вопрос — если я ставил его на тестовый домен (по типу test.site.com), и хочу перенести на основной (www.site.com) — где необходимо менять домен, что б сайт полностью работал?
И спасибо за поздравления!
Хотелось бы что-то на подобии этого
Ну и конечно хочется иметь возможность менять дизайн НЕ «адаптация сторонних шаблонов была делом простым, быстрым и недорогим» — а клик-клик-клик и готово :)
не могу найти где оно меняется…
И еще — а как планируется поддержка Alto CMS, или это нормально писать сюда в комментарии? :)
1. Через админку не очищается кеш (с правами на запись в папках все в порядке, все записи/удаления работают, кроме кешей)
2. При добавлении топика теги cut и cut name не работают..., т.е. тупо не отображаются и ничего не скрывают
ЗЫ. я читал, что лучше писать о багах на гитхаб, но мне, честно говоря, лень регистрироваться там только ради этого.
Мне вот к примеру надо реализовать такую архитектуру для realtime.
Основное хранилище — это обычный стек РНР+NOSQL БД nginx+php-fpm это все стандартно.
Дополнительно:
— поиск реализуется отдельным сервером на базе elasticsearch (http://www.elasticsearch.org/).
— реалтайм реализуем на базе SockJS (серверная часть, для начала — github.com/sockjs/sockjs-node на базе NodeJS, если сильно упирается в производительность, что реально очень сложно — можно перенести эту часть потом на pypy — у сокжс серверные части независимы, например питоновская вот github.com/mrjoes/sockjs-tornado, основан выбор на статье habrahabr.ru/post/134822/). Клиентская часть вот — github.com/sockjs/sockjs-client
Это обеспечит поддержку стриминга и унифицированого протокола для всех браузеров.
— redis — используем как очень умный кеш, например, для хранения числа новых сообщений/общего количества, событий пользователя и т.д. тоесть таких данных которые постоянно запрашиваются чтобы не лазить в базу. Кроме этого, редис выполняет роль основного брокера для связи всех узлов — главный мастер сервер ставим рядом с основным приложением, слейвы стоят на комет-сервере и на поисковой ноде.
Теперь про связи: основное приложение принимает запросы, например, сравнительно редкие типа регистрации и т.п. через обычный ajax, далее записав и обработав, она разадет через PUBLISH/SUBSCRIBE механизм Redis-а эту информацию всем другим узлам. Все создания элементов (новые посты и т.п.) идут обычным аяксом в основное приложение. Оно обрабатывает и записывает в базу данных, потом раздает эту информацию другим.
Редис, установленный рядом с сокжс, получает пакет (json) от основного сервера, где, например, новое сообщение и список идентификаторов блогов, кому это сообщение отправить — и раздает это всем, кто подключен. Таким образом разделение логики — основное приложение только формирует указание кому раздать, но не знает кто онлайн и каким образом они подключены, а сокжс сервер реалтайма знает кто подключен но обезличено, только как транспорты и ид, он получает сразу сформированый список кому отправить и само сообщение, которое без обработки сразу раздает.
Вторым клиентом для сообщений будет поисковый сервер — возможно там надо будет написать небольшой скрипт клиента, пару строк на РНР или лучше ноде, хотя любой язык. Он также принимает сообщения через редис и ложит его, скармливая поисковому серверу еластиксерчу. Таким образом, по факту, в еластиксерче будет хранится документ-дубликат поста, со всеми данными, которых достаточно, чтобы когда идет поиск — все данные сразу брать из поискового индекса, без обращения к основной базе данных.
Вот, а тут уже совсем другой подход — оказывается не просто MongoDB требуется прикрутить, а вообще архитектуру серьезно так перекраивать. Сама по себе, возможно, предлагаемая архитектура и неплохая, но мы точно не будем столь кардинально менять архитектуру движка в обозримом будущем.
А вообще, что касается БД, то я уже писал как-то — считаю, что имеет смысл сосредоточится на поддержке MySQL (как mysqli, так и PDO) и PostgreSQL. Остальное — экзотика.
Но если кто-то решится и предложит свои услуги по включению в перечень поддерживаемых баз MongoDB — я хоть и сильно удивлюсь, но особо возражать не стану.
А вот Редис, как некая кеш БД — это интересная тема. Но тоже вряд ли ближайших месяцев
https://docs.google.com/file/d/1AXVcecq7N4ymZd2EndjPpX7MA7Zdx_2d7F_yisSPjQIVB9u22s_CmbKElHxk/edit?usp=sharing
1) Копирайты ЛС — условия снятия по правилам ЛС
2) Копирайт альто — по правилам gpl/mit. От донейта не откажемся)
3) Если используется шаблон synio — копирайты xeoart по правилам ЛС.
4) Если используется бутстрап шаблон — условия снятия (ответ автора шаблона 5nook ):
По части функционала донейта вопрос будет скоро решен)
Вот плохо что когда делаешь перенос строки ентером, в комментах, то выдает тег br неопытные юзеры будут думать «че это за фигня?»
серьезно прикидываю, а не перейти ли на альто :)
да и вечный срач на лс надоел