'

Brad Fitzpatrick Google, Inc. 2007-12-19

Понравилась презентация – покажи это...





Слайд 0

Brad Fitzpatrick Google, Inc. 2007-12-19


Слайд 1

2 Открытие Социального Графа или… “Интероперабельность: Прошлое, Настоящее и Светлое Будущее” День Google Code Москва, 2007-12-18 Brad Fitzpatrick Google, Inc. 2007-12-19


Слайд 2

3 О докладчике Автор и создатель … LiveJournal Блоггинг + социальная сеть Система точных настроек безопасности для всего RSS/Atom (публикация + потребление данных) Агрегация каналов данных Открытые, документированные API OpenID Децентрализованный протокол идентификации Без определённой аварийной точки (авария в каком-либо месте не мешает работе системы) Инфраструктурные компоненты для сайтов с высокой нагрузкой Memcached, MogileFS, Perlbal, djabberd (XMPP сервер), …


Слайд 3

4 О докладчике Вещи, которые меня вдохновляют… Децентрализация Интероперабельность, Кооперация Открытые протоколы Социальные сети


Слайд 4

5 Сегодня мы обсудим… Социальный Граф Как мы все связаны друг с другом? Социальные приложения … делаем полезные вещи с помощью Социального Графа Интероперабельность Единый Социальный Граф, или тысячи несвязанных друг с другом? Или и то и другое? Как писать социальные приложения? И где их запускать? Безопасность Личные идентификаторы, личные отношения, персоны, … Где находятся данные? Светлое будущее Проблески надежды на горизонте


Слайд 5

6 Социальный Граф Как мы связаны друг с другом В мире существует только один реальный социальный граф Каждый сайт представляет только свою собственную часть или реплику единого графа Направленный граф Некоторые сайты моделируют такой граф как симметричный (ненаправленный) по разным причинам (вирусное продвижение, меньше объяснений, проще код?) “Гигантский Глобальный Граф”, Тим Бернерс-Ли http://dig.csail.mit.edu/breadcrumbs/node/215 ГГГ, от изобретателя WWW Связывает людей + отношения, не документы (как WWW)


Слайд 6

7 Социальные Приложения Сообщение Пихнуть (Poke) Идиоматическое выражение из Facebook: функция (приложение), которое позволяет быстро отправить человеку прикольное напоминание что-нибудь сделать (или просто появиться) Кинуть овцу (Throw sheep) Идиоматическое выражение из Facebook: функция (приложение), которое не просто отправляет человеку инвайт или напоминание, а картинку (в данном случае овцы. Есть варианты с пивом, впрочем). Модернизированный вариант «Пихнуть». …. Dopplr.com: Определяет дни путешествия и пункты назначения, Потом сообщает, кто из ваших друзей будет в том же месте. Система должна знать ваших друзей, чтобы это сделать Это социальное приложение, потому что … оно зависит от ГГГ. Должно ли оно заново спрашивать вас о друзьях? Или самостоятельно взять откуда-то эти сведения? Откуда?


Слайд 7

8 Безопасность, Персоны, … Персоны Пример: Работа (Профессиональные) Открытый Интернет (много не открываем) Персональные (только для друзей) Синхронизировать аккаунты только одной и той же персоны Не позволяет открывать одной персоне другую, пока на то нет желания. OK: открытый интернет --> работа (зависит от пользователя) Не OK: работа --> открытый интернет (снова, зависит от пользователя)


Слайд 8

9 Безопасность, Персоны, … Что может быть закрытым? Идентификаторы могут быть закрытыми Когда идентификатор является контактом (email, IM, телефон) Если открыть в общий доступ свою почтовую адресную книгу как сеть друзей… То у вас ещё долго не будет так много друзей, как было :-) Вы можете открыть свою собственную контактную информацию: … вы шпион. Звонки в 3 ночи в порядке вещей... Дополнительные деньги! Отношения, даже без контактной информации, могут быть закрытыми. Пожалуй, не очень разумно указывать отношения «Друг (френд)» одновременно с женой и с любовницей в рамках открытой социальной сети (сайта). (Справедливо для одной и той же персоны, впрочем :-))


Слайд 9

10 Разрастание Социальных Сетей Мой личный опыт LiveJournal Я, и только я использовал и поддерживал свою сеть. Там были все мои друзья. Всё было просто. Friendster, MySpace, Facebook, Orkut, Hi5, LinkedIn, Tribe, Meetup, Twitter, Jaiku, Dodgeball, Pownce, Digg, … Рутина. Слишком сложно поддерживать. Стресс. Где теперь мои друзья? Везде. Кто ж их знает? Так много соц. сетей. И у меня нет аккуратного и актуального репозитория связей и отношений с ними.


Слайд 10

11 Проблемы Разрастание неинтероперабельных социальных сетей и приложений Острова друзей Невозможно добавлять друзей через острова Невозможно даже синхронизировать данные на каждом острове, если хотите Невозможно кинуть овцу через острова Сложно создавать социальные приложения С нуля создавать? Или на существующей платформе? Если да, на какой? Откуда взять социальный граф? Попросить пользователей создать? Найти на дороге? Где?


Слайд 11

12 Проблемы Пользователи разочарованы Устали каждый раз заводить сеть друзей на каждом сайте Устали получать инвайты (приглашения). Переживают по поводу безопасности и управления собственными данными Разработчики разочарованы Сложно создаваемый, неполный социальный граф, даже когда пользователям он очень нужен. Попросить создать? Это всем надоело. Привязаться к существующему? К какому? Почему к нему?


Слайд 12

13 Идеал Идеальное, светлое(?) будущее, Просто писать социальные приложения Простой доступ к социальному графу … в соответствии с настройками доступа, … и пользователи контролируют свои данные, и имеют возможность обновлять их глобально. Это всё работает через открытые протоколы и без централизованного провайдера Пользователи могут даже использовать собственного поставщика графа (так же, как сегодня это возможно для идентификации через OpenID), или делегировать управление провайдеру, которому доверяют.


Слайд 13

14 Но мы пока в настоящем


Слайд 14

15 Как приблизить будущее? Множество маленьких шагов? Кирпичики для создания системы, вроде бы, быстро развиваются и «взрослеют» Медленно стремясь к идеалу Один большой шаг, который все делают одновременно? Сомнительно.


Слайд 15

16 Сравнение с другими соц. системами Электронная почта Небольшой отрезок времени неинтероперабельна, главным образом до существования глобальной сети. Глобальные идентификаторы: brad@______.___ (точно указывает, какой именно “brad”) Отлично работает, кроме момента с идентификацией отправителя SPF/DomainKeys не используются широко Со спамом бороться было бы гораздо проще, если бы мы знали, кто есть кто


Слайд 16

17 Сравнение с другими соц. системами Мгновенный обмен сообщениями (IM) Исторически, смесь из проприетарных, неинтероперабельных, отгороженных друг от друга решений AOL не отправляет сообщения в Yahoo, которая не может отправить сообщение в MSN, который не может отправить в ICQ Бизнесы сливаются и/или кооперируются, так возникают интероперабельные решения AOL и ICQ. MSN и Yahoo. Хаки позволяют приобрести иллюзию интероперабельности: Gaim, Trillian, Miranda, AIM-in-GMail/GTalk Объединение иллюзорно, глобальный идентификатор отсутствует (что печатаем на визитках?) Шанс на будущее: Jabber (XMPP). Истинное объединение. Earthlink, Google Talk, LiveJournal, SAPO.pt, …. Свободное объединение (libre & gratis). Бизнес не вмешивается. Все могут пробовать и делать, как и с email (хотя в XMPP есть аутентификация пиров) Глобальные идентификаторы (brad@___.__)


Слайд 17

18 Сравнение с другими соц. системами (таблица)


Слайд 18

19 Как улучшить ситуацию? Множество мелких проблем Нет одного решения Множество маленьких шагов для решения Обсудим некоторые...


Слайд 19

20 OpenSocial Предпосылки: Будет множество социальных сетей (сайтов). (так оно и есть уже) Хотя на многих сайтах есть нишевые/региональные/сегментированные по рынку социальные приложения, многие из них полезны на всех сайтах. Должно быть просто писать портируемые социальные приложения, которые встраиваются в любой сайт (контейнер) OpenSocial Пишем приложения на HTML+JavaScript, эти языки почти все знают, и развёртываем на контейнере OpenSocial (или на сайте с поддержкой). Не зависит от Google. Это просто спецификация. Существует референсная реализация контейнера с открытым исходным кодом, так же можно сделать свою собственную.


Слайд 20

21 opensocial.* APIs People Информация о людях и их отношениях друг с другом Activities Возможность публиковать и просматривать обновления активности людей Persistence Простое хранилище по типу ключ-значение, чтобы создавать приложения с персистентными данными без сервера приложений (БД)


Слайд 21

22 opensocial.people.* Откуда контейнер OpenSocial берёт данные социального графа? Зависит от контейнера. Свой собственный граф. Чужой граф? Открытый фрагмент “Гигантского Глобального Графа”, собранный через доступную XFN и FOAF разметку на сайтах? Частные данные с установками прав доступа откуда-то ещё? Всё перечисленное выше (или частично)? На этом поле происходит масса интересного, и всё это очень ново…


Слайд 22

23 Из недавно найденного… Diso-project.org Распределённая социальная сеть: XFN, hCard, OpenID, OAuth, и т.д.… Plaxo.com, FriendFeed.com, Mugshot.org Агрегация из нескольких аккаунтов SixApart’s http://updates.elsewhere.im/ XML-поток в реальном времени об изменениях отношений Кто угодно может участвовать через OAuth OSocial.net “поддельная соц.сеть, мета-сеть, которая совмещает профили пользователей из нескольких.”, использует OpenSocial, FOAF, XFN


Слайд 23

24 Кидаем овец между островами Немного для развёрнутого обсуждения, к несчастью Пока просто рассуждения о том, что “было бы неплохо, если бы” XMPP Пожалуй, хороший кандидат Проблема на старте: нужны по меньшей мере 1-2 крупных провайдера для начала, и/или множество небольших? Собственно, это всё, что есть на ближайшее будущее


Слайд 24

25 Что сейчас может сделать сообщество разработчиков? Кинуть овцу между островами? XMPP? Сложно. Проблема холодного старта. Синхронизировать друзей между островами, потом кидать овцу на каждом? Более жизнеспособное короткосрочное «решение» Когда пользователи хотят синхронизировать свои аккаунты (каждый аккаунт может быть для отдельной персоны) Но где взять данные? Опубликовать их! Упростив пользователям возможность вывода данных из сервиса, мы повышаем их доверие к нему.


Слайд 25

26 Экспорт открытых данных об отношениях FOAF (foaf-project.org) “Friend Of A Friend” («Друг Друга») Файлы формата XML RDF представляют профили, друзей, интересы, места учёбы и дайджест SHA1_hex (“mailto:” + адрес_email). Поддерживает расширения. В HTML определяется с помощью: <link rel="meta" type="application/rdf+xml" title="FOAF" href=”…”> Поддерживается LiveJournal, Tribe.net, et al XFN (microformats.org) Более простое решение: <a href=“http://bob.com/” rel=“friend”>Bob</a>. Поддерживается массой сайтов, каждый день количество растёт.


Слайд 26

27 Кто есть кто? Множественные аккаунты персоны Пользователи могут связывать аккаунты между собой С помощью XFN: <a href=“http://othersite.com/brad/” rel=“me”>My other site</a>. С помощью FOAF: foaf:mbox_sha1sum foaf:homePage, etc


Слайд 27

28 Направленный граф с ветвями “Я заявляю, что это я!” brad. livejournal.com myspace.com/bradfitz bradfitz.com Это я! Это я! Это я!


Слайд 28

29 Нельзя доверять однонаправленным заявлениям «Это Я!»


Слайд 29

30 Атака brad. livejournal.com myspace.com/bradfitz bradfitz.com Это я! Это я! Это я! attacker.com Это я!


Слайд 30

31 От начального узла, следуем вперёд только по ветвям «Это я»… brad. livejournal.com myspace.com/bradfitz bradfitz.com я! я! я! attacker.com я! david. livejournal.com sergey.com друг друг


Слайд 31

32 Синхронизация Пример: что можно сделать с таким массивным направленным графом… Идея: Кластер аккаунтов одной персоны (ссылки rel=“me”, etc) Поиск ссылок друзей Поиск ситуации, когда двое пользователей друзья на сайте А, но не на сайте Б Может, они просто не знают друг о друге на сате Б?


Слайд 32

33 Синхронизация brad. livejournal.com myspace.com/bradfitz bradfitz.com я! я! я! david. livejournal.com myspace.com/david друг Потерянный друг я! я!


Слайд 33

34 Резюме Ситуация пока не блестящая, Всё ещё масса проблем Но я оптимист: OpenID, OAuth, Yadis, XRDS OpenSocial FOAF, микроформаты (XFN, hCard) XMPP Все кирпичики складываются вместе в весьма интересное неплохое решение Сообщество, вроде бы, хочет работать вместе, чтобы сложить все кирпичики вместе, при этом устраняя недостатки


Слайд 34

Brad Fitzpatrick Google, Inc. bradfitz@google.com


×

HTML:





Ссылка: