Личный Информационный Сервер (ЛИС)


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

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

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

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

Всё возрастающее количество социальных сервисов, желание пользователей достаточно просто управлять своей информацией в сети, не завися при этом от одного конкретного сервиса, и позволяя различным сайтам использовать свою информацию (или её часть), не вводя её каждый раз вручную, в конечном итоге должно привести к тому, что я и назвал личным информационным сервером (ЛИС). Теперь я опишу его основные функции, как я их вижу.

Эти функции можно разделить на пять основных типов:

  1. Идентификация в сети. По большей части это OpenID. Но вполне вероятно использование более надёжных вариантов идентификации (с подтверждением личности), когда механизмы такой идентификации станут общепринятыми
  2. Хранение информации человека. Это может быть личная информация (имя, местоположение, образование, работа), контактная информация, адресная книга, списки знакомых в сети, список сайтов/лент, которые человек читает, закладки, информация о деятельности человека в сети (профили на сайтах/сервисах, сообщения в сообществах, комментарии в блогах, выложенные в сеть файлы, посещённые страницы, ...)
  3. Предоставление информации сервисам и людям. ЛИС должен иметь хорошо настраиваемые политики прав доступа, чтобы дать возможность пользователю без особых усилий отдавать только ту информацию, которую он хочет предоставить, надёжно скрывая остальную. Вся информация должна предоставляться в переносимых форматах, а также в семантической разметке (или хотя бы с семантическими мета-данными) для обработки программами.

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

    И не менее важно, что вся эта информация сможет обновляться автоматически. Сервис сможет время от времени запрашивать ваш ЛИС об изменениях (или подписаться на обновления этих данных) и соответственно актуализировать информацию в своей базе. Если вы изменили e-mail, переехали или сменили место работы - вам не понадобится обновлять эту информацию на всех сайтах, где вы зарегистрированы. Достаточно поменять её на ЛИС и по желанию указать, каким сайтам/людям вы хотите сообщить об этом.

  4. Обратная связь. Получение информации от сервисов/приложений в сети. Это вполне логичное продолжение предыдущего пункта. Раз уж информация о человеке (или ссылки на неё) хранится на данном сервере, то она должна обновляться и дополняться внешними приложениями. Конечно, не всеми подряд приложениями, а теми, которым человек разрешит это делать. При регистрации на новом сервисе он может добавить ссылку на себя в список профилей пользователя, добавить список действий пользователя (activity stream) к списку ЛИСа на обновление, добавлять его знакомых/друзей на этом сервисе в общий список (в группы, которые человек определит для этого)
  5. Общение людьми и сервисами. Возможности протокола XMPP (Jabber) позволяют передавать сообщения произвольного типа от любых источников любым получателям. Децентрализованная система, гибкая настройка делают его практически идеальным для любого типа общения между людьми или сервисами. Спам рассылать по нему достаточно сложно, а галочка при регистрации "получать уведомления" может стать не просто символической, а вполне конкретной настройкой для того чтобы позволить или не позволить сервису присылать сообщения человеку. Возможности протокола XMPP не ограничиваются только доставкой сообщений. Многочисленные расширения, в том числе возможность создавать подписки (похоже на RSS ленты, но намного менее затратно по ресурсам) дают возможность применять протокол во многих механизмах будущей социальной сети.

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

1. Я не хочу доверять кому-то все свои данные. ЛИС - это не идея сервиса. Это концепция ПО (или набора ПО). Его можно установить на любую машину в сети, которой вы доверяете. Если не доверяете никому - можно установить на свой домашний компьютер.
Когда же вы передаёте свои данные какому-либо сервису, то тут уже вы сами должны найти компромисс между приватностью и социализацией, т.е. сколько и каких данных вы можете доверить этому конкретному сервису.

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

3. Я не хочу смешивать свои профили (и личности) с разных сайтов. Это естественно. Вашим знакомым с оного сайта совсем не обязательно знать, что вы делаете на других сайтах. Поэтому хорошее ПО для ЛИСа должно поддерживать группировку данных по различным наборам признаков, лёгкое разграничение этих групп и переключение между ними.

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

Хотелось бы услышать ваше мнение о концепции в общем.

По моему это тоже самое что каждому создать своего хомяка и список с хоумпагами друзей + емайлы для ЛС. Каждую страницу описать микро форматом типа RDF и сервисы информацию возьмут. И система будет децентрализована. И вот родился Интернет 238884599.

>Возможности протокола XMPP (Jabber) позволяют передавать сообщения произвольного типа от любых источников любым получателям.

Более того, этот протокол расширяем, поэтому можно просто навесить на него половину из этих функций, если не все.
ЗЫ: интересным было бы прикручивание jabber к openID. А если расширить его слегка, вся необходимость в соцсетях может быть удовлетворена им одним. Учитывая, что XMPP — это XML, его можно будет без проблем транслировать в RSS и XHTML (и наоборот).

XMPP - протокол для обмена сообщениями (он даже называется так)
Нет смысла делать из него второй HTTP или ещё что-то.

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

>Идея бы сильно продвинулось, если бы удалось создать портал для ЛИС, который был бы настолько удобен, как Gmail для почты.

Я сейчас работаю над этим.

>Грубо говоря никнейм у нас будет один

ЛИС и нужен для создания единого идентификатора человека. Впрочем, ничто не мешает привязать к одному ЛИСу несколько идентификаторов. И если пользователь сам не расскажет, то никто не узнает, что эти идентификаторы принадлежат одному человеку.

>Видение обратной связи с сервисами

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

Спецификация OpenID 2.0 уже поддерживает обмен личной информацией между сервисами, быструю регистрацию, не говоря уже о расширенной идентификации..

Вывод: здесь описан OpenID второй спецификации.

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

Для остальных пунктов OpenID не годится да и не предназначен.

Ну если OpenID Authentication считать "единственным настоящим OpenID", тогда конечно да. Сами OpenID Foundation не относят эти спецификации к "расширениям" - это всё части протокола.

Сейчас настоящий обмен личной информацией только в OpenID и работает (я русский сегмент имею в виду). Других примеров я не знаю.

Обе этих спецификации в названии имеют слово "Расширение". Поэтому странно заявлять, что они не относятся к расширениям :)

Обмен личной информацией работает через SRE. Через AX пока никто не научился. И я сомневаюсь, что когда-нибудь научится.