Google Wave: новая галактика во Вселенной сетевого взаимодействия

 

Прогресс в области информационных технологий — штука нелинейная. То есть если следить за изменениями и новациями на каком-то небольшом отрезке, кажется, что все происходит в соответствии с олимпийским девизом «Быстрее, выше, сильнее!». Растут значения герц, пикселей и байт, увеличиваются индексы у версий ПО, добавляются новые стандарты. Однако если выстроить некий абстрактный график развития для всей отрасли за весь период ее существования, обнаружится, что это вовсе не восходящая прямая. И даже не лестница.

Потому что не бывает у лестниц ступеней размером в несколько пролетов. Причем не все эти ступени такие, а лишь несколько, остальные-то — обычные.

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

Посекретничаем?

Секретность информации, передаваемой в волне, осуществляет протокол XMPP. Основные механизмы защиты — технология аутентификации (проверки подлинности) пользователей SASL (Simple Authentication and Security Layer), успешно работающая, например, в Gmail, и криптографический протокол TLS (Transport Layer Security), обеспечивающий шифрование всего волнового трафика. Благодаря этим щитам Google Wave спасается от проблем имитации волновых провайдеров, когда злоумышленник может выдать свою волну за волну другого пользователя. А зашифрованные каналы не дают шанса любителям перехвата сетевых пакетов с целью порыться в них или изменить содержание.

 

ПЕРВАЯ НЕТОКРАТИЧЕСКАЯ

В 1989 году сэр Тим Бернерс-Ли, ученый Европейского совета по ядерным исследованиям (того самого, где апокалиптический коллайдер живет), окончательно запутался в технологиях обмена информацией. Что использовать, чтобы передать текст? Может, e-mail? Или FTP-сервер лучше? А куда при этом положить иллюстрации? А чтобы известить получателя о нахождении текста и картинок, нужно снова e-mail отправлять? Или телеконференцией воспользоваться? А может написать на доску объявлений? И для каждой технологии нужен свой клиент. А еще нужно помнить команды управления серверами. Ну почему все так сложно-то? Вот если бы передать коллегам только адрес, где они найдут документ с нужным текстом, картинками и даже файлами! А еще в нем можно разместить ссылки на другие документы, связанные с этим...

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

Тим Бернерс-Ли — идеолог Web, придумал ее после тщетных попыток разобраться с запутанной работой в многочисленных сетевых службах интернет...

Ныне Web переживает второе рождение, и даже замахивается на третье. Можно, конечно, долго спорить, но Web 2.0 — все-таки не революция. Технология, конечно, перспективная, но идейных перемен, смены формаций она пока не принесла. Однако свой вклад в зарождение революционной ситуации, конечно же, сделала.

В операционную!

Спецификация протокола федерации Google Wave позволяет выполнять над элементами волны (читай: XML-документа) следующие операции:

— перейти на N число символов;

— вставить новый символ;

— удалить символ;

— перейти к XML-тэгу (XML-антитэгу);

— удалить XML-тэг (XML-антитэг);

— обновить атрибуты XML-документа.

Фактически, для wave-сервера волна — не сам XML-документ, а поток операций над ним.

 

ВЕРХИ МОГУТ, И НИЗЫ ХОТЯТ...

Как учат нас классики марксизма, никакая революция не происходит на пустом месте. Для нее должна сложиться подходящая ситуация. Применительно к IT: для очередного принципиального скачка необходимо накопление технологий и сервисов.

Сейчас такое накопление, можно сказать, состоялось. Чтобы в этом убедиться, достаточно заглянуть в недра собственного компьютера. Сколько там программ для работы в Сети? Браузер, ICQ-клиент, почта, торренты... Про саму Сеть и говорить нечего — перечислять сервисы и технологии можно не одну страницу. Есть революционная ситуация, есть!

Новая технология — головная боль ее разработчика. Как убедить пользователя, что это нужно, полезно и удобно? А ведь еще нужно убедить консервативный мир телекоммуникаций. Да и бизнесменам объяснить, что новое — отличная рекламная площадка.

История показывает, что многие IT-победы — случайность. Кто бы мог подумать, что web-дневники сайта Blogger породят со временем блогосферу — среду самореализации, самопрезентации и выражения коллективного мнения, а слово «блогер» станет названием профессии? А ненавязчивый щебет Twitter, в котором один-единственный вопрос «Что ты делаешь сейчас?» создал целую субкультуру 140-символьников. Про «Одноклассников» и «Вконтакте» (он же Facebook) можно и не напоминать. Вирус социальных сетей не заразил разве что египетских мумий. Кажется, живи и радуйся! Вот он — мир бесконечной свободы. Выбирай сервис по душе и вперед!

Только вот, как известно, свобода выбора родит червя неопределенности. И среди цветущего мира сервисов общения юзера начинает мучить синдром сэра Тима: у каждого сервиса свои особенности работы с ним, свои «примочки», свой сленг и, порой, свои клиентские программы.

Поди разберись, к чему относится «wiki» или «reply comment», к чему «UIN», а к чему «вас забанили». Есть друзья в ICQ, но они не выносят писать в ЖЖ. В ЖЖ полно знакомых, но они считают «Вконтакте» отстоем. А «вконтактовские» знакомцы не могут понять, как можно кратко чирикать в Twitter. А ведь есть еще фотохостинги, YouTube. И, кстати, старый добрый e-mail никто еще не похоронил.

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

Видимо, мысль эта бродила по многим умам. Можно ли сделать какой-то универсальный сервис общения, перефразируя булгаковского профессора Преображенского «...тщательный сервис. Фактический. Настоящий! Броня!»?

В современном мире обжитого интернета одной лишь концепции, подобной бернерсовскому Web’у, уже недостаточно. Тут авторитет нужен. И финансы.

У Google и того и иного в избытке. А еще в компании полно талантов. Которые сели и придумали концепцию «волны». Придумали, тщательно проработали, обкатали внутри компании. И только после этого явили миру.

 

Ларс Расмуссен в своем блоге рассказал о том, что брат Йен «почти» мгновенно убедил его в потенциале Google Wave

ПРЕДПОСЫЛКИ

Если бы у меня была возможность задать братьям Ларсу и Йену Расмуссенам, идеологам проекта Google Wave, вопрос, что это такое, то, скорее всего, ответ был бы: collaboration on-line. Что означает «совместная работа в реальном времени».

 

«Ну и что? — скажет искушенный читатель. — Таких систем — солить негде. Да у той же Microsoft имеется в запаснике SharePoint — платформа для совместной работы над офисными документами на основе корпоративного web-портала».

Ну что же, искушенный читатель, ты прав. Только вот братья Расмуссены (тогда еще владельцы маленького стартапа Where 2 Tech, купленного Google для своих Maps) задавали себе другие вопросы:

1. Почему люди должны разрываться между различными видами коммуникаций, которые, в основном, подражают своим неэлектронным аналогам (например, e-mail — обычной почте, а IM-сервисы — телефонной беседе)?

2. Что если придумать модель коммуникации, которая, с одной стороны, могла объединить в себе все многообразие интернет-сервисов, а с другой — использовала имеющиеся возможности компьютеров, а не просто подражала каким-либо «неэлектрическим» формам общения?

В ответ на эти вопросы родилась идея ВОЛНЫ (Wave), вокруг которой и возник сервис Google Wave.

Логотип Google Wave придется по вкусу и физикам и лирикам. Гармоничен во всех смыслах

 

Волну можно и нужно воспринимать как волну. Например, как ее воспринимают серферы, которые «ловят волну» — непередаваемое ощущение жизни на океанском побережье. Или как радиослушатели, одновременно «настроившие на одну волну» своих потомков прибора Маркони (или Попова) и поймавшие настроение от песни или новости.

С помощью расширений Google Wave можно планировать мероприятия

Волновых метафор можно придумать «до тыщи», но суть Google Wave от этого не изменится. Волна — особое место (или состояние?) общения некоторого количества людей, плывущих по течению беседы, работы над проектом, выражения своих эмоций графикой, музыкой, видео... При этом, в отличие от большинства традиционных интернет-сервисов, любители волны не скованы рамками «отправил — жду ответа». Волна отражает действия каждого ее посетителя в реальном масштабе времени. Это все равно что в Twitter отвечать на вопрос «Что ты делаешь сейчас?» каждое мгновение. Или в окошке аськи видеть не сообщение User typing..., а собственно набор этим юзером текста.

Вот что такое волна — электронный эквивалент реального течения жизни.

Клиент всегда прав

Google Wave ненавязчиво рекламирует возможности фирменного Google-браузера Chrome, который легко способен стать wave-клиентом благодаря расширенной поддержке HTML 5. Но Chrome не единственный игрок на этом поле. С HTML 5 прекрасно ладит и новейший «яблочный» Safari 4, и даже неповоротливый IE 8.

В Google-браузере Chrome клиент Google Wave смотрится замечательно! Поглядим, как с ним будут справляться конкуренты.

Кроме того, разработчикам Google Wave доступны библиотеки для разработки кастомных клиентов под платформы Win32/64 и Linux. Языки Java и Python, применяемые для создания клиентов мобильных платформ, тоже не обделены «библиотечным» вниманием.

 

ДВИЖУЩИЕ СИЛЫ

Без чего еще невозможна революция? Правильно: без движущих сил. У классиков роль этой силы отводится классу, который возглавит новую формацию. В революции нетократической роль локомотива выполняют технологии. Философия философией, но за красивой идеей должно стоять серьезное технологическое решение. У Google Wave оно есть, и не одно. В первую очередь это языки HTML 5 и XML, новейшие интернет-наречия, способные отразить все многообразие форматов текста, графики, видео и музыки. Затем протокол XMPP — знаменитый протокол для систем мгновенного обмена сообщениями и информации о присутствии. Знаменитый, потому что такие сервисы, как Jabber, Google Talk и наш родной QIP работают именно с его помощью. Ну и, конечно же, мощный «движок» Google Web Toolkit — среда выполнения на web-серверах программного кода любой степени сложности, будь то трансляция YouTube-видео или масштабирование спутниковых снимков.

Именно эти технологии составляют фундамент. А теперь рассмотрим архитектуру Google Wave, «произрастающую» на этом фундаменте.

Если не всматриваться пристально, то Google Wave очень похожа на e-mail. Но если всмотреться...

Контекстно-зависимая проверка орфографии в Google Wave

Есть множество wave-провайдеров, у каждого из которых имеется один или более wave-серверов. И есть множество пользователей волны. Пользователи имеют клиент Google Wave (компания на его роль пророчит свой браузер Chrome), связывающийся c тем wave-провайдером, где зарегистрирован пользователь.

Wave-провайдером может стать любой: организация, фирма или просто пользователь. Главное — иметь компьютер для wave-сервера и средства для регистрации wave-домена.

Например, я решу для своих домашних стать wave-провайдером и зарегистрирую домен MySweetHome. Именно это доменное имя и будет отличать меня, как wave-провайдера, от других подобных мне энтузиастов.

А пользователи моего домена (мои домашние) получат следующие wave-адреса: user1@MySweetHome, user2@MySweetHome и т. д. (не переборщить бы с числом домашних!).

Правда, на e-mail похоже?

Архитектура Google Wave напоминает старый добрый e-mail. Но только на первый взгляд...

 

Кстати говоря, пользователями волны не обязательно должны быть индивидуумы. Например, под именем user1@MySweetHome может скрываться группа пользователей, а под user2@MySweetHome — вообще не человек, а программа-робот, которая, например, переводит диалоги с суахили на русский. Или в шахматы играет. Или отвечает на вопросы типа «Ты меня уважаешь?».

Организовывать собрания в Google Wave можно непосредственно на карте

Каждый пользователь, зарегистрированный у волнового провайдера, может создать свою волну (в терминах Google Wave — wavelet). Пацаны сказали бы «тему». Каждый пользователь может пригласить в свой wavelet других пользователей, и быть приглашенным в другой wavelet. Множество wavelet’ов, в которых участвует пользователь, формируют его «волновой портрет» (волновое представление (Wave View) в терминах Google).

Технически волна — это XML-документ, редактируемый в реальном масштабе времени. В отличие от письма он, кроме своего содержания, содержит еще и список пользователей, «плывущих» в этой волне. Любой из них может изменять этот документ, и любое изменение (даже набор одного символа) тут же увидят все остальные пользователи из списка волны. Язык XML весьма развит с точки зрения форматирования. Поэтому в волну пользователи могут вставлять богато форматированный текст, картинки, аудио- или видеоклипы, flash-анимацию и программы. Это сделает волну живой, эмоциональной. Пользователи будут приходить, уходить, читать и дорабатывать волну. Например, подключившись к волне на утро, пользователь сможет запросить ее течение за ночь и понять, куда утекла нить беседы. Так волна становится динамичной.

Созданные в рамках домена волны хранятся на wave-серверах в wave-памяти.

А как быть, если пользователь из, например, домена MySweetHome пригласил в свою волну не только внутридоменных пользователей, но и пользователей других доменов? Здесь без взаимодействия доменов не обойтись. В этом случае копия волны отправляется в wave-память серверов тех доменов, откуда были приглашенные. И теперь в реальном масштабе времени изменяется не только содержимое самой волны, но и содержимое всех ее копий. Фантастика? Вовсе нет. Потому что за дело берется Протокол Федерации Google Wave — правила взаимодействия wave-провайдеров между собой.

 

ПРОТОКОЛЫ, ПЛАНЫ, ЗАСЕДАНИЯ

Революцию, понятно, следует возглавить. Иначе пойдет не туда. Для чего нужно — что? — правильно, революционная партия. Такая уже есть, партия Google называется. И даже революционный комитет есть — разработчики Google Wave. Вот они и корпят над планами и протоколами, обсуждают взаимодействия, готовят мероприятия.

Когда пользователь приглашает в свою волну пользователей других доменов, его волновой провайдер должен озаботиться взаимодействием с волновыми провайдерами этих пользователей. Ну хотя бы для того, чтобы отправить в их wave-память копию волны. А дальше, когда волна начнет жить и течь, — согласовывать все изменения в ней и ее копиях.

Без четких правил работы ничего у волновых провайдеров не выйдет. Их спасает протокол.

К Google Wave можно цеплять расширения-игры, вроде шахмат

Начнем с того, что провайдеры всех пользователей, участвующих в любой волне, объединяются в федерацию. Как говорится, в собранном виде веник крепче. Федерация будет существовать, пока существует волна. Покинул какой-то пользователь волну, его провайдер вышел из федерации. Поймал пользователь новую волну — его провайдер примыкает к ее федерации. Вот такое федеративное непостоянство.

Протокол общения волновых провайдеров в федерации так и называется: протокол федерации Google Wave. Чтобы его использовать, каждый волновой провайдер имеет у себя соответствующие «разъемы». Выход к другим провайдерам обеспечивает шлюз федерации. Именно через него провайдер рассылает копию волны другим провайдерам. А также все изменения, происходящие в ней в реальном времени. Входом работает прокси-сервер федерации. Через него копии волны и изменения в ней попадают в wave-память.

Чтобы объединиться в федерацию, волновые провайдеры имеют шлюз и прокси-сервер. Стыковка как в Lego

Иногда шлюз и прокси-сервер меняются местами. Происходит это, когда какой-то из пользователей давно не плыл в волне, и теперь для его копии волны требуются не только свежие изменения, но и все те, которые случились в его отсутствие. Именно тогда прокси-сервер «проспавшего» волну пользователя обращается к шлюзу провайдера, хранящего главную версию волны с просьбой прислать операции над волной «от сих до сих».

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

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

Как добавить человека в «волну»

Вот такой чудесный протокол. На самом деле он — всего лишь надстройка над привычным нам по разным IM-клиентам протоколом XMPP (eXtensible Messaging and Presence Protocol — расширяемый протокол обмена сообщениями и информацией о присутствии). Ведь не удивляемся же мы, когда в ICQ видим сообщение «Пользователь N пишет Вам». Это XMPP фиксирует, что пользователь N начал набирать текст и тут же сообщает нам. Протокол федерации Google Wave идет дальше, показывая нам, ЧТО в данный момент набирает или делает в волне пользователь N. И пользователи М и К тоже. И все, кто «плывет» рядом с нами в волне.

А чтобы ни у кого со стороны не возникало желание перехватить операции над волной, дабы напакостить, протокол XMPP обеспечивает шифрование данных и однозначную идентификацию участников волны.

Одновременное редактирование текста в «волне»

Картинка мира Google Wave становится все понятнее и понятнее. Словно в Google Maps включили максимальное приближение камеры к поверхности. Осталось понять, КАК волновой провайдер понимает, ЧТО именно в волне меняет пользователь. Как он видит, над какой буквой или запятой колдует в данный момент любой участник волны? Помогает ему в этом теория оперативного преобразования волны (operational transformation).

 

КООРДИНАЦИЯ МЕРОПРИЯТИЙ

Отображение действий, выполняемых пользователем в реальном масштабе времени, на первый взгляд кажется колдовством. Второй взгляд заставляет нас вспомнить, что есть программы удаленного администрирования, которые оперативно отображают нам изменения на рабочем столе компьютера, которым мы управляем за тысячи километров. И это возможно, потому что по каналу связи передается не сам рабочий стол, а только координаты его отдельных мест и операции, которые мы творим над этими местами. Переместили мышь от точки А экрана к точке В — сервер сообщит нашему клиенту координаты этих точек и операцию: «Из точки А в точку В прибыл указатель мыши».

С волной происходит то же самое. Как мы уже поняли, волна — это XML-документ. Google Wave именует его «вспышка» (blip). Каждый элемент внутри документа пронумерован. И если, например, пользователь решает поставить запятую во фразе «Казнить нельзя помиловать», то сервер передаст клиенту (и всем копиям волны) следующую операцию: «Позиция 15. Вставить символ: запятая». Или «Позиция 9. Вставить символ: запятая». Это уж от пользователя зависит. И все участники волны тут же увидят, как запятая вершит чью-то судьбу.

Каждый символ внутри blip-а имеет собственный номер позиции. Остается «выйти на позицию» и указать, что делать

Но как быть, если запятые пытаются расставить сразу несколько пользователей? В этом случае для каждого из них должна строго соблюдаться последовательность изменений. И, например, изменения, сделанные другими пользователями, не вступят «в законные права», пока не будут выполнены изменения, сделанные сами пользователем. В системах, где множество пользователей обращаются к одному ресурсу, например множество людей в метро — к одному эскалатору, ситуация выглядит похоже: выстраивается очередь. Только в метро она формируется спонтанно, а в волне — по строгим правилам, называемым «взаимное исключение». Именно они помогают отрегулировать любое количество изменений над волной от любого числа пользователей. Так, чтобы в результате телега не бежала впереди лошади.

Способность волнового провайдера размещать операции над волной от многих ее пользователей в правильном порядке и есть главный принцип оперативного преобразования волны. И именно благодаря ему волна «дышит в такт», а не страдает тахикардией.

Архитектура, протокол и оперативное преобразование — столпы Google Wave, поддерживающие ее сверкающую идею. Вот только приживется ли она на густозасаженной почве интернета?

Ссылки

 — Сайт проекта Google Wave

 — Спецификации протокола федерации Google Wave

RU/apis/wave/guide.html  — Библиотеки API-функций для разработчиков программ Google Wave

 

СИМ ПОБЕДИШИ?

Технология Google Wave — не академическая разработка и не утопическая философская идея о единении всех людей в едином порыве. Она уже несколько лет успешно эксплуатируется в недрах самой Google. Разработчики так и говорят: Google Wave — лишь один из множества возможных волновых провайдеров. Которых в ближайшее время может стать очень много. Ведь рассмотренный выше стандарт открыт и развивается. Недаром протокол федерации Google Wave носит название «черновик» (draft). Очевидно, что с течением времени он обрастет новыми возможностями и сделает «движение по волне» более простым и увлекательным.

Пока же Google Wave только выходит на арену, где против него сгрудилась вся рать существующих интернет-сервисов. Одолеет ли их Google Wave? Или кого-то возьмет в коалицию против других? Время покажет.

Вполне возможно, что в будущем, наряду с прилипшим к обиходу «погуглить» появится хорошо забытое старое «настройся на мою волну». Только означать оно будет вовсе не аппарат Попова-Маркони.

Вот это и есть самая настоящая эволюционная революция.

 






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.