Вадим Барсуков (vadbars)
В блоге разработчиков googlewave-подобной технологии Corvalius была опубликована статья «Say goodbye to collaboration». Английская версия статьи тут: http://www.corvalius.com/blog/?p=88
Одна из идей статьи заключается в проведении различия между «коллаборативным» и «ко-оперативным» подходами к совместной обработке информации. Постулируется, что происходит переход от «коллаборативной» модели к «ко-оперативной».
Суть этого различия можно свести к следующему:
«Коллаборация» — я что-то делаю (изменяю информацию), потом кто-то другой может это изменить. «Ко-операция» — я что-то делаю (изменяю) вместе с кем-то другим одновременно.
В первом случае текст предоставляется на всеобщее обозрение и дается возможность его изменять. Во втором случае текст создается как результат совместного и одновременного редактирования.
Второй, «ко-оперативный» подход представляется близким к идеям «concurrency control» и «Operational Transformation» (OT), реализованным в технологии Google Wave (http://www.waveprotocol.org/whitepapers/operational-transform).
Далее мои размышления на эту тему (возможно, банальные и/или ошибочные). Их несколько.
Первое. Я полагаю, что между «кооперативным» и «коллаборативным» подходами нет жесткой границы. И там и там происходит по сути последовательное (растянутое во времени) трансформирование исходного текста. Но в случае «кооперативного» варианта, во-1-х, трансформируемый фрагмент сведен до минимума (один знак), и, во-2-х, предельно сокращен промежуток времени, требуемый для такой трансформации. Причем второе сильно зависит от первого (скорость от размера). Дробим текст на как можно меньшие единицы и, следовательно, получаем возможность как можно быстрее менять их — вот секрет «одновременности» и параллелизма ко-оперативного подхода.
Второе. Как мне кажется, обе модели предельно упрощены и сведены к одноранговой схеме распределения прав. В них предполагается, что все участники процесса редактирования могут одинаковым образом влиять на итог редактирования текста. «То, что написал я, можешь поправить ты». Вносимые участниками изменения конкурируют «на равных» за ресурсы сервера, который и формирует итоговый документ на основе этих изменений.
Но это, конечно, сильное упрощение. В реальности никогда не бывает подлинно однорангового редактирования. Даже если все участники формально равноправны, существует либо участник, либо правило, которые определяют момент завершения редактирования и узаконивают итоговый текст. Иными словами, в схеме редактирования всегда имеются привилегированные компоненты.
Поэтому рано или поздно придется от плоской модели Operational Transformation переходить к иерархической. В ней должен быть учтен субъект(ы), решение которого окончательно закрепляет изменения в тексте, вносимые конкурирующими участниками. Соответственно, это влияет на то, к какому состоянию должны быть приведены текст на сервере и в клиентах участников.
Кто или что является таким привилегированным субъектом или, если угодно, «аппаратом цензуры» (этот субъект ведь определяет, что из исправлений войдет в итоговый текст) — тут есть два/три варианта:
а) вариант «Произвол»: имеется некий привилегированный участник редактирования (человек или бот), который оценивает исправления других участников и оставляет последнее слово за собой, имея право объявить тот или иной вариант текста как итоговый. Либо тот субъект, чьи исправления имеют приоритетное значение;
И/или б) вариант «Закон»: имеются обезличенные правила, согласно которым в данной системе принимаются или отвергаются предлагаемые участниками исправления. Правила могут быть самого разного рода, например, грамматические, технические или содержательные.
А куда, скажете вы, отнести «свободное и равноправное» редактирование («ко-операция» / «коллаборация»)? Думаю, что здесь тоже нет равенства в правах участников, поскольку есть как минимум одно правило, выбирающее окончательный вариант текста — «побеждает тот участник, кто исправил текст последним». Образно говоря, в данном случае привилегии имеет время.
Назовем эту ситуацию вариантом в) вариант «Время», хотя в общем-то это редуктивный случай варианта «Закон».
(В качестве аргумента неизбежности перехода к иерахической системе приведу такую аналогию: даже Википедия не осталась, как задумывалось, той «абсолютно свободной» анархической wiki, где произвольно вносятся любые изменения в текст статей. Сообщество выработало свод правил и шаблонов управления текстом, а также сформировало некий «комитет», который формулирует эти правила и следит за их исполнением).
К чему все это и как относится к Google Wave? Возьмем пример с ботом, который занят автоматическим исправлением синтаксических ошибок в набираемом вами тексте. Его демонстрировали в презентации на Google Wave I/O. Замечательный бот. Но что произойдет, если я попытаюсь сознательно ввести «неправильное» слово? Например, какой-то неологизм или что-то из арго (жаргона), неизвестного системе. Предполагаю, что бот насильно исправит мою «ошибку». Я вновь напишу, то что хотел. Если я окажусь упертым мужиком, это развлечение может затянуться надолго. 🙂
Как видим, уже действует либо модель «произвол» (бот — привилегированный участник), либо модель «закон» (есть правила, что мне писать или не писать, что появится в итоговом документе, а что будет немедленно исправлено или даже не появится на экране).
Аналогично можно рассмотреть бота-переводчика Rosy, который для перевода опирается на статистику употребления слов в массиве текстов интернета, проиндексированных Google. (Там есть отдельная тема: правильно ли считать, что если «так все говорят», то так и следует переводить. Но это уже другая проблема).
Очевидно, для избежания «бесконечного цикла» исправлений должны быть (и, скорее всего, уже) предусмотрены механизмы корректировки пользователями работы бота, либо способы его временного или постоянного отключения. (Кстати, а почему только бота, а не человека?)
Иными словами, опять реализуется иерархическая модель редактирования (т.е. происходит изменение правил взаимодействия участников, либо появление привилегированного участника), а не модель чистой конкуренции между изменениями, вносимыми участниками редактирования.
Это уже не «коллаборативная» и не «ко-оперативная» модели, а их некий синтез. К третьей модели удачно подошло бы название, которое использовал qMax (к сожалению, я не читал его заметку, есть ссылка?) — «коллегиальная» обработка информации. Если ее принцип сформулировать одной строкой, то можно было бы написать так: «Мы посовещались и я решил». 🙂