Jabber

Сырой и малопригодный для реального повседневного использования, а в сборке из репозиториев Ubuntu 6.06 LTS — ещё и глючный, Gaim достал меня окончательно. Прикинув, что обновление до Ubuntu 6.10 (а равно и до Gaim 2.0) мне в ближайшее время по причине неторопливости людей из «Северо-Западного Телекома» не светит, я начал размышлять и анализировать.

Анализ выявил два очевидных факта. Во-первых, Miranda так и не портирована на POSIX-совместимые системы, и вряд ли в ближайшее время портирована будет (что не мешает от души рекомендовать это чудесное творение всем, кто пользуется операционными системами от Microsoft). Во-вторых, из четырёх IM-аккаунтов, которыми я пользуюсь, только один — ICQ, остальные — Jabber. Выявился и немного менее очевидный, но в целом понятный факт: приличных (и, что куда важнее, удобных для меня) многопротокольных мессенджеров под Linux не существует.

Здесь стоит сделать небольшое отступление и объяснить логичность последнего факта: всё дело в том, что в мире Linux (да и вообще open source) не шибко жалуют проприетарные протоколы (как и всё проприетарное). С этой позицией я даже в целом согласен: в самом деле, если одна компания может делать с протоколом всё, что ей вздумается, и не обязана отчитываться в содеянном перед остальными, могут получиться (и получаются) всяческие неприглядные вещи вроде несовместимости разных версий, невозможности обеспечить некоторые функции и тому подобных. Налицо аналогия с текстовыми документами: как может кто-то сделать текстовый редактор, нормально открывающий файлы Microsoft Word, если сам Word их нормально открыть зачастую не может (вспомните, как открывались файлы Word'95 в Word'97). С текстовыми файлами как-то разобрались: существует открытый и понятный всем стандарт RTF, а также не менее открытый, более прогрессивный и всем (кроме Microsoft) понятный OpenDocument. «Что нам стоит, в конце концов, IM построить?!» — решили в Сообществе и состряпали открытый протокол передачи данных XMPP, более известный как Jabber.

При разработке, разумеется, постарались (и даже получилось!) учесть недостатки существующих систем, и сделали протокол максимально универсальным и дополняемым, а заодно избавили от главной беды ICQ, AIM, MSN и иже с ними — централизации. Во-первых, при большом количестве народу в сети через центральный сервер передаются такие объёмы информации, что на такой сервер у небогатых в массе своей членов сообщества денег бы всё равно не хватило. Во-вторых, не всякому нравится, что все передаваемые данные можно в одном месте ловить и обрабатывать. В третьих, если такой сервер всё-таки «ляжет», сеть накрывается известной посудой из известного металла, что грустно… В общем, решили действовать по принципу e-mail: серверов много, они общаются между собой по утверждённому стандартному протоколу, и если один сервер выключается из сети, страдают только пользователи, зарегистрированные именно на этом сервере — работа остальной сети не прерывается ни на миллисекунду. Приятный побочный эффект: если сделать свой сервер (а препятствием к этому может служить только лень) и не подключить его к общей сети, то внутрикорпоративная секретная переписка не покинет пределов корпорации (или хакерской группы, или террористической организации, в общем, кому что интересно).

Помимо всего прочего, протокол XMPP устроен так, что передавать можно любые данные, которые вообще можно запихнуть в IP-пакеты: текст, файлы, звук, видео — что угодно. Нужно только, чтобы клиентские программы с обеих сторон умели соответствующие пакеты понимать… И вот этот факт, вкупе с тем, что каждый может создать свою Jabber-сеть (подключив или не подключив её к всеобщей), стал основой популярности протокола. Google Talk, к примеру, использует протокол Jabber. LiveJournal, кстати, тоже.

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

Первый — многопротокольные мессенджеры, проще говоря, программы, которые умеют работать и с Jabber, и с ICQ (а также с AIM, MSN, Gadu-Gadu и чёрт-знает-чем-ещё). По этому пути пошли создатели Miranda IM, Trillian, Kopete, Gaim и подобных программ. Получилось неплохо, но вы же помните, что в мире Linux не любят проприетарных протоколов (и не любят писать для них программы). Kopete и Gaim не в счёт: лично я ими пользоваться не могу, хоть режьте.

В мире открытого софта пошли по второму пути: зачем писать поддержку кучи протоколов в клиентской программе, если можно сделать это на сервере?! Помните, протоколу XMPP без разницы, какие данные через себя пропустить? Вот тут-то на сцене и появляются сервисы. Сервисы — это вроде мирандовских плагинов, только стоят они на сервере, и запускают через XMPP пользовательской программе свои данные и объяснение, как с ними работать. Первыми из сервисов, разумеется, появились чат-комнаты, куда без них, а потом дело дошло и до гейтов — «ворот» сначала в ICQ, а потом и в остальные сети. Причём гейт, к примеру, в ICQ далеко не один — можно выбрать гейт на том сервере, где больше нравится (или где вменяемый админ, что в моём случае почти одно и тоже). Конечно, некоторые вредные админы пускают в гейт только тех пользователей, которые зарегистрированы на их сервере (чтобы не сильно перегружать каналы трафиком со всего мира), но если поискать, найти открытый гейт можно всегда, благо серверов в сети Jabber не сотня и не две. В крайнем случае, кто мешает создать собственный сервер и нужный гейт на нём…

Гейтов великое множество: во все распространённые сети (ICQ, AIM, Gadu-Gadu, MSN, Yahoo, продолжайте сами — есть даже гейт в систему Mail.Ru Agent), в IRC, в электронную почту (и POP3, и SMTP), гейты, исполняющие роль RSS-аггрегаторов, адресных книг и многого другого. Лично мне почту удобнее читать всё-таки отдельной программой (как и RSS, и IRC), но кому-то нравится — почему бы и нет…

В общем, решение у меня созрело довольно быстро: приличные и удобные для меня Jabber-клиенты под Linux существуют (взять хотя бы Psi), а ICQ можно пользоваться и через гейт, нужно только приличный гейт отыскать (гейт, нормально пропускающий кириллицу. невидимость и файлы был немедленно найден). Так что теперь я окончательно и бесповоротно ушёл в Jabber, а моё присутствие в остальных сетях отныне обеспечивается исключительно гейтами — и все проблемы с обновлением софта при внесении изменений в протокол ICQ (как это было прошлой зимой) пусть ложатся на плечи администраторов серверов… Я же буду просто пользоваться удобным IM-клиентом. Да вот хотя бы той же Psi…