Сравнение модулей кармы, репутации и рейтинга

Главные вкладки

Аватар пользователя VladSavitsky VladSavitsky 24 февраля 2009 в 11:16

Краткий обзор модулей

User Points

  • Разрабатывается давно. Оброс кучей сопутствующих модулей, но некоторые ещё не портированы для 6ки.
  • Автор давно занимается Друпал и заслуживает доверия.
  • Версия 5.3 и версия под 6ку стала скорее API для других модулей.
  • Есть интеграция со многими модулями и модулем Rules.
  • Основаная идея - за действия в системе пользователь получает поинты. Количество поинтов можно настраивать, как и то, за что пользователь из получает.
  • Есть интеграция с Ubercart (для 5ки) и пользователь может купить что-то в магазине за поинты или получить скидку.
  • Также есть модуль, который ограничивает срок действия поинтов, то есть они могут "сгорать" - иначе они только растут.

User Karma

  • Этот модуль пришёл на смену Simple Karma.
  • Автор заявил, что не будет развивать модуль, но будет исправлять ошибки в существующей версии. Поэтому я бы не советовал сильно расчитывать на этот модуль.
  • Принцип вычислений модуля я привел в Обзоре модуля User Karma: репутация пользователя. Если кратко, что карма меняется при создании ноды, голосовании за ноду или комментарий, а также получении нодой или комментарием оценки.
  • Работает с Voiting API.
  • Код и архитектура: тихий ужас...

Другие варианты

Есть другием модули. Я делал Обзор модулей для организации на сайте рейтинга (кармы), но мы их рассматривать не будем.

Понятия и концепт

Чтобы не тратить время - определимся с понятиями.

Я нашёл очень толковую статью, где все расписано и достаточно подробно: Карма, репутация и рейтинги.
На сайте сказано, что проект заморожен, и я советую вам сохранить текст у себя - он реально проясняет понятия.

Я понимаю, что читать текст по ссылке вы будете потом и потому кратко проясню ситуацию.

Карма

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

Карма - это личное дело системы и конкретного пользователя. Система создает правила плохого и хорошего поведения, а также санкции за плохое поведение и поощрение за хорошее поведение. Лично мне слово "карма" не нравится, но принцип соответствует Библии. Тоже самое можно прочитать в Ветхом Завете в книге Второзаконие. То есть существуют правила жизни, которые установил Бог и соблюдение этих правил ведет к поощрению, нарушение - к наказанию. Все логично и просто.

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

Какой модуль реализует данный функционал?
User Points
Модуль считает активность пользователя, но не позволяет системе оценить хорошо это ли плохо. Точнее модуль как-бы считает, что публикаци ноды, комментария и другая активность - это всегда хорошо. Но он не реагирует на плохое поведение на сайте.

User Karma
Модуль ближе к карме, но это тоже не то. Почему? Потому что на карму не должно влиять количество опубликованных нод и комментариев.

Карма - это отношения системы и пользователя. Модуль позволяет скрыть значение кармы в профиле, а также назначать роль в зависимости от кармы пользователя, таким образом поощряя и наказывая правами доступа. В модуле есть учет оценок другими комментариев и нод пользователя - это самое оно!!! Но там нет учета кармы того, кто дает оценку и ограничения количества оценок одного пользователя другому, что позволяет делать накрутку кармы.

К недостаткам также можно отнести то, что модуль полагается на сторонние модули оценки, а эти модули не определяет что именно оценивается. Кто-то поставит +1 за чувство юмора, кто-то за полезность, а кто-то на стиль изложения. Таким образом модуль не учитывает и не регламентирует что именно ценивается.

Правильная реализация модуля кармы

По хорошему нужно определить в правилах сайта что хорошо и что плохо, а также что будет за нарушение правил и что будет за хорошие действия, чтобы пользователи это знали. Это можно сделать модулем Legal.

Нужно указать, что именно оценивается. Например: "Комментарий полезный": Да/Нет.

Модуль кармы должен показывать свои данные админу, но не остальным пользователям. Иначе карма становится обычной пузомеркой.

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

Репутация

Репутация - это отношения между пользователями.
Репутация работает с прошлым пользователя, чтобы предсказать как он будет вести себя в будущем. Таким образом нужна история поведения пользователя в системе.

Система должна уметь анализировать эти действия и делать предположения на основании этих данных. Эти предположения система должна показывать другим пользователям, чтобы сделать общение между пользователями наиболее продуктивным и полезным.

Например, на основании дат публикаций комментариев система говорит "Пользователь бывает на сайте почти каждый день".
Опять же оценка одного пользователя другим здесь не нужна, потому что она субъективна и полагается на мнение большинства. Это мнение тоже не является объективным.

Репутация имеет срок годности - она уменьшается со временем.

Какой модуль это реализует?
User Points
Модуль собирает статистику - он ближе всего к реализации репутации. Но он не делает прогнозов поведения пользователя, а старается численно оценить активность пользователя.

Модуль учитывает затухание со временем, но силами дополнительного модуля.

User Karma
Этот модуль пытается учитывать количество публикаций нод и комментариев и таким образом делать предположение о репутации пользователя как хорошего публикатора. Но тоже самое делает модуль User Points... Таким образом модуль пытается реализовать и карму, и репутация, но на самом деле не делает ни того, ни другого полностью.

Учет оценок других пользователей комментариев и нод также относится к репутации. Таким образом модуль скорее всего реализует репутацию, а не карму. Учет репутации того, кто давал оценку сделает модуль ещё ближе к реализации репутации.

Модуль учитывает затухание со временем - это хорошо.

Каким должен быть идеальный модуль репутации?
Модуль должен регистрировать действия пользователя на сайте.
Должен учитывать, что репутация бывает в разных сферах.
Должен уметь давать им оценку и делать выводы на основании статистики.
Должен учитывать затухание репутации со временем.
Должен выдавать свои рекомендации (оценки) по отношению к пользователю, чтобы другие пользователи могли это учесть.
Не должен выдавать таблиц и списков пользователей с сортировкой по репутации.

Рейтинги

Тут все просто - это те самые всеми любимые пузомерки.
Это список, отсортированный по любому из показателей.
Список пользователей, которые разместили больше всего комментариев - рейтинг.
Список "Последние статьи" - рейтинг. Здесь статьи сортируются по времени создания.

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

Но рейтинги это не репутация и не карма. А модули User Points и User Karma, которые не до конца реализуют карму и репутацию, пытаются быть ко всем ещё и рейтингами.

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

Пользователи же пусть соревнуются на основании хорошо продуманных рейтингов.

Итог

Ни карма, ни репутация нормально не реализованы.

Нужны ли модули, которые их реализуют?
Нужны ли модули, которые реализуют именно такие концепции?

Комментарии

Аватар пользователя neochief neochief 23 февраля 2009 в 21:19

Не знал, что у User Karma проблем с майнтейнером. Почитал пост, довольно обидная ситуация случилась. Хотя, с другой стороны человек избавился от зависимости Smile

Лично мне больше нравится подход User Karmы. Озвучено два недостатка:
1. На карму не должно влиять количество опубликованных нод и комментариев
2. Модуль полагается на сторонние модули оценки

Первый недостаток ним в общем-то не является. Это суб-модули, которые просто можно не включить. Я и не включал никогда. А второй — дык это тоже совсем не недостаток. Там можно вытавить VotingAPI тег, из которого будет проиходить подсчет. Т.е. допустим у нас есть система голосования за комменты (полезен/смешен/убог/спам), вероятней всего эта сиситема будет иметь четыре разных votingapi тега, и мы можем назначить например увеличение кармы на "полезен", при этом смешные комменты не будут учитываться.

Про его код, я бы не был столь категоричен. Он нуждается всего в небольшом косметическом ремонте и все будет отлично.

PS> Вот он шанс для желающих проявить себя. Станьте майнтейнером — сделайте шаг к респекту и уважухе Wink

Аватар пользователя VladSavitsky VladSavitsky 23 февраля 2009 в 21:35

Я бы стал майнтейнером User Karma, учитывая, что уже переделал модуль довольно сильно для учета кармы голосующего, но возникла мысль о том, чтобы сделать совершенно другой по принципу модуль...

По поводу кода, возможно он и корректно оформлен, но архитектура не очень, потому что многое можно было бы сделать проще и на объектах.

Про VotingAPI.
Какой из модулей может давать оценку с разными тегами?
Если это возможно, то это было бы круто!

Аватар пользователя News News 24 февраля 2009 в 22:04

Спасибо за подробное раскрытие темы.

Но мне не очень понятно, зачем нужно писать новый модуль, а не сделать подмодуль User Points с нужными возможностями настроек и дополнительным функционалом.

На все правки к функционалу вроде "Не должен выдавать таблиц и списков..." хочу сказать, что эти вещи нельзя запрещать, их можно сделать отключаемыми. Ведь каждому своё.

Аватар пользователя Grey Grey 25 февраля 2009 в 11:14

Спасибо за статью. Сам стою перед выбором модулей учета кармы/рейтинга пользователей. По видимому без обработки напильником не обойтись. Sad

Аватар пользователя VladSavitsky VladSavitsky 25 февраля 2009 в 12:12

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

Лично меня интересует другое - нужно ли что-то новое, другое по смыслу и целям или достаточно существующих решений?

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 25 февраля 2009 в 13:02

"VladSavitsky" wrote:
Лично меня интересует другое - нужно ли что-то новое, другое по смыслу и целям или достаточно существующих решений?

Меня бы интересовало развитие функциональности модуля UserKarma, тем более учитывая сложившуюся ситуацию с мантейнером.
А UserPoints по-моему неплохо справляется со своими задачами.

Аватар пользователя Atomic-energy.ru Atomic-energy.ru 25 февраля 2009 в 15:56

интересная и нужная тема!

например, можно сделать обзор возможностей друпала и livestreet - и взять у них лучшее

в данный момент самостоятельно разрабатываю научную социальную сеть на atomic-energy.ru

в основном, вопросы таковы:

1. как сделать рейтинги, карму, активной понятной и полезной для научной аудитории (понравится ли серьезным учёным конкурировать за рейтинг с молодыми?)

2. как убечерь научное сообщество от излишнего стимулирования к публикации/оценок материалов, "что бы всё было по существу"

3. стоит ли вводить "активность" (тематическое название на atomic-energy.ru: "радиоактивность" или "мощность") - или ограничится кармой?

4. стоит ли делать регистрацию исключительно по прилашениям, что бы ограничить круг лиц, участвующих в дисскусиях (тематика очень непростая, есть много противников атомной энергии и просто людей из отрасли, критически настроенных ко всему, что делается в сфере атомной энергетики)

5. Как стимулировать публикации серьезных материалов (через карму, естественно - но можно ввести дополнительный "экспертный" рейтинг - "за вклад в науку")

заранее спасибо за помощь и поддержку социальной направленности друпала,

Друпал - народу!
Павел
Главный редактор atomic-energy.ru

Аватар пользователя gumk gumk 25 февраля 2009 в 16:36

"VladSavitsky" wrote:
Лично меня интересует другое - нужно ли что-то новое, другое по смыслу и целям или достаточно существующих решений?

Определенно нужно!

Аватар пользователя Dan Dan 25 февраля 2009 в 16:38

Мои предложения:
1. Сделать многомерную шкалу. Делить все оценки на хорошие и плохие, и ещё хуже, смотреть разницу - дело бесполезное, на мой взгляд. Например человек может писать хорошие статьи в свой блог, но сильно флудить в форумах. "Хорошо" это или "плохо"? Нет, это просто две разные оценки: "полезные статьи", "флуд в коментах". Как их будет интерпретировать админ - его сугубо личное дело.
Другими словами, модуль должен позволять создавать несколько шкал оценок и "привязывать" начисление очков дополнительными модулями к разным шкалам.
2. Интеграция с event-модулями ("ядерным" и сторонними). Думаю, понятно для чего.
3. Автоматическая смена ролей пользователей, в зависимости от параметров кармы. Или это уже есть?

Аватар пользователя sadmin sadmin 25 февраля 2009 в 16:56

Многомерная шкала - это актуально,но там будет много споров по поводу измерений (сколько их будет - 3, 4 или др.) С интеграцией и сменой ролей согласен полностью.

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 25 февраля 2009 в 17:10

"Dan" wrote:
3. Автоматическая смена ролей пользователей, в зависимости от параметров кармы. Или это уже есть?

Да, это уже есть, но реализовано не очень гибко. Хотя это следствие негибкости системы ролей в друпале вообще.

Аватар пользователя Grey Grey 25 февраля 2009 в 18:01

Жалко в этих модулях реализован механизм изменения кармы/поинтов самому пользователю, но не пользователю который создал топик/комментарий.

Аватар пользователя VladSavitsky VladSavitsky 26 февраля 2009 в 1:08

"Dan" wrote:
Мои предложения:
1. Сделать многомерную шкалу. Делить все оценки на хорошие и плохие, и ещё хуже, смотреть разницу - дело бесполезное, на мой взгляд. Например человек может писать хорошие статьи в свой блог, но сильно флудить в форумах. "Хорошо" это или "плохо"? Нет, это просто две разные оценки: "полезные статьи", "флуд в коментах". Как их будет интерпретировать админ - его сугубо личное дело.
Другими словами, модуль должен позволять создавать несколько шкал оценок и "привязывать" начисление очков дополнительными модулями к разным шкалам.
2. Интеграция с event-модулями ("ядерным" и сторонними). Думаю, понятно для чего.
3. Автоматическая смена ролей пользователей, в зависимости от параметров кармы. Или это уже есть?

п.1 - согласен. Это недостаток модуля UserKarma - он полагается на сторонние модули оценок, которые как правило позволяют только поставить +1 и -1. При этом не понятно за что именно. Кроме того, нужно разделить оценки контента и оценку действий пользователя (пользователя оценивать нет смысла).

п.2 это можно сделать через модуль Rules, который позицируется как замена стандартному модулю Триггер.

п.3 - модуль UserKarma это точно умеет.

Аватар пользователя VladSavitsky VladSavitsky 26 февраля 2009 в 1:11

"<a href="mailto:Krotty@drupal.org">Krotty@drupal.org</a>" wrote:
Да, это уже есть, но реализовано не очень гибко. Хотя это следствие негибкости системы ролей в друпале вообще.

Роль в UserKarmа назначается при попадании текущей кармы в определённый для роли диапазон.
А чего не хватает? Даже не могу себе представить. В чем негибкость?

Аватар пользователя VladSavitsky VladSavitsky 26 февраля 2009 в 1:12

"Grey" wrote:
Жалко в этих модулях реализован механизм изменения кармы/поинтов самому пользователю, но не пользователю который создал топик/комментарий.

С трудом понимаю для какой цели?

Аватар пользователя Grey Grey 26 февраля 2009 в 10:44

VladSavitsky wrote:
"Grey" wrote:
Жалко в этих модулях реализован механизм изменения кармы/поинтов самому пользователю, но не пользователю который создал топик/комментарий.

С трудом понимаю для какой цели?

Можно ли изменять значение поинтов с помощью модуля Vote Up/Down, но не себе, т.е. голосующему, а владельцу комментария или статьи? Например, мне понравился комментарий Маши, и я проголосовав за него добавил ей 1 поинт.

Аватар пользователя penexe penexe 26 февраля 2009 в 10:59

Grey wrote:
Можно ли изменять значение поинтов с помощью модуля Vote Up/Down, но не себе, т.е. голосующему, а владельцу комментария или статьи? Например, мне понравился комментарий Маши, и я проголосовав за него добавил ей 1 поинт.

user karma как раз для этого

Аватар пользователя peter peter 26 февраля 2009 в 3:17

Мы как раз вот только что обсуждали фестивальный сайт, где музыканты, волонтеры и прочие участники моглибы управлять судьбой фестиваля.
Соответственно, да. нужен функционал:
1. Возможность админу добавлять определенное количество кармы/репутации (по результатам действий в реале)
2. Обратное влияние кармы(или роли?) на голосования, причем не только поинты, но и вотинг. Т.е. голос музыканта/участника при оценке заявок на участие например, должен весить больше чем голос обычного пользователя.

Система оценки действий на сайте пока не продумана, но разумеется, хотелось бы что и здесь репутация оценивающего тоже учитывалась

Аватар пользователя VladSavitsky VladSavitsky 26 февраля 2009 в 10:58

"Grey" wrote:
Можно ли изменять значение поинтов с помощью модуля Vote Up/Down, но не себе, т.е. голосующему, а владельцу комментария или статьи? Например, мне понравился комментарий Маши, и я проголосовав за него добавил ей 1 поинт.

Я понял. Предлагаю сначала поставить оба этих модуля, посмотреть их настройки, погонять их под нагрузкой.

Аватар пользователя VladSavitsky VladSavitsky 26 февраля 2009 в 11:04

"peter" wrote:
Система оценки действий на сайте пока не продумана, но разумеется, хотелось бы что и здесь репутация оценивающего тоже учитывалась

Тоже самое.
Вы ещё не знаете чего хотите, а уже выставляете требования к модулям.
Предлагаю тоже самое - изучите эти модули. Прочитайте внимательно их описания и будет вам счастье!...

Лично меня интересует мнение действующих менеджеров сообществ - чего им не достает, что нужно.
Возможно, они здесь не появляются - подскажите где у них тусовка.

Аватар пользователя neochief neochief 26 февраля 2009 в 13:34

Кстати вот вам один хитрый юзкейс, который я использовал на одном из сайтов. Там было требование — иметь обычную карму, но ограничить количество голосования в день в зависимости от значения самой камы. Т.е., например, юзера с большей кармой могут голосовать 10+ раз, а с меньшей 2. Решение было таково:

За плюсы к своему контенту, юзер получает долгострочные плюсы в карму (напр. +5 на 90 дней) (это плагин User get votes кажется). А теперь самое интерсное — при User vote node, у него выставляюстся кратковременные минусы в карму (-10, на сутки). На сайте есть роль "голосователь", которая присваивается юзерам с кармой больше десяти. И вот, например, если у юзера карма 25, он голосует два раза. В результате у него 5*5 90-дневных и 2*(-10) суточных = 5 в суме и он утрачивает роль "голосователь", пока не исчезнут суточные минусы. При этом, в профиле нужно отключить показ кармы, и показывать ее своими силами запросом, который будет учитывать только долгострочные оценки.

Вот такие вот чудеса позволяет делать User Karma, если проявить фантазию Smile

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 26 февраля 2009 в 20:26

Спасибо за статью! Вопрос и поднятая проблема очень интересны, но мне кажется, что найти идеальное решение здесь невозможно. Во-первых, серьёзной задачей лично мне представляется найти уже сам алгоритм, который по группе оценок, выдаваемых пользователю, мог бы составить его «портрет». Это система уравнений с кучей неизвестных, которые ещё и влияют друг на друга определённым образом. Лично мне кажется почти неподъёмной задача по приведению всего этого к одному общему знаменателю.

ОК, можно не приводить всё к общему знаменателю и не выстраивать своих пользователей по линейке от «хороших» к «плохим», а пользоваться набором этих «характеристик», но здесь возникает другая проблема, которую Вы тоже затронули, упомянув о «блоггере-флудере». Только давайте возьмём другой пример — блоггер, который пишет умные и полезные статьи, но при этом обладающий плохим (или, если хотите, «непонятным окружающим») чувством юмора. В реальной жизни получится так, что за свои статьи этот автор будет получать плюсы в плане «полезности», но останется без оценок или, ещё хуже, с набором минусов за «интересность» (обращаю внимание на то, что пользователь может писать вполне интересно, но юмор у него может быть не тот). Какова картинка этого пользователя? Как оценить его нужность сообществу? В конце концов, это не ролевая игра, в которой разным навыкам постоянно засчитывается «экспа» за некоторые действия, совершенно незаметные пользователю. В реальной жизни в сообществе пользователь может остаться вовсе без оценок за необходимые действия, которые при проектировании системы кармы/пойнтов учесть не удастся.

И тут мы подходим к самой серьёзной проблеме. Представим, что разработать систему, которая обрабатывает поступающие оценки от пользователей+оценки системы за «полезные действия», всё же удалось. Но дело в том, что практически невозможно заставить пользователя, читателя, отдавать свой голос за определённую статью или комментарий, отталкиваясь от нескольких критериев оценки. А ведь сайт сообщества — это не визовый отдел и не собеседование у работадателя, где обычно стараются заполнить всё, что нужно, внимательно. Обычно читатель готов воспользоваться только одной шкалой и только для того сообщения (комментария, видеофайла и так далее), которое его зацепило. Причём, по сути, не так важно, какова градация это шкалы — реально используется около пяти значений, не больше. И то читатель поставит оценку только в том случае, если объект оценивания вызвал у него сильную реакцию.

Причём, если смотреть по комментариям на всяких фотосайтах, охотнее голосуют те, кто хочет похвалить, а не поругать (ещё одно «узкое место»!) И, кстати, оценки обычно ставят, отталкиваясь от максимальных значений. Возмущённый читатель, не раздумывая, поставит «минус пять», восхищённый — «плюс пять», а вот тройки и двойки ставить будут вряд ли. По опыту могу сказать так же, что на оценку материала может большое влияние оказывать то, как голосующий относится к предмету материала, а не а не к самому материалу. Вот у меня сайт болельщиков футбольного клуба — после победы над сильным соперником пользователи поставят хорошие оценки любому отчёту о ней, а после поражения — вряд ли найдётся два-три человека, которые вообще сунуться голосовать. В общем, Ваша идея действительно очень интересна, но я не уверен, что выполнима.

Аватар пользователя andypost@drupal.org andypost@drupal.org 26 февраля 2009 в 23:19

Как то не сталкивался с User Karma, но userpoints + votingApi позволяют делать очень гибкие механизмы. И достаточно малой ценой.

К обоим модулям, есть нарицания с точки зрения кода, но они правятся под конкретную задачу и быстро.

Пока не сталкивался с задачами пузомерок видимых пользователям, но votingAPI удобен для подсчетов, а userpoints для выделения прав.

Аватар пользователя Polar Polar 27 февраля 2009 в 2:01

Большое спасибо за статью, очень полезно. Для некоторых задач стандартной функциональности этих модулей действительно порой недостаточно.
Почти по теме хотелось бы у сообщества узнать вот что: есть ли модуль или связка модулей, реализующая возможность влиять на Userpoints или Userkarma через оставление отзывов о юзере(положительных или отрицательных) так как это реализовано например на weblancer.ru или подобных сайтах?

Аватар пользователя VladSavitsky VladSavitsky 27 февраля 2009 в 15:16

"Valeratal" wrote:
сообщества, кармы, пузомерки...
а лучше адекватного модераторства ничего не придумано

Я хочу, чтобы был инструмент для удобного модерирования. Когда сообщество небольшое, то и управлять (модерировать) не сложно. Если же сообщество огромное, то и усилия по наведению порядка увеличиваются на порядок (во как!).

Лично я считаю, что "репутация" и "карма" должны быть доступны только модераторам или менеджерам сообществ. А "пузомерки" все теже менеджеры сообществ говорят, что они нужны и как можно больше. Я не сильно понимаю зачем, но склонен доверять их статистике.

Но ведь пузомеркой может быть что угодно! Например рейтинг по количеству слов в комментарии или по длинне ника в системе. Наличие такого рейтинга совершенно предсказуемо вызовет опред. реакцию в сообществе.

Аватар пользователя VladSavitsky VladSavitsky 27 февраля 2009 в 15:45

"<a href="mailto:ingumsky@drupal.org">ingumsky@drupal.org</a>" wrote:
Причём, если смотреть по комментариям на всяких фотосайтах, охотнее голосуют те, кто хочет похвалить, а не поругать (ещё одно «узкое место»!) И, кстати, оценки обычно ставят, отталкиваясь от максимальных значений. Возмущённый читатель, не раздумывая, поставит «минус пять», восхищённый — «плюс пять», а вот тройки и двойки ставить будут вряд ли. По опыту могу сказать так же, что на оценку материала может большое влияние оказывать то, как голосующий относится к предмету материала, а не а не к самому материалу. Вот у меня сайт болельщиков футбольного клуба — после победы над сильным соперником пользователи поставят хорошие оценки любому отчёту о ней, а после поражения — вряд ли найдётся два-три человека, которые вообще сунуться голосовать. В общем, Ваша идея действительно очень интересна, но я не уверен, что выполнима.

То, что вы описываете давно известно под названием "эффект Полианны", когда пользователи охотнее дают положительную оценку и боятся давать отрицательную.
По этой же причине в модуле Vote Up|Down есть возможность выбрать виджет для голосования +1/-1 или только +1.

Далее.
Виджет для разных оценок может быть и один. Например такой список вариантов:

  • смешно - НЕ добавляет репутации автору, но учитывается иначе. Например, для рейтинга (пузомерки)
  • спасибо - НЕ добавляет репутации автору, но учитывается иначе. Например, для рейтинга (пузомерки)
  • +1 - добавляет +1 к репутации автора
  • +2 - добавляет +2 к репутации автора
  • +3 - добавляет +3 к репутации автора

И это не моя идея. Это из статьи, ссылку на которую я привел с самом начале обзора. Посмотрите внимательно - я нахожу это лучшим решением на данный момент. Привожу ссылку ещё раз:

Карма, репутация и рейтинги.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 27 февраля 2009 в 16:55

Я действительно пока что не успел прочитать статью по Вашей ссылке, но обязательно прочту чуть позже.

А как вы объясните пользователю, что и как учитывается? Я, например, охотнее бы ставил «спасибо» за понравившуюся мне (в соответствии с любыми критериями), а другой человек будет лепить «плюсы». Получится, что мы вполне можем, оценивая статью под одним критериям и составляя о ней примерно одинаковое мнение, выставлять совершенно разные оценки, подразумевать одно и то же.

Аватар пользователя VladSavitsky VladSavitsky 27 февраля 2009 в 20:09

"<a href="mailto:ingumsky@drupal.org">ingumsky@drupal.org</a>" wrote:
А как вы объясните пользователю, что и как учитывается? Я, например, охотнее бы ставил «спасибо» за понравившуюся мне (в соответствии с любыми критериями), а другой человек будет лепить «плюсы».

Пусть хоть это будет их проблемой, ок? Пусть думают и решают. Хочет сказать спасибо - пусть скажет. Система оценок должна быть внятно описана и сознательный пользователь будет понимать что делает. К тому же за +1..+3 снимаются баллы с того кто голосует - он как бы передает свою репутацию.

PS. Ссылка, где этот метод описан вот:
http://www.rsdn.ru/?forum/Info.aspx?name=info.forum.rating

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 27 февраля 2009 в 21:12

Это если сознательный пользователь хочет во всё разобраться и понять. Не каждый будет внимательно читать руководства по выставлению оценок и подходить к этому вопросу с трезвой головой. Но вашу мысль я понял.

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 27 февраля 2009 в 23:01

"VladSavitsky" wrote:
Роль в UserKarmа назначается при попадании текущей кармы в определённый для роли диапазон.
А чего не хватает? Даже не могу себе представить. В чем негибкость?

Не хватает возможности исключения ролей для которых карма бы считалась, а дополнительные роли, соответствующие значению кармы - не назначались бы.
Пример. На сайте создана роль - "временный бан", не дающий возможности пользователю использовать часть сервисов сайта. Если мы же используем еще и карму, то этот пользователь получит еще и роль определенную его значением кармы, которая отменит ограничения роли "временный бан".
Но это не недостаток UserKarmа как таковой, а следствие того, что итоговые права для пользователя при наличии нескольких ролей определяются операцией OR.

"VladSavitsky" wrote:
Лично я считаю, что "репутация" и "карма" должны быть доступны только модераторам или менеджерам сообществ.

А каким образом тогда объяснить посетителям наличие у какого-то из пользователей большего количества прав чем у другого?

Аватар пользователя VladSavitsky VladSavitsky 28 февраля 2009 в 10:58

"<a href="mailto:Krotty@drupal.org">Krotty@drupal.org</a>" wrote:
А каким образом тогда объяснить посетителям наличие у какого-то из пользователей большего количества прав чем у другого?

Их это реально интересует или это потенциально возможный вопрос?
Как они узнают, что у другого больше прав?

В принципе можно отмазаться фразой типа "Права и обязанности определяются на основании достижений и заслуг пользователя."... Знать алгоритм подсчета рейтингов они должны и как правило это нетрудно объяснить и не трудно понять. Объяснить логарифмические коэффициенты снижающие вес оценки и прочее довольно сложно и, я считаю, не нужно.

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

Аватар пользователя VladSavitsky VladSavitsky 28 февраля 2009 в 11:17

Есть движок, который позволяет делать клон хабра: livestreet. Хочу посмотреть как он считает карму и рейтинги...

Если кто-то разбирался - опишите принципы расчетов.

PS. Движок не от создателей хабра, а именно попытка сделать клон.

Аватар пользователя andypost@drupal.org andypost@drupal.org 28 февраля 2009 в 13:19

"VladSavitsky" wrote:
Есть движок, который позволяет делать клон хабра: livestreet. Хочу посмотреть как он считает карму и рейтинги...

А есть еще bigstreet - и кто клон кого...

Аватар пользователя VladSavitsky VladSavitsky 28 февраля 2009 в 21:15

andypost@drupal.org и penexe,

Мне интересен принцип расчета кармы, веса, репутации или что они там используют.
Я не знаю кто чей клон, но хочется изучать первоисточник. На чем работает хабр?

Аватар пользователя Dan Dan 1 марта 2009 в 0:11

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
А есть еще bigstreet - и кто клон кого...

http://habrahabr.ru/blogs/livestreet/39482/#comment_945808

--ostrovityanin-- А слово street заимствовано у bigstreet.ru?
--ort-- не совсем, когда то, совсем давно это были части одного проекта. Давно это было

Аватар пользователя andyceo andyceo 3 марта 2009 в 0:10

Влад, а вот еще интересный момент. Количество репутации в системе будет константой или будет неограниченно расти? Я чисто провожу аналогию с денежной системой. Известно, что денег должно быть напечатано ровно столько, сколько произведено товаров и услуг. Если денег меньше, то дефляция, если больше, то инфляция. Эту вещь можно приспособить для моделирования экономических систем...

Будут ли "несгораемые суммы" пузомерок? Например, человек трудится в сообществе, а потом раз - и на три месяца в отпуск, или мало ли что у него может еще случиться. Рейтинг будет с течением времени падать - активности-то нет. И вот возвращается этот человек спустя некоторое время к работе, а он оказывается никто в сообществе. Ну это же неправильно. Ньютона ведь мы до сих пор помним.

Прошу прощения за вольное обращение с терминами рейтинг/карма/пузомерка, но основные мысли я, надеюсь, донес.

Аватар пользователя VladSavitsky VladSavitsky 3 марта 2009 в 10:11

"andyceo" wrote:
Влад, а вот еще интересный момент. Количество репутации в системе будет константой или будет неограниченно расти?

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

А Ньютона мы ценим, потому что свою репутацию он уже испортить не может. Кстати, потому и к лику святых после смерти причисляли (или и сейчас так - я не в курсе).

Но, потенциально, возможна ситуация, когда труды Ньютона кто-то опровергнет или его репутация иначе пострадает. Мы это можем наблюдать на примере фильмов о Христе, например, "Страсти Христовы", "Код ДаВинчи" и подобные - это попытка переписать историю и привнести что-то своё.

Так вот, репутация должна убывать со временем. В модуле UserKarma есть возможность это сделать двумя способами: (1) указать срок за который учитывается карма и (2) поставить отрицательный коэффициент за создание нод и оценку чужих нод. Таким образом можно ограничить постоянный рост кармы. Но при этом возникает то, что вы описываете: человек "выпал" (по какой-либо причине) из жизни сообщества на большой срок, вернулся - и ему нужно начинать все с начала. Это не правильно - точнее не соответстует реальности.

В японской системе пожизненного найма человеку гарантируется рост внутри компании с ростом его стажа - это неплохой стимул для спокойного равномерного развития.

Я думаю, что система репутации должна учитывать каким-либо образом предыдущие заслуги и стаж пользователя, но это не должно быть значительной частью его репутации (например, 20-30%). Таким образом он получит минимум, чтобы не начинать с нуля, но всё же его не участие тоже учтено. Я так это вижу.

Аватар пользователя Dan Dan 3 марта 2009 в 11:00

"VladSavitsky" wrote:
Я думаю, что система репутации должна учитывать каким-либо образом предыдущие заслуги и стаж пользователя, но это не должно быть значительной частью его репутации (например, 20-30%). Таким образом он получит минимум, чтобы не начинать с нуля, но всё же его не участие тоже учтено. Я так это вижу.

Я думаю система должна быть максимально "тупой" - ничего не делать "от себя", но предоставлять гибкое API для манипулирования своими данными. Тогда можно создавать субмодули с любой системой изменения "очкофф".

Аватар пользователя VladSavitsky VladSavitsky 3 марта 2009 в 17:00

"Dan" wrote:
Я думаю система должна быть максимально "тупой" - ничего не делать "от себя", но предоставлять гибкое API для манипулирования своими данными. Тогда можно создавать субмодули с любой системой изменения "очкофф".

Мысль интересная. Тогда это получается подобие статистики, которая надлежащим образом сохраняется, а уж как показывать и анализировать - задача другого рода. Например, можно по месяцам посмотреть, а можно по дням недели... Это мысль! Нужно будет обдумать.

Аватар пользователя andyceo andyceo 3 марта 2009 в 19:46

Влад, Ньютона уже давно опроверг Эйнштейн, но его репутация от этого нисколько не пострадала: он продвинул науку вперед, и его законы до сих пор изучают в школе, и они верны при определенных условиях - и этого уже никто не в силах изменить, опровергнуть и т.п. У него "несгораемая сумма" Smile

Если человек сделал что-то действительно хорошее и большое для сообщества, его карма/репутация не должна так просто исчезать, с течением времени.

А насчет API - это замечательная мысль, и это самое верное. Для разных сообществ могут потребоваться разные правила учета репутации, кармы и прочего, и просто необходимо иметь возможность удобно их задавать. Я не смотрел еще модуль Voting API, поэтому не знаю, но все же хочу спросить: а разве этот модуль не предоставляет нужного API для учета кармы, репутаций?

Аватар пользователя VladSavitsky VladSavitsky 3 марта 2009 в 23:43

"andyceo" wrote:
Я не смотрел еще модуль Voting API, поэтому не знаю, но все же хочу спросить: а разве этот модуль не предоставляет нужного API для учета кармы, репутаций?

Этот модуль позволяет модулям-голосовалкам хранить данные в одном месте и получать нужные данные любым модулям. Вот и все.
Хранится кто, когда, за что дал оценку. Значение этой оценки и некоторая другая инфа.

По поводу Ньютона - никто его не опроверг. То, что сделал Энштейн - это расширение того, что сделал Ньютон и базируется на том, что сделал Ньютон. Поэтому его репутация не пострадала.
Если бы то, что он вывел оказалось ложным и это доказали, то никто о нём бы не вспоминал. Разве что как о том, кто ввел всех в заблуждение.

По поводу "несгораемого количества": я не думаю, что это нужно делать, потому что это не укладывается в репутацию в реальном мире (оффлайне). А к карме вообще не имеет отношения.
Если в реальном мире репутация не уменьшается с течением времени, то это обычно ведет к обману и оферам.

Пример. Человека не видал несколько лет. Чем он занимался, где был, чему учился - не известно. Его репутация будет на прежнем уровне? Доверие такое же? Правильнее начать строить отношения заново.

Мой школьный друг (учились в одном классе) убил человека. Я когда узнал, то просто не мог поверить - я ведь знал его очень хорошо, столько вместе прошли... Но он сел на 7 лет. А все почему - учились мы вместе до 4го класса, а потом он был в другом классе и через 3-4 года сел... Вот такие могу быть изменения со временем.

Аватар пользователя andypost@drupal.org andypost@drupal.org 4 марта 2009 в 1:35

"VladSavitsky" wrote:
Этот модуль позволяет модулям-голосовалкам хранить данные в одном месте и получать нужные данные любым модулям. Вот и все.
Хранится кто, когда, за что дал оценку. Значение этой оценки и некоторая другая инфа.

Влад, votingapi это не только голосовалки - это просто система многомерного учета, каждое измерение имеет свой тег, хранятся факты (в примитивном варианте голоса) и для них возможны несколько стандартных вариантов суммирования (анализа), а также доступны хуки для собственного-кастомного пересчета.

Например, votingapi используется на drupaler.ru для учета смкачиваний причем в нескольких измерениях - модуль, язык, версия, страница перехода...

Аватар пользователя argon argon 5 марта 2009 в 12:12

Полезно. Было бы кстати неплохо (наглядно) составить список неосновных параметров, учитываемых этими системами, (скачивания, возраст пользователя, различные скилы... А вообще это MMORPG )))

Аватар пользователя andyceo andyceo 5 марта 2009 в 13:33

Мой школьный друг (учились в одном классе) убил человека.
А Ньютон сгноил в тюрьме своего конкурента. И что? Это уменьшает научную ценность его работ? Или это влияет на его научную репутацию? Не знаю, что сделал твой школьный друг кроме убийства, но наверняка не только это. И вообще, ты разбирался в обстоятельствах его дела? Может, он убил при самозащите. Или сам факт того, что он сидит в тюрьме, делает его репутацию в твоих глазах уже меньше?

И если быть точным, то ньютоновская механика, его уравнения движения для материальной точки были опровергнуты уравнениями Эйнштейна. Именно опровергнуты. Да, уравнения Эйнштейна при малых скоростях мало чем отличаются от ньютоновских. Но отличаются, и поэтому, строго говоря, ньютоновская механика неверна. А уж при скоростях близких к скорости света вообще недееспособна. И еще раз говорю, что факт опровержения нисколько не уменьшил репутации Ньютона. Даже его разборки с конкурентами и любовниками жены не уменьшили ее. Потому что он в свое время дал огромный толчок науке, продвинул ее вперед, дал ей мат. аппарат. Именно на основе этого и выросло потом опровержение представлений Ньютона о мире. Не всех - ведь есть первый, второй, третий законы Ньютона. Они работают до сих пор. И ты утверждаешь, что если будет опровержение, то Ньютона будут вспоминать лишь как того, кто на много лет ввел всех в заблуждение? И это уменьшит его репутацию? А вовсе не как того человека, кто в свое время сделал огромный вклад в науку? По-моему, ты слишком прямолинейно проецируешь работу модуля User Karma на реальный мир Smile

Так что вот такая вещь. Да, я зануда)

Аватар пользователя VladSavitsky VladSavitsky 6 марта 2009 в 0:17

"andyceo" wrote:
Так что вот такая вещь. Да, я зануда)

Да нет же - мне интересно.
Вообще-то я, думал, что стараюсь реальность проецировать в какой-то из ненаписанных модулей для репутации... Хм - нужно будет проверить.

Ок. Про "несгораемую репутацию".
Я думаю, что репутация должна делиться на сферы (я писал об этом). То есть, если человек отличный ветеринар, то не значит, что он может давать советы по кулинарии. Хотя он может быть и в этой сфере "заслуженный", но идея в том, что репутация должна относиться к определённой области жизни или знаний.

Возможно, найдутся такие области, где репутация потребуется именно "несгораемая", но быстро придумать сейчас не могу.

Дальше. Если нужно сохранить как-то знание о достижениях человека, то можно сделать отдельную "доску почета", где это отображается. Там должно быть записано кто, когда и что сделал ценного для сообщества. Что-то типа орденов и медалей. То есть я предлагаю всё же отделить это от механизма подсчета репутации. Что скажете?

Аватар пользователя News News 10 марта 2009 в 14:38

VladSavitsky wrote:

Я думаю, что репутация должна делиться на сферы (я писал об этом). То есть, если человек отличный ветеринар, то не значит, что он может давать советы по кулинарии. Хотя он может быть и в этой сфере "заслуженный", но идея в том, что репутация должна относиться к определённой области жизни или знаний.

Полностью согласен! Делить skills по профессиональным сферам придётся. Постоянно "профессиональный конфликт" возникает на стыке технарей и гуманитариев.
Например, на тематическом сайте, посвященном автомобилям вы не сможете правильно рейтинговать контент: автомеханики будут ратовать за дизайн с гигантским уродским спойлером ("типа эта крута!"), а ценители автозвука рекомендовать лить АИ-92 и присадки ("это так экономно!"). Вот и получается, что, вроде, тема "авто" одна, но скиллы у людей совсем разные.
Как минус - это всё начинает смахивать на MMORPG )) Но если на скилы и прочие регалии не акцентировать внимание пользователей в первой же странице профиля, то ощущения от нахождения в MMORPG не возникнет. Зато значительно вырастет качество контента и сервисов (рейтинги, голосования...).

Аватар пользователя Dan Dan 6 марта 2009 в 0:40

"VladSavitsky" wrote:
Возможно, найдутся такие области, где репутация потребуется именно "несгораемая", но быстро придумать сейчас не могу.

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

Аватар пользователя VladSavitsky VladSavitsky 6 марта 2009 в 10:12

"Dan" wrote:
Достаточно сменить понятие и примеры найдутся. Замени слово "репутация" на "опыт". Человеку могут быть доступны опции, возможности или разделы сайта в зависимости от его опыта или знаний. Опыт обычно не уменьшается.

Ок. Но опыт и репутация это разные вещи. Человек может быть профессионалом и делать работу качественно, но быть неорганизованным и срывать сроки - репутация плохая, а опыт (skill) хороший.

Аватар пользователя Dan Dan 6 марта 2009 в 11:51

Именно. Я уже говорил про множество шкал. В данном случае будет две шкалы - "Репутация" и "Опыт".

Аватар пользователя VladSavitsky VladSavitsky 6 марта 2009 в 14:04

Попытался разобраться с областями для опыта и репутации:
Для репутации:

  • может быть реализована система отзывов (как часть репутации)
  • время участия в жизни сообщества - стаж
  • возможно стоит учитывать участие в каких-то ключевых событиях в сообществе

Сферы для опыта в принципе могут задаваться пользователем в профиле как личные интересы, но вот как учитывать опыть в этих сферах? Позволить другим оценивать его именно по этим сферам?..

Аватар пользователя andyceo andyceo 6 марта 2009 в 17:41

Какая у нас интересная дискуссия получается. Smile

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

Подобную реализацию я уже видел на форумах vBulletin. Там отображалось общее количество времени, проведенного онлайн, и это было довольно показательно.

Аватар пользователя VladSavitsky VladSavitsky 6 марта 2009 в 21:18

andyceo, отличная идея! Этот параметр действительно более показательный, чем время существования аккаунта.

В принципе можно легко к этому добавить и "качество" времени на сайте.
Например, был 5го числа 45 минут. За это время смотрел 4 ноды, написал 4 коммента, модерировал 1 ноду, ответил на личное письмо и так далее.
Каждому действию дать цифровую оценку и считать "эффективность" времени на сайте.
Мало того, на основании этих данных можно давать пользователям советы по оптимальному использованию времени и сайта. Кому-то, например, порекомендовать быть на сайте не больше 2х часов в сутки...

Аватар пользователя VladSavitsky VladSavitsky 10 марта 2009 в 15:44

Я думаю, что и репутация, и карма должны быть по возможности скрыты от пользователей, потому что это инструмент для управления сообществом, для поддержания здорового баланса и защиты.

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

Аватар пользователя VladSavitsky VladSavitsky 10 марта 2009 в 22:34

"<a href="mailto:fasdalf@fasdalf.ru">fasdalf@fasdalf.ru</a>" wrote:
ждем браузерную MMORPG на движке drupal

А чего ждать-то? - нужно делать. Если интересно, то можно сообща что-то толковое сделать.

Аватар пользователя fasdalf@fasdalf.ru fasdalf@fasdalf.ru 12 марта 2009 в 11:39

Я ни разу не модератор и не эксперт сообщества, поэтому такую систему могу оценивать только как конечный пользователь. Если я могу кому-то помочь в этом качестве - я постараюсь.

Аватар пользователя VladSavitsky VladSavitsky 15 марта 2009 в 22:36

Завтра (в понедельник) я попробую перечитать все комменты и собрать все ценные мысли в новом посте... Тогда будет видно, что нужно делать и как.

Аватар пользователя VladSavitsky VladSavitsky 16 марта 2009 в 11:12

Итак, делим всё на части и продолжаем обсуждении в новых топиках, где собраны выводы по направлениям:

PS. Если я что-то упустил, то напомните, пожалуйста, ещё раз.