Краткий обзор модулей
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, которые не до конца реализуют карму и репутацию, пытаются быть ко всем ещё и рейтингами.
Моё личное мнение списки этих модулей должен видеть только админ или менеджер сообщества, а не пользователи. Репутация и карму нужны для регуляции здоровья сообщества. Иначе начинаются накрутки, гонки за первыми местами и происходит смещение целей сообщества. Люди пишут ради рейтинга, а не потому что есть мысли и они хотят ими поделиться.
Пользователи же пусть соревнуются на основании хорошо продуманных рейтингов.
Итог
Ни карма, ни репутация нормально не реализованы.
Нужны ли модули, которые их реализуют?
Нужны ли модули, которые реализуют именно такие концепции?