Теперь, когда запущена временная площадка на базе LJ, и всем известны ее недостатки, предлагаю обсудить, как мы видим будущую инфраструктуру - целевую - и согласовать основные требования к ней.
Исхожу из того, что все читатели с поставленной целью и концепцией знакомы (
смотри здесь). Ни один из существующих движков (LiveJournal, LiveStreet, форумы и т.д.) целевой концепции полностью не удовлетворяет, то есть получение информации связано заведомо с избыточными временными затратами, которые мы ставим целью минимизировать.
Ниже привожу более развернутые требования к целевой инфраструктуре и:
- Всем читателям предлагаю оценить описание с точки зрения удобства использования, высказать пожелания по улучшениям
- Технически грамотным людям предлагаю оценить трудоемкость реализуемости на тех или иных платформах. На данный момент наиболее комплексный подход, который, судя по всему, подходит для реализации инфраструктуры, это большей частью самописное решение на базе Java/Scala, предложенное уважаемым dimgel
Итак. Предлагаю ознакомиться с требованиями, прикинуть насколько это было бы Вам удобно (в различных ролях) и высказаться (замечания скидывать в комменты, потом основную запись обновлю дельными идеями). Перед переездом на новую инфраструктуру пощупаем сперва все руками.
Список, естественно, будет динамическим - что-то сделаем не в первой версии, а во второй или третьей, будут появляться новые пожелания.
П.С. Люди жалуются, что при комментарии КАПЧА запрашивает все время, что раздражает. Лечится легко - нужно нажать "Join the community" вверху.
Основные понятия и принципы
Публикации делятся на три типа:
- Статья
- Рецензия
- Комментарий
«Статья» - это основной формат данных, наиболее информативный и трудоемкий в подготовке. Статья может быть опубликована в одном или нескольких редакторских разделах.
«Рецензия» - это разбор статьи, ее критика или существенные дополнения. Рецензия всегда привязана к конкретной статье.
«Комментарий» - все остальное. Могут быть привязаны как к статье, так и к рецензиям, и к другим комментариям.
Определим понятие «уровень» вложенности. Статья - это публикация первого уровня. Рецензии - публикация 2-го уровня. Комментарий на материал уровня N будет иметь N+1 уровень. Если в рамках раздела, в дополнение к статьям, создан один или несколько форумов для обсуждения, то всем материалам на этом форуме присваивается 3-й уровень.
«Рейтинг публикации» - функция от голосов проголосовавших за нее читателей, и учитывает их собственный рейтинг (по аналогии с тем, как это сделано на Авантюре). Вес голосов читателей имеющих нулевой и отрицательный рейтинг - нулевой, то есть от голоса таких читателей не изменится ни рейтинг материала, ни рейтинг авторов.
«Рейтинг читателя» складывается из рейтингов его собственных публикаций с учетом того, на каком уровне вложенности эти публикации были. Чем больше уровень, тем меньший прирост дает рейтинг этой публикации к рейтингу автора.
Таким образом подготовка и публикация хорошей статьи даст к рейтингу автора прирост гораздо больший, чем рецензия с таким же количеством голосов, а рецензия - гораздо больше чем комментарии самого верхнего уровня, которые в свою очередь весят гораздо больше, чем комментарии более низкого уровня.
Рейтинг, как публикации, так и автора, привязан к разделу, где они публиковались. Таким образом, одна и таже публикация, и один и тот же автор будут иметь разные рейтинги в разных разделах.
Это основные принципы расчета рейтинга, точные веса определим позднее.
Нефункциональные требования
1. Защита от риска интернет блокирования при дальнейшем усилении суперкризиса. Вариант решения - хостинг следует делать только в России и, возможно, Германии. Как возможный вариант предлагается
вот этот.
2. Защита от риска уничтожения данных. Вариант решения - ежесуточные копии базы на физически вынесенные сервера. Кроме того у всех авторов должна быть возможность выгрузки своих материалов (с комментариями) локально, с возможность обратной загрузки в новый движок (что облегчит восстановление в случае физической утраты центральной базы).
3. Движок желательно создать и развивать на основе open source, так как пожеланий по докрутке и улучшениям будет масса, чтобы каждый мог внести вклад.
4. Движок должен защищать от спама и ботов -
a. Регистрация новых авторов только через капчу и подтверждение почтового адреса
b. Для популярных разделов имеет смысл поддержка режима, когда первые N материалов/рецензий/комментариев новых участников не показываются, пока не будут одобрены редактором/автором (то есть нужна возможность включения премодерации, снимаемой автоматически по мере стажа, либо роста рейтинга)
c. Все материалы/комментарии должны сопровождаться кнопкой «Спам», нажать на которую могут все зарегистрированные участники с положительным рейтингом, при нажатии на которую M раз в течении часа, данный автор блокируется автоматически с уведомлением редакторам раздела с возможностью снятия блокировки ими (если они решат, что это ошибка).
5. Масштабируемость. Долгосрочной задачей мы ставим замену значительной доли существующих СМИ, поэтому на уровне архитектуры должны понимать, как будем поднимать охват аудитории с изначальной загрузки, относительно небольшой (как ориентир - десяток-сотня тысяч показов в сутки) до сотен миллионов в сутки. Это не значит, что мы сразу должны иметь оборудование и систему способную на такую загрузку, но это значит, что нам нужен ясный план как мы будем это наращивать и предусмотреть на уровне архитектуры.
6. Удобность использования. Интерфейсы должны быть интуитивно понятными, так чтобы новичок уже через сутки использования чувствовал себя в своей тарелке. Все основные сценарии для всех ролей должны требовать минимум кликов, избыточность недопустима.
Дополнение: 1) крайне желательно иметь, пусть не в первой версии, поддержка мобильных устройств и RSS
Функциональные требования
Описываю в виде сценариев доступных для различных ролей:
· Читатель
· Автор
· Редактор
Естественно, все роли пересекаются.
А. Читатель
При заходе в центр видит:
1. Ленту аналогичную тому, что показывается на
ZH, где отображаются материалы из разделов, на которые он подписан (материалы только 1-го уровня, то есть статьи). В ленте дается краткое представление о материале (не более N символов и 0 графики), раздел в котором материал опубликован, читательский рейтинг, ссылка на профиль автора, наличие рекомендации редактора (если есть).
2. Должна быть возможность отметить материал как спам, раскрыть его, прочитать рецензии и комментарии, иметь возможность их сортировки по дате / рейтингу, написать рецензию, прокомментировать. Рецензии, естественно, должны визуально выделяться от простых комментариев.
3. Должна быть возможность проголосовать как за материал, так и за рецензии / комментарии, которые показываются при раскрытии, отписаться от последующих материалов этого автора и раздела. В зависимости от полученных голосов и материал, и его автор получают изменения рейтинга. Формулу расчета рейтинга определим потом, но принципы расчета уже указаны выше, в определении нуждаются лишь веса.
4. Должна быть возможность сказать «следить за обсуждением» на любую статью, рецензию или комментарий.
5. Кроме основной ленты, читателю на главной странице должна даваться дополнительная, в которой даны кратко (лишь заголовки, с возможностью раскрытия) наиболее популярные материалы разделов, на которые он подписан (отдельно по числу голосов, отдельно комментариев); а также, отдельно, группа заголовков других разделов, на которые он не подписан.
6. В отдельном блоке, дается базовая информация по обновлениям в тех обсуждениях, за которыми он сказал «Следить», а также по форумам тех разделов, на которые он подписан (форумы - дополнение к разделу, в каждом разделе может быть несколько форумов, создаваемых редакторами), с указанием общего количества комментариев в обсуждении, и комментариев, опубликованных с его последнего визита (либо, если это слишком «дорого» - дата последнего комментария);
7. Управление подписками/игнорами должно быть доступно как при прочтении материала (подписаться), так и из профиля, должно позволять поиск по разделам и авторам, фильтры подписки делаются по авторам и разделам, фильтры игнора делаются по величине рейтинга материала и имени автора.
Дополнение: 1. У каждого читателя должно быть "Избранное" - аналог того, что в LJ называется мемориз. 2. Материалы, естественно, снабжаются тагами (свой набор в каждом разделе), для облегчения навигации.
Б. Редактор
1. Каждый читатель может стать автором, после чего появляется как минимум его собственный раздел, где он сам будет являться редактором.
2. Редактор может назначить в свой раздел других редакторов, определить фильтры премодерации работающие по умолчанию на публикации новых авторов (которые в дальнейшем могут автоматически смягчаться по мере роста рейтинга автора и его количества публикаций в данном разделе), создать форум(ы) ассоциированные с его разделом (модераторами на форуме являются редакторы раздела).
3. При заходе в центр, редактор видит очередь материалов, ожидающих публикации в его разделах и обработать ее, принимая следующие решения - опубликовать, отправить на доработку, отклонить, забанить автора в данном разделе (на период от 0 до N суток), получить читательские эскалации о спаме, и принять решения по ним (то если либо снять, либо подтвердить автоматическую блокировку).
4. Для опубликованных материалов, редактор может дать пометку личной рекомендации, которая поможет читателям, в дополнение к рейтингу, в фильтрации материалов. Такие материалы выделяются цветом.
5. Каждый раздел может сопровождается одним или несколькими форумами, где можно задать те или иные вопросы редактору и авторам раздела, провести обсуждение. На посты в форуме накладываются аналогичные ограничения, что и на обычные материалы, публикуемые в разделе (политики предмодерации, сообщения о спаме, бан-фильтры и т.д.).
В. Автор
1. Каждый читатель может стать автором, нажав кнопку создания «статьи» и отредакторивав ее в типовой форме. Отличие от стандартной LJ формы в следующем - помимо заголовка и тела статьи, должна быть часть «Краткое представление», с ограничением на количество символов в нем и использование графики. Именно «Краткое представление» будет отображаться в читательские ленты с возможность раскрытия.
2. После подготовки материала материал публикуется в собственном разделе автора (где он сам является редактором) после чего он может разослать его редакторам любых других разделов для возможности публикации там.
3. По умолчанию при рассылке ему предлагаются те разделы, на которые он подписан с возможностью выбора из расширенного списка других разделов. После этого материал отсылает редакторам выбранных разделов и публикуется в зависимости от политик премодерации и решений их редакторов.
4. Частный случай размещения материала - форум. Эти материалы по статусу приравниваются к обычному комментарию.
Дополнение: 1. Предлагают подумать о поддержке соавторства, то есть когда один материал имеет нескольких соавторов. В принципе было бы полезно, но предлагаю пока отложить до будущих версий.