Самое горячее: Европа признала соцсети опасными (50); "Фобос-Грунт" уже не спасти (11); Мобильники убивают детей (26); ЕЩЕ >>
РАЗДЕЛЫ
Архив
« июль 2012  
пн вт ср чт пт сб вс
           
8
15
16 17
23 24 25 26 27 28 29
30 31          

Размышления о социальном графе

Брэд Фитцпатрик (Brad Fitzpatrick)
Ноу-хау | 29.08.2007 11:11

Примечание переводчика. Автор использует два термина: "social net" и "social graph". Social net - "социальная сеть" – это нечто, состоящее из реальных участников, связанных между собой реальными отношениями. А social graph - "социальный граф" – это формальное описание структуры социальной сети. Это математический граф, понимаемый, естественно, не как "графическое изображение", диаграмма, но как некая база данных, содержащая формальный список всех участников социальной сети, которые обозначаются здесь термином "узел графа" (node), и – вторая таблица - список всех установленных между участниками социальной сети попарных связей, которые обозначаются термином "ребро графа" (edge).
_____________________________

Я много думал о социальном графе в последнее время: агрегирование графа, децентрализация, портабельность (переносимость графа) в социальных сетях и т.д.

Я много говорил об этом на конференциях; сделал множество устных и визуальных презентаций; показывал мои слайды (pdf) и изображения графов; обкатал тему на слушателях, на их выражениях лиц, вопросах, на примерах из их опыта и т.д. Блог не очень подходит для изложения и обсуждения такого материала, поскольку аудитория в блоге слишком разнообразна. Я опасался, что если я выступлю слишком рано, то буду завален репликами типа: "как насчет того да этого?" и "все, что ты говоришь – чепуха". Но время пришло, концепция сформировалась, поэтому я здесь ....

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

Задача

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

В настоящее время, если вы создаете новый веб-сайт (скажем, dopplr.com), который нуждается в социальной сети для предоставления одной приятной и полезной функции (например, быть в курсе вопроса: куда ваши друзья путешествуют и когда?), - то вы сталкиваетесь с гораздо большей проблемой, чем просто реализация основного функционала. Вам нужно обрабатывать имена пользователей и пароли (или, к счастью, можно использовать OpenID), нужно иметь функционал приглашения друзей, добавления/удаления их и ... этот список можно продолжать. Потому что вы должны, скорее всего, запросить у пользователя и его е-мэйл; а значит – послать письмо для верификации, и т.д. А затем – возникают ситуации утери имени пользователя или пароля, или адреса электронной почты, и т.д., и т.п. Если бы меня попросили сформулировать это сжато: люди устают от регистрации и повторного объявления своих друзей на каждом сайте; но также: Создание "социальных приложений" - требует слишком больших усилий.

Решение, предлагаемое Facebook, состоит в том, что весь мир должен стать приложениями Facebook. Хотя это прекрасная платформа, и она содержит некоторые удивительные технологии, но вызывает сомнения, что разработчики (сообщество Веб 2.0) станут рабами Facebook, зависящими от ее доброй воли, доступности, будущих владельцев, неизменности правил и т.д. И эти сомнения, мне кажется, вполне обоснованы. Централизованный "владелец" социального графа – плохое решение для Интернета. Я отнюдь не говорю, что следует запретить Facebook; это отличный продукт, и я люблю его, но социальный граф должен существовать вне Facebook.

MySpace тоже содержит много хороших данных, хотя и не все они качественны. Точно также - LiveJournal, Digg, Twitter, Zooomr, Pownce, Friendster, Plaxo ... и этот список тоже можно продолжать. Важно то, что ни один из этих сайтов не должен владеть социальным графом целиком: никто и все одновременно. Граф просто должен существовать.

Цели

1. В конечном итоге сделать социальный граф общественным достоянием, использующим данные всех многоразличных сайтов, но не зависящим от одной какой-то компании или организации, как "главного" владельца этого графа.

1а. Создание некоммерческого (под некоммерческим копирайтом) программного обеспечения с открытым кодом, которое собирает графы у всех сайтов социальных сетей, объединяет их в единый глобальный агрегированный граф и публикует его. Таким образом, этот граф является доступным для всех сайтов или пользователей. Для малых (или редко им интересующихся) пользователей - через публичные API. А для крупных потребителей - в виде скачиваемых дампов. Во втором случае должно поддерживаться итеративное обновление графа – через скачивание или через API.

1б. Поддерживающие такой глобальный граф некоммерческие сервера и базы данных первоначально будут централизованными. Но спроектированы они должны быть так, чтобы все желающие могли создавать собственные сервера, обмениваясь данными друг с другом. По типу "Git", а не "Subversion". Тогда – решение, чьи API/сервера использовать (или запускать свой собственный), - это зависит уже от вас, как владельца сайта.

2. Для разработчиков, которые не хотят сами заниматься анализом исходных данных графа, должны быть обеспечены следующие API-функции высокого уровня:

2а. Эквивалентность узлов. Отправляем API одиночный узел, скажем "brad в ЖЖ", и получаем список всех узлов-эквивалентов: "brad" в ЖЖ, "bradfitz" в Vox и 4caa1d6f6203d21705a00a7aca86203e82a9cf7a (мой FOAF mbox_sha1sum). См. слайды (pdf) для дополнительной информации.

2б. Ребра графа для узла – входящие и выходящие. Задача - найти все исходящие и все входящие ребра графа. Ребра понимаются как "утверждения" (claims), как "истины" (truths), друзья, рекомендации и т.д.

2в. Найти для узла всех совокупных "друзей" (с учетом всех его эквивалентных узлов), дополнить этих друзей их эквивалентными узлами, а затем отфильтровать по типу узла назначения. Эта процедура есть суперпозиция операций [2а], [2б], и снова [2а] в одном обращении к API. Например, для "brad" на LJ нужно получить всех друзей Брэда, по всем его эквивалентным узлам, при условии, что эти узлы-друзья имеют тип либо "mbox_sha1sum", либо "Twitter".

2г. Поиск пропавших друзей узла. Нужно "расширить" исходный узел (просмотреть все его эквивалентные узлы). Потом - найти всю совокупность его друзей. Потом - расширить их тоже. И, наконец, - найти все недостающие ребра (соединяющие узлы, находящиеся в одной социальной сети). Такое API позволяет пользователю синхронизировать свои социальные сети, точнее - списки друзей в различных сетях. Если двое - друзья во Friendster, но не знают, что оба они участвуют в MySpace, то это API даст им знать об этом.

Но в более общем плане (кроме перечисленных API), у разработчиков просто появится возможность думать о совершенно новых видах приложений.

3. Для конечных пользователей

3а. Пользователь должен иметь возможность впервые зайти на "социальный сайт" (например dopplr.com) - в идеале, по OpenID, но не обязательно, - и увидеть диалог такого примерно вида:
"Эй, мы видим по общедоступным данным, что у вас есть уже 28 друзей здесь, на dopplr.com. Вот их список (с обоснованием, как (откуда) он составлен и с никами этих людей на других сайтах). Кого из них вы хотите считать друзьями здесь? Можно нажать 'выбрать всех'."

Кроме того, если вы уже используете сайт dopplr.com, то вы будете узнавать, когда люди, с которыми вы дружны на других сайтах, появляются на нем. И вам будет предлагаться выбор: дружить с ними здесь или нет. Все это - без необходимости повторно приглашать друг друга в друзья здесь, на dopplr.com, а просто по факту, что вы уже объявили (публично) свои дружеские отношения где-то в другом месте. Примечание: некоторые сайты уже начали делать подобные вещи – при помощи различных "хакерских" (в хорошем смысле) уловок. Типа: "введите ваше LJ-имя, чтобы получить ваших LJ-друзей из FOAF", или: "введите свой адрес электронной почты, имя пользователя и пароль, чтобы получить адресную книгу", - но все это получается пока и не красиво, и не радикально.

3б. Снабжение (конечного) пользователя инструментами (типа браузерных надстроек, add-ons), позволяющими ему управлять своими социальными сетями (имеющими или не имеющими соответствующих API), синхронизировать сети друг с другом или делать что-то еще, что угодно, но - в соответствии с выбранной самим пользователем политикой. Причем такие инструменты, скорее всего, наибольшую пользу принесут сайтам, не имеющим собственного "социального функционала". Очень важно также, чтобы пользователю всегда было понятно, что происходит, - так, чтобы не был возможен никакой обман. (Подробнее об этом позже ...)

3в. Граф данных должен быть настолько же переносим (портабелен, portable), как документы на персональном компьютере (хотя, наверное, слово "граф" может быть вообще не известно конечным пользователям).

Что целью НЕ является

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

2. Целью не является создание социальной сети или чего-либо столь же забавного для (конечных) пользователей. Скорее, цель – "создать начинку" (build the guts), которая позволит расцвести тысячам новых социальных приложений (таким как dopplr.com и подобным). Сделайте одну вещь, но сделайте ее хорошо. Будет намного более эффективно, если мы объединим маленькие отдельные социальные графы в один большой социальный граф и распространим его повсеместно, чтобы все могли им пользоваться.

3. Целью не является заменить Plaxo.
4. Целью не является заменить _____.

Допущения

1. Социальный граф содержит как публичные узлы, так и приватные (частные) узлы, как публичные ребра, так и приватные ребра. Мы фокусируемся сейчас только на публичных данных, которые участники согласны свободно распространять по сети, ни от кого не скрывая. Это не решает 100% задачи, но решает, скажем, 90% задачи, занимающие 10% по сложности (реализации). Частные данные могут быть добавлены позднее, возможно, на более высоком уровне реализации. На начальном этапе – работаем только с открытыми (публичными) данными.

2. Кроме того, внимание уделяется в первую очередь связям - данными о "друзьях". А не таким данным, как фотографии (см. movemydata.org), дата рождения, город, интересы и т.д. Есть идеи о том, как включить в граф множество таких публичных не контентных(?) данных, не относящихся к "профилю знакомств". Но заняться этим, несомненно, следует позже – на втором этапе.

3. Существуют как "склонные к сотрудничеству" (кооперативные, cooperative), так не склонные к сотрудничеству сайты. Почти все небольшие сайты, с владельцами которых я разговаривал, желают сотрудничать, понимая при этом, что их собственные (социальные) графы незначительны (are incomplete), и что это – не их специализация ... Они просто хотят, чтобы социальный граф стал им доступен. Их совсем не заботит, откуда он возьмется, и они не считают, что их относительно небольшие объемы данных внесут заметный вклад в улучшение глобального социального графа. Не склонные к сотрудничеству сайты, с другой стороны, - это те, которые уже имеют огромную аудиторию, и либо придают повышенное значение своим правам собственности по отношению к информации, содержащейся в их социальном графе, либо - настолько крупны, что просто равнодушны к этой теме. Обратите внимание, что "отказываться" (от сотрудничества) не означает "активно бороться против", но скорее эта тема просто не является приоритетной для таких сайтов. В любом случае, сайты обоих типов - кооперативные и не кооперативные - должны быть (и будут!) рано или поздно вовлечены в процесс.

4. Весь мир не возможно заставить перейти в массовом порядке ни на какой "протокол взаимодействия социальных сетей", игрушечный XML или что-либо подобное. Этого просто не случится. Система должна поддерживает любые (и все!) способы сбора данных, нотации и т.д. Хитрые новые протоколы и XML/YAML/JSON форматы могут быть решением для взаимодействия с сайтами, настроенными на сотрудничество (и такой подход уже начал разворачиваться для нескольких сразу готовых к сотрудничеству сайтов), но - в общем и целом - большинство сайтов не будут на первых порах готовы к сотрудничеству, а некоторые (например MySpace), возможно, никогда не согласятся на это (работу с "хитрыми протоколами"). Подключение (социально-сетевых) сайтов к обсуждаемой системе будет происходить по одному за раз, и надеяться на использование универсальных протоколов не приходится. Это означает, что эта система будет использовать открытые стандарты, микроформаты и т.д. – со всеми данными, публикуемыми посредством, скажем, виджетов (для тех пользователей, кто любит виджеты).

5. Большинство пользователей не интересует XML, протоколы, стандарты, форматы данных, централизация/децентрализация, хранилища, блокировки и т.п. Вы, читатель этого документа, - не обычный пользователь. Чтобы привлечь нормальных пользователей, мы должны предложить им нечто полезное: некоторые функциональные возможности, легкость, блеск, полезности, - что-то, что они не могут получить в других местах. Хорошие данные порождают пользователей, а пользователи порождают хорошие данные. Есть достаточно идей о том, как раскручивать этот процесс. Подробнее об этом нужно будет думать позже, но, к счастью, уже есть много хороших данных в публичном доступе - через хорошие API и с открытыми форматами данных.

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

7. Хотя надстройки для браузеров (add-on), вероятнее всего, потребуются (пользователю) для того, чтобы осуществлять процедуры добавления/удаления друзей и сбора (от имени пользователя) данных в некоторых не склонных к сотрудничеству социальных сервисах (сайтах), - браузер пользователя никогда не должен использоваться (с его IP-адресом и с его строкой user-agent) для сбора и отправки данных, не являющихся собственностью этого пользователя. Так, например, сбор информации о друзьях пользователя в сети MySpace – это приемлемо (если MySpace это позволит). Но выуживание друзей-его-друзей – уже не катит (isn't cool) потому, что это уже не данные, принадлежащие этому пользователю. Эти данные уже принадлежат либо его друзьям, либо самому MySpace ... но заведомо не пользователю, который скачал (и установил) add-on.

8. Следует признать, что пользователи не всегда хотят автоматически синхронизировать свои профили в разных социальных сетях. Люди используют разные сайты по-разному, и понятие "друг" на одном сайте (зачастую) имеет совсем другой смысл, чем понятие "друг" на другом сайте. Наша цель состоит в том, чтобы просто сделать первичные данные в принципе доступными сайтам и их пользователям. А дальше – им уже самим решать, какой политики они хотят придерживаться.

Статус разработки (development Status)

По состоянию на 2007-08-16 многое из выше изложенного уже реализовано в прототипе:

1. Получены данные по 5-ти крупным социальным сетям, и они промоделированы в графе.

2. Созданы рабочие прототипы (prototyped working implementations) перечисленных выше API (хотя тут много простора для оптимизации работы, кэширования и параллелизма, но на первом месте было желание достичь корректности):
а. Продемонстрирована возможность найти всех моих "потерянных" друзей в Живом Журнале и в Vox - на основе информации о моих отношениях в других местах.

3. начата разработка модуля (plug-in) для Firefox для работы с MySpace.

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

Будущее

Дэвид Рекордон объявил, что он направляется в SixApart, в основном ради работы над такого рода вещами. Plaxo тоже делает интересные связанные с этим штучки. В итоге компании будут создавать платные и бесплатные сервисы на основе этих данных, - такие как API для работы с доверием/репутацией, которые будут помогать Movable Type- и Wordpress-блоггерам идентифицировать спам в комментариях. А именно: каждый комментарий, созданный авторизованным по OpenID автором, уже дает нам информацию об узле графа, но дальше нужно использовать API, чтобы проверить, является ли этот узел "хорошим".

В любом случае, множество людей работают в этом направлении в последнее время - на основе разных подходов. Вполне вероятно, что несколько групп соберутся, чтобы работать над этим вместе, так же как многие группы собрались в сое время для работы над OpenID.

Как вы можете помочь

Вы развиваете социально-сетевой проект? Или имеете данные об узлахов/ребрах графа (пользователей/друзей)? Или хотите участвовать в бета-тестировании API? Будьте на связи ... Присоединяйтесь к Google-группе social-network-portability.

Вы - конечный пользователь, который хочет попробовать (не технические) сайты и инструменты? Тогда – еще рановато. :) Ограниченный доступ для бета-тестеров будет объявлен позднее - теми людьми, кто завершит построение этой системы.

Вывод

Я увлечен этим. Начинайте и Вы думать о том, как сможете воспользоваться преимуществами подобных систем. Это будет круто.

Связанные и близкие по смыслу темы

http://adactio.com/journal/1328 - Джереми Кейт (Jeremy Keith), кажется, тоже занят чем-то подобным; возможно, с несколько иным подходом. Это хорошо. Высоту нужно штурмовать сразу с дюжины направлений.

http://microformats.org/wiki/social-network-portability - вики собирает мысли по поводу ... кажется, про микроформаты? Не уверен. Я утверждаю, что каждый, принимающий только один единственный формата (или API), - идет неправильным путем. Я не хочу создавать нечто исключительно для гиков. Но – для всех пользователей, работающих сегодня с популярными сайтами.

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

http://www.wired.com/software/webservices/news/2007/08/open_social_net - даже Wired попал в струю.

_____________________________

Брэд Фитцпатрик (brad@danga.com) - автор
Дэвид Рекордон (recordond@gmail.com) - соавтор, редактор
2007-08-17

Источник: bradfitz.com/social-graph-problem
Перевод: Иван Сильвестров

разделы: Ноу-хау | Сервисы

Другие ноу-хау

Последние комментарии
об издании | тур по сайту | подписки и RSS | вопросы и ответы | размещение рекламы | наши контакты | алфавитный указатель

Copyright © 2001-2012 «Вебпланета». При перепечатке ссылка на «Вебпланету» обязательна.

хостинг от .masterhost