Продолжение темы про метапартийную систему и про облачную диктатуру. Третья серия.
Начало здесь:
Метапартийная системаПродолжение здесь:
Зажигалка для облачной диктатуры Фэйсбук - социальная сеть, управляемая из единого центра. ВКонтакте, Одноклассники, Linkedin и все другие им подобные - тоже. В каждой из этих сетей есть некий центр, который выполняет следующие функции:
1. Определяет основные принципы функционирования всей конструкции.
2. Осуществляет аутентификацию посетителей.
3. Блюдёт сохранность контента.
4. Занимается поддержанием логической целостности и непротиворечивости.
5. Пресекает безобразия.
6. Разруливает конфликты.
7. Заботится о популярности соцсети.
8. Организует извлечение прибыли посредством своего детища.
9. … ??? …
У децентрализованной соцсети по определению нет центра, который выполняет эти архиважные и многотрудные функции. Тем не менее, функции эти по-любому должны выполняться, иначе вся конструкция рухнет, даже толком не успев родиться.
Тема «Управление в безиерархических системах» (а децентрализованная соцсеть - это как раз система, в принципе не предполагающая никакой «основной» иерархии) отвратительно проработана. По сути, не проработана вовсе. Вся теория управления, которую мы имеем сейчас, предполагает, что всё делится на управляющие системы и на управляемые системы. Для процессов управления, протекающих в системах, не имеющих ни верха, ни низа, у нас нет даже теории. Ну да и ладно. Будем ориентироваться на чутьё и на чувство прекрасного.
Чтобы немножко подбодрить читателя, приведу три примера, существование которых однозначно свидетельствует в пользу того, что безиерархическое управление - это не мираж, а штука вполне реальная и чрезвычайно практичная.
Пример первый. Рыночная экономика. Если свято блюдётся принцип добровольности вступления в сделку (а любая экономика является рыночной ровно настолько, насколько чётко и неукоснительно соблюдается этот принцип), то каждый акт обмена является реализацией свободной управляющей воли покупателя и продавца. Можно сказать, что продавец не управляет покупателем, а покупатель не управляет продавцом. Но также можно сказать, что и продавец управляет покупателем, и покупатель управляет продавцом. Оба утверждения одинаково правильны, и использование того либо другого утверждения всецело зависит от того, какого рода нюансы происходящего нам в момент говорения наиболее интересны. Думаю, не сильно погрешу против истины, если скажу, что даже в сильно придавленном состоянии рыночная экономика даёт вполне ощутимые, полезные, и даже съедобные плоды.
Пример второй. Человеческий мозг. Он - система управления, но построенная совсем не на тех принципах, которые легли в основу теорий управления, этими самыми мозгами порождённых. В мозгу нет иерархий. Нет самого главного нейрона. И даже нет самого главного отдела. Все равны. Нам, конечно, нравится в своих рассуждениях о мироустройстве думать, что на вершине нашего «Я» - разум, властвующий над нашими поступками. Но это не более чем красивый предрассудок. Попробуйте задержать дыхание хотя бы на пару минут, и вы явственно почувствуете, кто временно стал главным в доме.
Пример третий. Совсем близкий к нашей тематике. Естественная сеть межличностных связей, складывающаяся в социуме. Есть ли контора, централизованно управляющая содержимым записных книжек граждан? Сейчас, конечно, Фейсбук в ненасытности своей вознамерился всосать и захавать в себя содержимое всех телефонных справочников всех мобильников мира (с исключительно благими, ессстессстно, побуждениями), но идеала он всё равно не достигнет. Потому что, во-первых, не всё ему отдадут, и, во-вторых, отнюдь не всё вносится в мобильник. Сеть межличностных связей рождается децентрализованной, и сделать её централизованной невозможно при любом желании и любых финансовых возможностях.
Итак, зарядившись вдохновляющими примерами, продолжаем. В принципе, примеров можно привести ещё великое множество потому что самоорганизация (а безиерархическое управление - это как раз и есть самоорганизация) - она везде, она - один из базовых принципов, на которых держится наш хрупкий мир.
Управляющая функция 1. Определение основных принципов функционирования соцсети.
Эти самые основные принципы могут (должны) быть реализованы как семейство стандартов и протоколов. По сути, это законодательство, которое участники взаимодействия обязуются выполнять. Притом, в отличие от значительной части юридического законодательства, никого не нужно заставлять соблюдать стандарты. Они сами заставляют себя соблюдать. Нет, ну, конечно, никто не мешает изготовить нестандартную гайку, но для неё никогда не найдётся подходящего болта.
Проектируя систему стандартов, для начала можно опереться на стандартную модель OSI. При этом можно исходить из того, что стандарты и протоколы децентрализованной соцсети будут находиться на пятом (сеансовом), шестом (представительском) и седьмом (прикладном) уровнях модели OSI. Ничего нового на тему физического, канального, сетевого и транспортного уровней изобретать не нужно. Считаем, что TCP/IP заведомо покрывает все имеющиеся на этот счёт потребности. Более того, там, где это возможно, было бы предпочтительно опираться на существующие стандарты и протоколы прикладного уровня: HTTP, SOAP и другие.
Можно выделить несколько основных требований, которым должны удовлетворять принимаемые стандарты:
- Стандарт должен быть открытым. То есть он не должен быть привязан к технологиям, не опубликованным в открытых источниках и технологиям, для использования которых требуется согласие правообладателя. Копирасты - на редкость вонючая и склочная публика. Судами и интригами в коридорах власти они могут закошмарить кого угодно. Лучше с ними вообще не связываться.
- Требование чистоты замысла. Стандарт должен исходить из того предположения, что сеть является децентрализованной. То есть если стандарт для своей реализации предполагает создание какого-нибудь «единого реестра чего-нибудь», то этот стандарт не отвечает требованию чистоты замысла, и поэтому не может быть принят.
- Требование масштабируемости. Когда-то давно один известный деятель предположил, что 640 килобайт оперативной памяти должно быть достаточно для любых задач. Он оказался не прав. Не будем повторять ошибки. Сейчас невозможно оценить даже порядки величин, до которых может вырасти детище. Соответственно, закладываться на то, что, например «количество серверов вряд ли когда-нибудь превысит 10 миллиардов», глупо и безответственно.
- Требование расширяемости. Нужно сразу рассчитывать на то, что любой стандарт, родившийся как «версия 1.0», рано или поздно может получить продолжение «1.1», «2.0», «10.0» и т.д.
- Требование сменяемости. В самой глубинной основе любого стандарта или протокола может быть обнаружен принципиальный неустранимый дефект. Нужно изначально исходить из того, что потребность, покрываемая стандартом, может со временем быть покрыта каким-нибудь принципиально другим способом. То есть бывает не только ввод стандарта в эксплуатацию, но и вывод стандарта из эксплуатации.
- Устойчивость к случайному либо злонамеренному несоблюдению стандарта. Например, стандарт SMTP не устойчив к злонамеренному несоблюдению, и поэтому я время от времени получаю письма с предложением купить немножко виагры от самого же себя.
- Устойчивость к изменению ситуации. Нужно заранее учитывать, что любой узел сети (сервер, участник, сообщество и т.п.) в любой момент времени может совершить резкий разворот на 180 градусов. Это может случиться как в результате смены владельца (либеральный ресурс может, например, быть перекуплен сталинистами), так и в ходе естественной эволюции взглядов, интересов, убеждений. «Силовой вариант» тоже исключать нельзя.
Эти пункты - ещё не принципы функционирования сети. Это метапринципы, то есть принципы, определяющие принципы функционирования сети.
Что касается самих принципов, то их формирование - это забота и область ответственности участников процесса: администраторов/модераторов серверов и сообществ, а также тех физ. лиц, которые ногами голосуют за то, чему суждено жить и развиваться, а чему пора бы уже кануть в Лету.
Управляющая функция 2. Аутентификация.
Аутентификация в децентрализованной системе - это настоящий кошмар. Самая гнусная проблема, от решения которой зависит всё.
Даже в централизованной системе аутентификация - весьма не простая штука с множеством нюансов. В децентрализованной системе всё на порядок сложнее.
Суть проблемы можно сформулировать так: каким образом абонент Боб может удостовериться в том, что письмо пришла именно от Алисы? Если у нас централизованная система, мы имеем право априорно предположить, что, получая письмо, Боб хотя бы знает, что на свете есть Алиса, и знает, кто она такая. В децентрализованной системе Боб должен иметь уверенность, что он имеет дело с Алисой, но при этом он до получения письма ни сном ни духом может не знать, что на свете есть какая-то Алиса.
Приведу пример. Допустим, я зарегистрировался где-нибудь на forums.kuban.ru. Потом иду, например, на хабрахабр и хочу вставить там свои «пять копеек». Хабрахабр мне говорит: «Постой, товарищ. Охолони. Я тебя не знаю. Сначала зарегистрируйся у меня, а потом уже пиши тут свои гадости». Ну да, на хабре есть кнопка «войти через facebook» (сейчас не работает, кстати). Но чем «Кубань» хуже фэйсбука? Нет, ребята, в полностью равноправной сети так не бывает, чтобы некоторые животные были равнее других.
Как в полностью децентрализованной сети может выглядеть удобняшка «войти через…», если он будет реализован через OpenID-подобную схему? Страшно он будет выглядеть. Десятки, сотни тысяч вариантов. Это просто невозможно. Это просто катастрофа.
Нужно, чтобы, войдя в сеть, я один раз авторизовался - и всё, я авторизован везде. Всё «облако» меня знает, и лишних вопросов уже не задаёт. Никогда. Только в этом случае я смогу работать с «облаком» как с единым целым.
Итак, Боб получает письмо, подписанное «Алиса». Кто такая Алиса - не понятно. Может быть, это вовсе никакая не Алиса, а самый страшный в мире террорист Ахмед. Если же Алиса в своём письме докажет, что с нею лично знаком всем известный господин Марк Цукерберг, то Боб пример к исполнению просьбу не какой-то абстрактной Алисы, а «Алисы, которую как «Алиса» знает лично тот самый Цукерберг». Это совсем другое дело. Уважаемый господин Цукерберг ведёт «единый-реестр-знакомых-марка-цукерберга», и пока ему, Цукербергу, есть доверие, есть доверие и этому реестру.
А представьте себе, что этих реестров стало сотни тысяч. И доверия к ним - ну никакого. Ну и что с того, что наша Алиса может доказать, что её знает Семён Иваныч из Краснодара? Сразу возникает вопрос: а кто такой этот самый Семён Иваныч, и почему ему можно доверять? А вдруг он и есть - тот самый Ахмед, а «Алиса» - один из миллиона ботов, которыми он кошмарит многострадальный рунет?
Если каждый может представиться кем угодно, и это невозможно никак проверить, то невозможно заработать себе репутацию. Даже невозможно вести диалог. Нет идентичности - нет доверия. Насколько надёжным может быть идентичность, настолько высоким может быть и доверие. Технологии, гарантирующие идентичность в децентрализованной сети, должны быть на порядок более надёжными, чем аналогичные технологии, применяемые сейчас.
И дело не только в аутентификации физ.лиц. Аналогичным образом должна бульдожьей хваткой держаться и идентичность серверов, подсетей, групп, … да всего, без идентичности чего не обойтись.
Что «на вскидку» можно предложить - это создание самоконфигурирующейся сети доверия по принципу того, что было реализовано в PGP. Однако понятно, что:
- Тема требует дополнительной проработки.
- Важно не переусердствовать. Если в результате того, что некий пользователь Вася решил поставить смайлик в комментарий к понравившейся фотке, сеть будет вставать на уши и прокачивать через себя мегабайты электронных подписей - это будет уже как-то слишком.
И ещё один маленький, но очень существенный момент. Традиционные соцсети очень плохо относятся к тому, чтобы человек заводил себе нескольких альтер-эго. Однако в децентрализованной соцсети это должно быть само собой разумеющейся совершенно нормальной практикой. Какой-нибудь Иван Петрович, стоматолог, увлекающийся собиранием марок, вполне может завести себе двух персонажей. Первый встроится в подсеть, обсуждающую новости зубоврачевания, а второй персонаж будет добавлять к себе в друзья других ценителей филателистических редкостей. А смешивать эти две стороны жизни - нет ну никакого резона.
Немножко базовых понятий по нашей теме.
Чувствую, что двигаться дальше очень сложно, не определив несколько очень важных понятий.
«Облако». Облако - это единое целое, являющееся единым целым весьма условно. Физически это непонятно что непонятно где, однако работающее как единый объект и обладающее вполне предсказуемыми свойствами. Уже сейчас Интернет в его целокупности - типичное «облако». Когда мы говорим «поищи это в Интернете», мы оперируем понятием «Интернет» как понятием, обозначающем некое единое целое. Хотя, конечно, Интернет - это набор весьма обособленно существующих серверов, линий связи, реестров, маршрутизаторов и т.п. вещей, о которых обычному пользователю даже думать без надобности.
«Виртуализация». Под виртуализацией обычно понимается переселение вещей, которые мы привыкли видеть конкретными, грубыми и зримыми, куда-то… ну да, например, в какое-нибудь «облако». Возьмём, например, деньги. Если сто рублей лежат в кармане, то эту бумажную деньгу можно вынуть из кармана, рассмотреть, пощупать, потратить. Но сто рублей могут лежать на карточке. Стольник, лежащий на карточке, из этой самой карточки никак невозможно выцарапать чтобы рассмотреть и потрогать. Однако его можно потратить. То есть главное свойство денежки осталось, но всё остальное скрылось куда-то вглубь банковской системы.
«Идентичность». Весьма сложная философская категория, обозначающая самотождественность любой вещи. Даже в грешном материальном мире самотождественность не всегда очевидна. Мы, конечно понимаем, что нельзя дважды войти в одну и ту же реку, но вполне можем предполагать, что одна и та же река Волга, которая, как известно, впадает в Каспийское море, текла примерно там же и впадала в то же самое Каспийское море и тысячу лет назад. Применительно к теме «облаков» идентичность всего и вся становится предметом неустанной заботы. Попользовавшись сегодня каким-нибудь «облачным» ресурсом, я могу захотеть попользоваться завтра им же. Не «аналогичным», не «очень похожим», не «неотличимым по своим свойствам», а именно им же.
«Сообщество». Под сообществом можно понимать множество участников, тем, информационных ресурсов и т.п., обладающее собственной идентичностью, несмотря на постоянно меняющийся состав участников, тем, контента, сервисов и т.п.
Управляющая функция 3. Обеспечение сохранности контента.
Администрация YouTube даёт честное пионерское, что выложенное пользователем видео никуда не денется и никак чудовищным образом не исказится (понятное дело, если не будет против того у других участников обоснованных возражений).
Кто будет заботиться о том, что ништяки, выложенные в «облако», никуда не денутся? Допустим, я вырастил совершенно восхитительную фиалку и помещаю её фотку в сообщество «фиалки». Если я помещаю её на конкретный сервер, администрация которого клянётся, что помещённые туда данные никуда не денутся - это одна история. Но гораздо интереснее было бы иметь возможность поместить портрет фиалки прямо в «облако», не забивая себе голову подробностями, которые мне не интересны.
Как это ни странно, если грамотно сочинить протокол, формализующий расползание контента по сети, конструкция может получиться гораздо более надёжной и даже более экономной, нежели то, что мы имеем сейчас. Даже не смотря на то, что нет ни одного участника процесса, который брал бы на себя обязательство блюсти сохранность контента.
Управляющая функция 4. Поддержание логической целостности и непротиворечивости.
Есть информация о том, что Толя кореш Коли. По данным из другого источника, Толя и Коля вдребезги рассорились. Где правда, если оба источника равноправны? База данных Фэйсбука держит себя в согласованном состоянии. Если Толя удаляет Колю из друзей, то получить ответ «Да» на вопрос о дружбе Толи и Коли просто неоткуда. А если в принципе не существует единой «самой главной» базы данных, в которую каждое изменение вносится одномоментно, одной транзакцией - что делать?
На самом деле, ничего страшного. Просто надо сразу учитывать, что для хранения/распространения одних видов информации децентрализованная структура годится, а для других - нет. Не так уж много есть видов информации, где непротиворечивость действительно жизненно необходима. Например, в финансовых расчётах она необходима (при переводе денег из банка А в банк Б списание средств со счёта в банке А стопроцентно должно быть согласовано с поступлением ровно той же суммы на счёт в банк Б). А в вопросе дружбы Толи и Коли вполне может быть так, что Коля считает себя корешом Толи, а Толя - нет. Это нормально.
Когда будет возникать вопрос о применимости децентрализованной сети для решения какой-либо конкретной задачи, то вопрос о необходимости поддержания целостности и непротиворечивости можно использовать как лакмусовую бумажку: если для выполнения функции необходимо поддержание непротиворечивости, полная децентрализация невозможна. Впрочем, и здесь всё не так суицидально. В таких случаях можно использовать гибридную структуру. Например, для обмена мнениями (какая может быть непротиворечивость мнений?) используется децентрализованная архитектура, а как только возникают финансовые расчёты, задействуются специальные вполне себе централизованные расчётные центры.
Управляющая функция 5. Поддержание порядка.
В децентрализованную соцсеть сразу же ломанётся всякая шваль. Воры, мошенники, спамеры, детские порнографы, шантажисты, проповедники, спецслужбы, сумасшедшие и многие, многие другие неприятные персонажи. А что? Вольница ведь. Нет ни единых администраторов, ни модераторов. Кто позаботится о несчастном простом пользователе? Как защитить его от хамства, обмана и моральной эксплуатации?
И вот тут как раз вполне можно рассчитывать на появление обратного эффекта. Из первоначального хаоса могут (и должны) возникнуть структуры, поддерживающие порядок. Не глобальный порядок (он вообще не возможен), а локальный порядок. Центры доверия. Ведь не может быть единого центра доверия, которому доверяют абсолютно все. Это миф. Мусульманин никогда не будет полностью доверять центру, контролируемому иудеями, астролог не будет доверять центру, контролируемому Академией наук, борец за гражданские свободы не доверится центру, контролируемому спецслужбами.
Удобно, конечно, довериться чему-то большому, обещающему вечный мир и процветание. Например, администрации Фэйсбука. Или Гуглу. Или государству. Или Страсбургскому суду. Или Верисайну. Довериться целиком и полностью. Но единственный результат, которого можно ожидать от этого - чрезвычайно жёсткий облом. Рано или поздно тот, кому лично вы доверились, может лично вас сдать. Причины - разнообразны и непредсказуемы. Может случиться так, что ваши интересы войдут в противоречие с его интересами. Или ему сделают предложение, от которого он не сможет отказаться. Или сдача лично вас будет малым злом, на которое он решит пойти для предотвращения большого зла. Почитайте историю. Она переполнена примерами такого рода.
В ситуации, когда всем сразу чётко понятно, что здесь каждый сам за себя, люди ведут себя немножко по-другому, чем тогда, когда их уверили (конечно же, в очередной раз обманули) в полной защищённости. Именно в ситуации «каждый сам за себя» выкристаллизовываются локальные центры доверия, которые способны с аподиктической достоверностью доказать, что им можно доверять.
С точки зрения инфраструктуры децентрализованной соцсети весь вопрос обеспечения возможности возникновения таких центров сводится к проблеме поддержания и подтверждения собственной идентичности. Если я обратился, например, к Яндексу с запросом о благонадёжности какого-то ресурса, я должен быть уверен, что ответ я получил именно от Яндекса (понятное дело, что в данном случае я должен интерпретировать ответ не как «ресурс благонадёжен», а «у Яндекса нет сведений о том, что ресурс не благонадёжен»).
Управляющая функция 6. Разруливание конфликтов.
Какого рода конфликты могут быть в соцсети? В принципе, всякие, но какие из них могут требовать вмешательства администрации? Кто-то кого-то назвал дураком, и обиженный требует принять меры к обидчику? Наверно, всё же нет. Кто-то кому-то наврал с три короба, и обманутый требует навечно забанить жулика?
Лично мне кажется, что единственный вид конфликта, который может потребовать вмешательства инфраструктуры - это конфликт, связанный с кражей личности. То есть опять же возвращаемся к теме аутентификации.
Управляющая функция 7. Забота о популярности соцсети.
А не надо как-то специально заботиться о популярности децентрализованной соцсети. Не надо рекламных кампаний. Не надо спонсорских контрактов со спортивными командами. Ничего этого не надо. Кто-нибудь где-нибудь видел, чтобы спонсором чего-то выступал Интернет (не какой-то конкретный сайт, а весь Интернет)?
Так и децентрализованная соцсеть. Как только она станет реально полезна, начнётся самопроизвольный рост. Чем больше будет увеличиваться охват, тем больше будет расти полезность. Закончится рост как только будет достигнут естественный предел.
Управляющая функция 8. Извлечение прибыли.
Поскольку сеть децентрализованная, она не может иметь никакого центра, собирающего прибыль. Каждый участник пусть сам собирает то, что сумел заработать.
Вполне резонный вопрос: а какую же награду получат те, кто будет стоять у истоков этого всего безобразия, кто будет вырабатывать стандарты, создавать первые утилиты, продвигать идею в массы пока вся конструкция ещё не научилась расти сама? Прямой немедленной выгоды, возможно, не будет никакой. Но ведь чертовски приятно на вопрос «Умеете ли вы работать с протоколом …?» ответить примерно так: «Я был автором первой его реализации на Андроиде. Да и в той реализации, которая всеми используется сейчас, осталось примерно тысяча строк моего кода». Разве плохая конфетка?
Пару слов в заключение.
Кто говорит, что всё украдено до нас, что все велосипеды уже изобретены - у тех просто слабо развита фантазия. Вот и тема децентрализованной соцсети - это целина, о существовании которой пока что вообще мало кто догадывается. А пройдёт десяток-другой лет, и к этой штуке уже будут в стандартной своей комплектации подключаться и мобильники, и кофемолки, и системы видеонаблюдения, и поезда дальнего следования.
Не надо расстраиваться из-за того, что нам уже никогда не суждено изобрести книгопечатание, телефон, телевидение и Интернет. Есть возможность изобрести децентрализованную соцсеть, и это будет не менее круто. И это уж точно будет круче, чем Фэйсбук.