Болтуны всех стран, объединяйтесь! Мгновенный обмен сообщениями и борьба с виртуальными границами
Болтуны всех стран, объединяйтесь! Мгновенный обмен сообщениями и борьба с виртуальными границами
Автор: Илья Щуров Voyager
Людям нужно общение. Люди хотят говорить, говорить здесь и сейчас, говорить со всем миром, невзирая на границы и расстояния. Поэтому такие технологии, как интернет-пейджинг (instant messaging, IM) или IP-телефония, просто не могли не появиться. Они сделали нашу планету еще меньше, а связь — еще проще. Но, с легкостью преодолевая естественные препятствия реального мира, эти технологии столкнулись с новыми границами, рожденными самим пространством ИТ, его устройством и экономикой.
Границы виртуального мира
Есть такое красивое слово — интероперабельность. Оно означает возможность продуктов или сервисов разных производителей корректно взаимодействовать друг с другом, обмениваться информацией и работать, что называется, сообща. Из таких взаимодействующих «кирпичиков» можно собирать сложные конструкции, не обращая внимания на то, кем произведен каждый «модуль». Например, интероперабельность между почтовыми серверами позволяет нам отправлять письма из любого мейлера через любой SMTP-сервер на любой адрес — не задумываясь, кем они обслуживаются, кто является разработчиком почтового клиента и как сервера будут договариваться друг с другом.
Наличие интероперабельности (в любой области), очевидно, является плюсом для конечного пользователя, что очень редко отрицается разработчиками самых разных продуктов. Тем не менее ее отсутствие может оказаться плюсом для производителя — и не просто плюсом, а решающим фактором в конкурентной борьбе. IM-сети являются хорошим примером: вспомните, зачем вы установили когда-то ICQ? Скорее всего, чтобы общаться со своими друзьями, уже зарегистрированными в этой сети. Причем выбора у вас не было — если бы вы захотели подключиться к любой другой сети (свои мессенджеры есть у AOL, MSN, Yahoo и др.), вы бы остались в полном одиночестве: связи между ними до недавнего времени не было. Даже после покупки компании Mirabilis AOL’ом в 1998, до 2002 сети ICQ и AIM функционировали раздельно (работая на одних и тех же серверах), а интероперабельность между MSN IM и Yahoo IM была анонсирована лишь летом этого года.
«Вирусный эффект», позволяющий привлекать новых пользователей за счет уже существующих или продвигать одни продукты за счет популярности других — штука очень заманчивая. Настолько заманчивая, что интересы самих пользователей отходят на второй план, уступая место желанию захватить рынок целиком. Но технологии развиваются по своим законам, естественным образом стремясь к открытости и стандартизации. Так было с электронной почтой. Так будет с IM и VoIP. Мы можем воочию наблюдать этот процесс.
Не для протокола
Появлению протокола Jabber (англ. «болтовня», «бормотание») мы обязаны отсутствию совместимости между сетями ICQ и AIM, а также Джереми Миллеру (Jeremie Miller), решившему исправить этот существенный недостаток в 1998 году. Исходно Jabber задумывался как промежуточный протокол, основанный на XML, через который можно было бы «перенаправлять» сообщения из одной IM-сети в другую. Впрочем, быстро стало ясно, что подобное решение можно использовать и для непосредственной связи между пользователями. И не только между пользователями: между любыми объектами в Сети (например, двумя серверами или клиентом и сервером), которым требуется двусторонняя связь в реальном времени, контроль присутствия и другие функции IM.
Ядро разработанных и разрабатываемых в рамках проекта Jabber протоколов было принято в качестве интернет-стандартов RFC в 2004 году под именем XMPP (Extensible Messaging and Presence Protocol). Это семейство протоколов описывает базовый уровень взаимодействия (передача XML-потока, способы идентификации участников обмена), собственно обмен сообщениями и информацией о присутствии (presence), авторизацию и шифрование сообщений и т. д. При общении по XMPP сервер и клиент как бы последовательно пишут по кусочкам единый XML-файл.
В отличие от большинства закрытых IM-протоколов, рассчитанных на взаимодействие клиента только с одним центральным сервером, Jabber/XMPP является децентрализованным: он позволяет связываться двум пользователям, подключенным к разным серверам. В этом смысле Jabber-сеть аналогична e-mail, и для идентификации в ней приняты очень похожие адреса (так называемые JID, Jabber IDentificator), включающие имя пользователя и название сервера (например, v_pupkin@jabber.ru). Запустить собственный Jabber-сервер может кто угодно — достаточно иметь компьютер со статическим IP-адресом или постоянным доменным именем. При этом можно как разрешить взаимодействие с другими Jabber-серверами (federating), так и запретить его, создав собственную частную IM-сеть — последнее свойство особенно ценно в корпоративной среде, где Jabber часто и используется. В этом случае внутренняя IM-сеть компании уже не зависит ни от каких внешних факторов и не пересылает никаких данных за пределы корпоративной сети.
Благодаря открытой и хорошо документированной архитектуре, было разработано множество клиентских и серверных программ для поддержки Jabber. Помимо собственно передачи сообщений от одного пользователя к другому, многие серверы поддерживают так называемые транспорты — шлюзы между Jabber и другими сетями. Например, через такой шлюз пользователь Jabber-клиента может обмениваться сообщениями со своими друзьями в ICQ или AIM. Есть и более интересные применения: отправка писем или SMS-сообщений, общение в IRC-чатах, чтение RSS-лент и даже доступ к хранилищу файлов через Jabber. (Дабы определить, какие транспорты поддерживает тот или иной сервер, в большинстве Jabber-клиентов можно задействовать функцию Service Discovery [рис. 3, клиент Psi].)
Jabber также является расширяемым. Скажем, кроссплатформная программа Coccinella поддерживает совместное рисование на общей «доске» (whiteboard), очень удобное при обсуждении схем, изображений и даже пригодное для игр (рис. 2), — причем никакой специальной поддержки от сервера не требуется, и для использования этой функции достаточно, чтобы ваши корреспонденты использовали тот же клиент. Аналогично можно добавлять другие возможности. Во многом Jabber подтверждает свой статус универсального протокола для двустороннего обмена информацией.
Впрочем, несмотря на все свои преимущества, долгое время он оставался «игрушкой для гиков» и использовался в основном в корпоративном секторе и open source-сообществе, не приемлющем закрытых стандартов и протоколов. Победить «большую тройку» IM-сетей (AIM/ICQ, MSN, YIM) с их огромной пользовательской базой и поддержкой гигантов интернет-рынка в открытом бою «Федерация независимых серверов Jabber» во главе с Jabber.org была не в силах.
Корпоративный Jabber
В Яндексе для «мгновенного» общения внутри компании используется Jabber. Он был выбран по ряду причин. Во-первых, была нужна IM-система, сервер которой можно поставить в организации — глупо пропускать корпоративную переписку, содержащую секретные сведения, через неподконтрольные компании серверы.
Во-вторых, хотелось, чтобы для работы с этой системой можно было использовать привычные для многих сотрудников «мультипротокольные» интернет-пейджеры, такие как Trillian, GAIM, Miranda или SIM. В-третьих, хорошо бы, чтобы это был открытый протокол.
Кажется, этим трем условиям удовлетворяет только Jabber. По первому пункту подошли бы еще ICQ Corporate, MS LCS или SIMPLE, но второй и третий пункты определяют выбор.
В качестве серверного ПО мы используем ejabberd. Это во многом «отечественная» разработка, то есть ведущаяся в основном программистами из России и Украины.
Клиентское ПО — кому какое удобнее, хотя есть и клиент для тех, кто не пользуется «мультипротокольными» пейджерами. Это брэндированный вариант одного из Jabber-клиентов.
Роман Иванов, руководитель отдела коммуникационных сервисов Яндекса
Новое время Jabber
Google оказался первым мускулистым игроком, поддержавшим Jabber на рынке публичных IM-сервисов. Выпустив Google Talk в августе 2005 года, компания также сделала доступной для open source-сообщества разработанное совместно с Jabber Foundation расширение Jingle для XMPP, позволяющее совершать голосовые и видео-звонки. В начале 2006 года Google объявил о подключении GTalk к «федерации» — открытии связности с другими Jabber-серверами и сторонними сервисами. Google также заявляет о поддержке сторонних Jabber-клиентов (в частности, на тех платформах, на которых оригинальный Google Talk не работает). Важно также, что Jingle — полностью «клиентское» решение, не требующее поддержки со стороны сервера. Тем самым, с появлением альтернативных клиентов, поддерживающих эту технологию (уже существующих в виде бета-версий — например, Jabbin [рис. 4] или Jingle-ветвь популярного клиента Psi), голосовой обмен станет также децентрализованным — исчезнет всякая привязка к Google Talk.
Другая серьезная заявка о поддержке Jabber поступила со стороны LiveJournal. Отказавшись от написания собственного клиента, разработчики сделали свое серверное решение, интегрировав Jabber-аккаунт с пользовательским аккаунтом в LJ: синхронизированный список контактов, иконки/юзерпики, уведомления о новых сообщениях и возможность постинга через специального «робота». Подключение к «федерации» — в ближайших планах разработчиков. Заметим, что сверхпопулярная в США социальная сеть MySpace пошла прямо противоположным путем: выпустила собственный IM-клиент — но, увы, основанный на очередном закрытом протоколе.
Следует отметить также проект Gizmo (рис. 5), предоставляющий сервисы IP-телефонии, аналогичные Skype (в том числе «приземление» звонков на обычные телефонные сети), но на основе открытых протоколов: в частности, для управления VoIP-сессиями используется SIP (открытый стандарт VoIP-индустрии), а для текстового чата — Jabber, что открывает определенный простор для связи с другими сетями (как VoIP, так и IM). Впрочем, Gizmo использует некоторые проприетарные кодеки для передачи голосового трафика и закрытое клиентское ПО и, тем самым, не является полностью открытым решением.
Немного футурологии
Единая сеть обмена сообщениями и VoIP-трафиком появляется на наших глазах. Не всегда охотно, но разделенные IM-сети все-таки договариваются друг с другом о совместимости и взаимопроникновении сервисов. Владельцы проприетарных протоколов раскрывают свои спецификации. Сильные игроки начинают поддерживать открытые решения. И проект Jabber здесь играет одну из главных ролей.
Впрочем, не стоит забывать: Jabber создавался не только для поддержки интернет-пейджинга, но и для произвольного двустороннего обмена данными. Со временем, он может сменить HTTP, предоставив принципиально новые возможности по созданию веб-приложений. Или вообще образовать инфраструктуру для появления какого-нибудь Веб 3.0. Кто знает, во что завтра может вылиться сегодняшняя болтовня?
Другой взгляд
Почему было решено разработать собственный протокол для IM, а не использовать открытый и стандартизованный протокол Jabber/XMPP (как это сделал, скажем, Google Talk)?
— Перед началом разработки Mail.Ru Agent мы рассматривали существующие варианты, но ни один из них не подходил нам либо по скорости работы, либо по простоте реализации, либо по расширяемости. Нами был придуман и разработан легкий для расширения и очень быстрый для обработки протокол обмена данными. К тому же этот протокол окзалася довольно легким в понимании разработчиками. О чем свидетельствует появление клиентов еще до официального открытия. Сейчас это уже полноценный протокол, который обеспечивает все основные возможности современного IM: Контакт-лист, онлайн-статус собеседника и возможность смены статусов, индивидуальные списки видимости собеседников и доступ, поиск контактов, передача данных, уведомление о почте и многое другое. При этом мы фактически не имеем ограничений по расширению и добавлению нового функционала. К слову сказать, свой мессенджер мы запустили гораздо раньше, чему Google.
Существуют ли в настоящий момент гейты между сетью «Агента» и другими
IM-сетями?
— На сервере www.jabber.ru установлен MRA-транспорт, позволяющий пользователям jabber-клиентов общаться с пользователями MRA, и наоборот. Mail.Ru пока не занимается официальным гейтованием в другие сети, и официальных соглашений на этот счет нет. Однако, это не является нашей принципиальной позицией, мы открыты к сотрудничеству с другими крупными IM-сетями.
Существует ли в Mail.Ru внутренняя IM-сеть? Если да, то она основана на «Агенте» или на чем-то другом?
— Все сотрудники Mail.Ru пользуются такими же клиентскими приложениями и подключаются через те же сервера, что и обычные пользователи, а Mail.Ru Anent является нашим стандартным средством общения. Более того, все наши проекты, прежде чем выйти «в люди», некоторое время тестируются сотрудниками Mail.Ru.
Анна Артамонова, вице-президент и директор по маркетингу и PR холдинга Mail.Ru
Ссылки
[1] jabber.org — официальный сайт Jabber Foundation и один из самых популярных Jabber-серверов.
[2] jabber.ru — российское Jabber-сообщество.
[3] community.livejournal.com/ru_jabber — обсуждение Jabber в ЖЖ.
[4] http://www.jabber.ttn.ru/ — таганрогский сервер Jabber, ведется список jabber-серверов в зоне ru.