Wiki 2.0
Wiki – довольно странный нишевый продукт. Довольно странный потому, что этим старьем все еще пользуются. А пользуются им – что тоже довольно странно – потому, что ничего лучшего до сих пор и нет.
А ничего лучшего до сих пор нет, потому что продукт нишевый, и совместная работа над текстами не такая уж и популярная вещь. Есть много продуктов из соседних ниш.
С другой стороны, я сейчас работаю с вики, время от времени у меня рождаются мысли, как всё исправить, но носят они в основном мирный характер «всё закопать и переделать».
На мой взгляд, человеческая система совместной работы с документами должна обладать следующими признаками:
1. WYSIWYG.
Да-да, именно оно. Вики-синтаксис – это полумера, half-assed решение для полугиков. Выделять наклон, как //а вот это наклон// якобы интуитивно понятней, чем тэги, но на самом же деле это такая очень странная реализация WYSIWYG для бедных: «палочки-то наклонные».
Другое дело, что почти все WYSIWYG системы делали тоже какие-то странные люди и почему-то с прицелом на хомячков.
Такая банальная вещь, как проставление ссылки, например, везде реализована одинаково неудобно: при редактировании ссылка должна выглядеть, как ссылка, но никто не говорит, что она должна вести себя так же.
Ибо оно все-таки WYSIWYG, а не WYGIWYGD (What you get is what you get, duh).
2. Отделение метаинформации от котлет.
HTML-тэги являются «невидимым» мета-слоем текста («разметкой»). Желающие могут взять любой несуществующий тэг, например, Другое дело, что так исторически сложилось, что правим мы документ сразу вместе со включенной в него разметкой, хотя самый первый html-редактор был, конечно же, WYSIWYG’ным. Если бы html был бинарным форматом, а не текстовым – всё могло бы сложиться хорошо.
Это было лирическое отступление.
Есть текст, к нему есть метаинформация, например, те же комментарии. Текст – отдельно, метаинформация – отдельно. Должным образом это реализовано, например, в MS Word’е в режиме правки текста: исходный текст, а к нему – правка. Их можно сливать, но это все равно разные слои.
Правка текста – это и есть дополнение текста актуальной метаинформацией.
В вики же популярный способ коллективной правки совсем варварский: включаем красненький текст и прямо по чужому тексту фигачим, вставляя свою подпись.
Да здравствует анти-семантика.
Минусы очевидны: когда нам вдруг понадобится «просто текст», пусть даже и не в самой утвержденной версии, придется отчищать текст от правок. Ну, или брать старую версию. (Механизм версий, кстати, — это единственная правильная вещь, которая есть в Вики).
«Комментарии к тексту» не работают: люди комментируют обычно какую-то одну конкретную мысль из текста; комментировать весь текст целиком можно только в виде «спасибо, прочитал».
Вполне очевидно, что доступ к созданию метаинформации и доступ к ее закреплению в документе – это два разных доступа. Как и доступ на чтение метаинформации и доступ на чтение документа вообще.
3. Работа с атомарными единицами.
Как правильно отделить метаинформацию от остального не понятно до тех пор, пока мы не решим, что является минимальной неделимой единицей текста.
Ей является абзац. А не документ.
Смотри Библию. До тех пор, пока не наступит просветление. После того, как мы осознали эту мысль и смирились с ней, всё становится совсем просто:
Ну и так далее. Перемещение, добавление, удаление абзацев отслеживается легко.
При этом у нас WYSIWYG (помните?), поэтому внутренности, типа На уровне дизайна реализовать это всё тоже легко: у каждого абзаца есть «плюсик», раскрывающий всю метаинформацию о нем и дающий доступ ко всем инструментам. Там же – индикатор, что крестик не пустой, «этот абзац имеет 4 новых комментария и статус КГ/AM».
Опять-таки, ajax и прочий вебдваноль.
Когда все плюсики закрыты, текст является нормальным «человеческим» текстом, который и людям показать не стыдно. Опция expand all тоже есть.
При этом – хаха – вики должна быть настраиваема для работы на двух мониторах: в первом текст, во втором (окне браузера) – содержание «плюсиков».
Главное, в чем стоит отдавать отчет: текст для совместной работы – совсем не художественный текст, а писать в формате «абзац = мысль» нормальный человек обучается быстро. А если не обучается – то атата по попе ему, по попе.
Деление на абзацы — не искусственное «ограничение» на уровне движка, оно должно поддерживаться авторами на уровне структуры текста и быть всегда в голове.
Правка же чужого текста в формате «если ты такой крутой, предложи абзац другой» гораздо более продуктивна.
4. Автоматизация связей и гипертекстовость.
Все мы не любим очень умные программы, так ведь? Однако же.
Создал я в Вики два документа: something/terrible и something/awful. Что должно быть по адресу something/, если там ничего не было? Правильно — список документов в something/*, с возможностью его перезаписать на что-то свое, а не «ой, тут ничего нет, хотите создать?». Раз уж мы имитируем папочную структуру.
Вообще, у возможности легко создавать страницу с любым адресом минусов больше, чем плюсов: это полный аналог вебдвальных тэгов на массовых сервисах, когда есть и «кошки» и «коты» и «котята» и всё это – разное.
Не могут люди нецентрализованно создать структурообразующую вещь. А она нужна, потому что иначе не навигация, а каша.
Выхода три: либо закреплять правила адресации на уровне договоренности, либо – на уровне «движка», либо нужен «модератор».
Из удобных «автоматизаторских» возможностей в Вики есть только автоматическое создание оглавления — {{TOC}}. Хотя по такому же принципу можно было сделать много полезного: список всех внешних/внутренних ссылок в тексте, например.
Ну и прочие мелочи. Например, при расстановке ссылок, если описание ссылки не задано, то надо считывать содержимое title указанной страницы и ставить его в описание. Title и есть заголовок страницы, алё!
Итого:
Есть текст. К тексту есть обновляемая метаинформация. Слияние текста и метаинформации и есть работа над текстом. У текста есть минимальная смысловая единица (абзац), все действия производятся, прежде всего, над ней.
Ну и в конце – почему это все не будет работать. Дело в том, что есть – увы – интерфейс в разы лучше. Называется он «говорить голосом». Ничего более эффективного, чем «человек пишет текст – мы собираемся и обсуждаем текст вслух – человек дорабатывает текст и потирает жопу» не придумать всё равно.
Поэтому «пугающие» цифры, типа «85% страниц в Вики были написаны авторами в одиночку» — отражение вполне нормального и эффективого способа, с учетом внешней коммуникации.
Некие (видимо, хорошие) люди попросили у меня придумать им «карму» на сайт (ссылку дам, как запустят). Ну, я придумал за 2 часа вечерком (идею просьба не тырить, пока не заплатили).
Разрешение на публикацию, однако, есть (информация должна быть свободной, ага). Главный вопрос — сколько это может стоить? То есть сколько просить бабок за мой офигенный талант «и все такое»?
ПОСТАНОВКА ЗАДАЧИ:
Сделать на «вебдванольном» сайте систему поощрения активности пользователей, некий рейтинг, за который будут выдаваться раз в месяц реальные призы.
АКСИОМЫ:
1. Карма — не позитивна, так как быстро превращается в механизм наказания и чморения («карму заминусовали»). ВАЛЮТА И КОШЕЛЕК
Валюта — баксы с центами. Название не принципиально, главное — с центами.
У каждого пользователя есть максимальный размер кошелька. По умолчанию он равен 100$*. Все поступления выше максимального размера кошелька пропадают «в никуда». «ДАТЬ БАКС»
Каждая сущность, у которой есть автор («пост», «статья», «комментарий» и прочее) имеют следующую кнопку: «+1» (видимо, с изображением монетки) и сколько денег всего заработала эта сущность всего.
При нажатии на кнопку «+1» с твоего кошелька списывается 1.1$*, на кошелек автора зачисляется 1$, максимальный размер твоего кошелька увеличивается на 1$.
Один пользователь может «дать бакс» одной сущности всего один раз. Дело это анонимное.
ЗАРАБОТОК ДЕНЕГ
Заработок денег — это «невидимая» часть. Логично, что для того, чтобы бабками делиться, нужно их зарабатывать.
За каждый не-твой комментарий к твоей комментообразующей сущности (твоя сущность = там, где ты автор, если это форум, то твоя сущность — это тред, который создал ты) тебе зачисляется 30 центов*.
Заработанные деньги тупо и молча поступают в кошелек, логи не ведутся. (Лучше вообще зачислять их раз в день, чтобы людям меньше было информации «за что и сколько дали»).
МОДЕРАЦИЯ
Модераторы тоже могут давать бакс, на общих основаниях (бакс за сущность), только баксы у них не кончаются. При удалении сущности баксы («сколько денег заработала эта сущность всего» и 30 центов*, если это комментарий) удаляюся со счета игрока. Те, кто эти баксы давал, обратно ничего не получает. Вот вам и борьба с накрутками.
То есть вся модерация — это обычное тупое удаление, как и обычно. Просто бабки отбираются.
КАК ЭТО РАБОТАЕТ
В конечном итоге для пользователя все сводится к одной кнопке «+1» везде (One button to rule them all™). Нажимать на нее полезно, потому что максимальный размер твоего кошелька растет.
В профайле можно посмотреть свой кошелек и его заполненность. Виртуалы могут хоть занажиматься на «+1» — пока у них нету бабок, это не работает. Если какой-то дурак вдруг заведет активного виртуала — ну и пусть, это полезно для сайта.
АУКЦИОН
Раз в месяц на аукционе разыгрываются ценные призы. Добавление от авторов сайта:
КОНСТАНТЫ
* — с этим значением можно поиграться.
Заголовки нужны. Dixi.
Расширенная версия: первая версия моего блога была без заголовков. Ух я потом заебался с этим, когда переходил на новые движки. Поверьте мне.
Да и вообще, заголовок банально идентифицирует текст. Вплоть до того, что я помню некоторые заголовки и могу их найти в поиске.
Потом по этим граблям пробежался Болк, а теперь вот и Бирман.
Бирман, верни заголовки. Когда я читаю «Молодец, Рони! Ну, нужно ещё раз сделать 147, чтобы утереть нос Хендри :-)» вот так сразу и без заголовка, я понимаю, что это буржуазное развлечение снукер только потому, что я знаю о любви Ильи к.
Про облако тэгов хотелось бы понудеть.
Движки, которые выводят облако тэгов на каждой странице, не кэшируя его — ущербны. Например, Wordpress генерирует страницу «пост с комментариями» с помощью 28 (!) запросов к базе данных. Поэтому посещаемые сайты на wordpress-е (не будем показывать пальцем) тормозят безбожно.
Совершенно же логично, что для генерации поста с комментариями — например, в этом блоге — нужно максимум три MySql запроса: 1) вывод поста, 2) вывод комментариев, 3) вывод навигации «Вы сейчас здесь».
Облако тэгов, само по себе — идиотская идея и ненужная фигня, типа календарика. Основная ее «фишка» в том, чтобы вывести список и по алфавиту и по «важности» (выделив это размером).
Тут и кроется самый смешной нюанс — тэги у всех разные. Натурально, разные слова. Начинаются на разную букву. У кого-то ключевое слово «имбецилы», у кого-то — «идиоты», а тема-то одна и та же. Не говоря уже о том, что везде наблюдается смесь английского и русского, которая довольно нелепо сортируется по алфавиту.
От сайта к сайту «оно всё разное». Запоминать ваши тэги/ключслова ни один посетитель не будет, не обольщайтесь. Сортировка по алфавиту бессмысленна.
Сортировка по дате чуть более осмысленна, но а) интуитивно не понятна, б) часто пересекается с сортировкой по популярности (логично же, что чем больше постов по теме X, тем больше вероятность, что про эту тему недавно писалось, в) последние ключслова и так находятся под заметками на первой странице.
«Там решено было цветом выделять последнее, хорошая мысль» — мысль вовсе не хорошая. Цветом нужно выделять только посещенные ссылки. Это принятно, интуитивно понятно, и, что самое главное — это гораздо полезней. Разноцветные ссылки — никому не понятное уебище. Даже если и подписано «Bright Color = Newer» — я захожу на сайт читать, а не оттенки цвета угадывать.
То же самое и с размерами — размеры шрифта — показатель на самый точный. Сколько разных и различимых размеров можно запихать в одно облако? Десяток максимум. Сложнее всего быстро пробежать все «облако» глазами, ибо глаз в любом случае застревает на самых крупных элементах и дальше не идет. И это не плюс, это минус.
Никому никогда не интересны все ключслова. Потому что часто бывает ситуация, когда есть «случайные» ключслова, принадлежащие одному-двум документам.
Как надо
В своем личном блоге проще всего отобрать штук пять ключслов, которые «наиболее характеризуют». И разместить их любым удобным способом. Например, как у меня справа. Вам самому безо всякой «автоматизации» лучше знать, какие ключслова «круче», без привязки к их частоте.
На массовых «социальных сервисах» облако тэгов неинформативно, но нужно для того, чтобы круто выглядеть, и чтобы пальцем не показывали. И для того, чтобы направить леммингов по ими же протоптанной тропинке. В этом случае можно вместо «букав» просто использовать прямоугольники разных размеров и цветов, так как кликнут все равно на тот, который больше. А надписи никто не читает.
Bonus track
Хранить тэги в таблице надо так:
1. В таблице с постами. Отдельное поле «ключслова через запятую». Это не два способа, а один, то есть хранить надо и так и так одновременно. Ценой небольшой избыточности информации мы получаем гораздо больший простр для. Минус только один: при редактировании надо редактировать и то и то, разумеется.
пользователь не увидит. Самые умные уже догадались, как осуществляется контроль версий. Да, тоже поабзацно. (Он и сейчас так осуществляется, но только потому, что так проще).
Баксокарма
2. Валюта — позитивна, так как насильно отобрать бабки ни у кого нельзя. Но делиться бабками можно. А делиться — это позитивно.
3. Для любой виртуальной экономики главное — отсутствие инфляции («удешевления денег»), поэтому нужен прежде всего money sink (средство для слива денег).
4. Система не должна поощрять одних и тех же людей постоянно.
Когда пользователь «дает бакс» другим, максимальный размер его кошелька увеличивается на 1$.
Когда пользователь тратит деньги на аукционе, максимальный размер его кошелька уменьшается на такую же сумму, но максимальный размер кошелька не может быть меньше 100$.
Максимальный размер кошелька — это просто потенциальная его вместимость.
Аукцион — это money sink. То есть человек накопил бабки, слил их все за месяц (люди азартны) — выиграл приз. В следующем месяце у него 0 баксов — появляется шанс выиграть на аукционе у других.
делать аукцион раз в месяц большой, скажем, 3 лота от спонсора
и раз в неделю в пятницу ящик пива
ты бы повёлся? :)Заголовки нужны
Белогривые лошадки
2. В отдельной таблице связей, которая имеет вид «ID поста — ID тэга».