Краткая история индонезийского джаббера

    Всем привет! В этом сообщении я хочу рассказать одну историю, очень сильно повлиявшую на мою онлайновую жизнь. Началась эта история в теперь уже далёком 2008 году, а закончилась этим летом. Это история о свободной сети Jabber/XMPP в индонезийском сегменте и о моём вкладе в развитие джаббера в этой стране, и посвящена она всем джаббероводам, тратящим свои силы, а часто и деньги, на поддержку своих детищ лишь во имя существования и процветания свободной распределённой XML-сети.



    Начало


    Всё началось в 2008 году с малозаметной публикации о программе Bombus в одной из популярных индонезийских газет. Индонезия, как истинно азиатская страна, уже успела к этому времени телефонизироваться до зубов, поэтому заметка вызвала широкий общественный резонанс и резкий рост интереса к Jabber. Первые пользователи регистрировались и общались главным образом на российских серверах. Старожилы джаббера, возможно, помнят дни, когда от индонезийцев было воистину не протолкнуться. Такая тенденция не очень понравилась мобильному оператору Telkomsel, который решил запустить свой собственный Jabber-сервер. Сервер этот, вероятно, стал первым настоящим Jabber-сервером в Индонезии. Он работал по адресу messenger.plasa.com (сейчас не работает) и дополнял собой остальной функционал этого сайта, который тогда был чем-то вроде социальной сети (сейчас это интернет-магазин).

    Со временем среди индонезийских пользователей Jabber появились люди с IT-образованием, самостоятельно разобравшиеся в принципах функционирования сети. И аудитория, наконец, созрела до создания собственных серверов. Тогда и родился первый в Индонезии сервер, поддерживаемый энтузиастом. Это был сервер jabberid.org, функционирующий и поныне. Whois-информация по этому домену всё ещё хранит в себе дату запуска сервера. Человеком, запустившим сервер, был бизнесмен из Джакарты — Setyo Wibowo. Аудитория сервера быстро росла. В команду сервера вскоре вошёл Java-программист Eddy Purwa. Он вызвался помочь популяризации сервера путём разработки собственного XMPP-мессенджера для мобильных устройств с поддержкой J2ME. Вскоре были предложены два названия для проекта — iMess и ACId. Смысл первого достаточно очевиден, второе же являлось аббревиатурой от «Aplikasi Chat Indonesia». Разработчику понравилось второе название, и оно было выбрано в качестве официального. Первое же было отложено «про запас» на случай возникновения каких-либо юридических проблем с выбранным именем.

    Примерно в это же время частью сообщества стал я. Я был приглашён в конференцию разработчиков ACId человеком, с которым мы хорошо подружились за несколько месяцев до этого — я держал у себя на сервере Jabber-бота, которым этот мой друг пользовался. Имя этого моего друга, впоследствии ставшего моей опорой в Индонезии на долгие годы, — Wiecliff Reynardo, или просто Клифф.

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

    Участников в команде было достаточно много. Большинство из них, правда, предоставляли лишь моральную поддержку, так как не могли помочь проекту программированием, созданием графики или ещё чем-либо материальным. Среди этих людей выделялся ботовод Arnold Lapian. Отец на тот момент двоих детей, человек в глубине своей души весьма хитрый, он целенаправленно стал моим другом, заметив мои познания в области XMPP. И однажды он обратился ко мне примерно с такими словами: «Дружище, а почему бы нам не основать свой собственный Jabber-сервер и тоже позиционировать его как национальный? Смотри, jabberid.org падает всё чаще и чаще, а валяется дольше и дольше». И я почувствовал, что не могу отказать ему в своей помощи. Опережая будущее, позволю себе похвастаться, отметив, что именно этот момент можно считать рождением самого могущественного Jabber-сообщества в индонезийском сегменте — SmartCommunity.

    Но тогда ещё мы с Арнольдом и не мечтали о каком-то будущем. Напротив, после того, как мы действительно запустили свой проект, на нас обрушилась волна гнева. Нас обвиняли в сепаратизме, грозили бритвой Оккама. Не понравилась наша деятельность и Клиффу. Однако, до окончательной ссоры дело не дошло, и здесь сыграл роль именно тот фактор, на который сослался Арнольд, когда аргументировал потребность в новом Jabber-сервере. JabberID.Org начал падать чаще и чаще, и в скором времени неожиданно для всех загнулся совсем. Как оказалось, его основатель не захотел развивать проект дальше. Умер и проект ACId: его разработчик, и так с самого начала испытывавший ко мне недоверие, окончательно пришёл для себя к выводу, что индонезийский Jabber поставлен на колени иностранцем и у него нет будущего.

    Будущего индонезийского джаббера действительно было туманно. Платформа J2ME постепенно сходила на нет, так как обычные телефоны стремительно уступали своё место смартфонам, а для смартфонов нормальные клиенты либо не существовали, либо были неизвестны индонезийцам. В этих условиях команде SmartCommunity, состоявшей тогда из двух человек, удалось собрать под своей крышей больше пользователей, чем было у предшественника jabberid.org, а впоследствии и перехватить домен jabberid.org под свой контроль.

    Серверы SmartCommunity функционировали достаточно стабильно. Со временем к команде примкнули новые участники, среди которых были и программисты — индонезиец Irfan Mahfudz Guntur и белорус Artem Sheremet. А раз появились новые программисты, то появились и новые проекты. Промежуток времени с 2010 по 2012 годы, несмотря на то, что большинство индонезийских пользователей уже покинули сервер, ознаменовался настоящим бумом программирования: было положено начало как минимум семи (!) проектам. Я кратко представлю каждый из них.

    1. Lopbox

    Индонезийский участник сообщества SmartCommunity и заодно веб-программист Irfan Mahfudz Guntur, известный в сообществе под ником ayes, под впечатлением от российского сервиса Juick, решил разработать индонезийский аналог, который он назвал Lopbox. Проект профункционировал на домене lopbox.com в течение года, после чего был признан своим автором бесперспективным и похоронен, несмотря на мои попытки его спасти. Любопытный факт: несмотря на то, что Lopbox должен был стать сервисом микроблоггинга, посты в нём чаще всего не были похожи на посты в Juick, и больше походили на общение в MUC, что лишь подчёркивало то, что для большинства пользователей назначение сервиса было загадкой.

    2. PHP-Component

    В рамках проекта Lopbox мной была разработана платформа на языке PHP для создания XMPP-компонентов, использующих протокол XEP-0114. Тут особо представлять нечего, так как я уже описывал этот проект на Jabber.Ru. Правда, ссылка на репозиторий потеряла актуальность в связи с моим переходом с SVN на git. С недавних пор код проекта размещён на github.

    3. RSS-транспорт

    Это простой RSS-транспорт, основанный на PHP-Component. Нет никакого смысла говорить о нём много, поэтому я ограничусь ссылкой на его страницу на github.

    4. Cathy bot

    Cathy — бот для джаббера, написанный Артёмом на языке Ruby. Насколько мне известно, заброшен разработчиком из-за отсутствия потребности.

    5. acid-pc

    Участники сообщества, бредившие мечтами об ACId на Java, были больны столь сильно, что уговорили меня попробовать взяться за разработку клиента заново. Так как у меня не было никакого опыта разработки под мобильные платформы, но был небольшой опыт с C++ вообще и Qt в частности, я решил попробовать. К тому времени уже активно велась разработка новой XMPP-библиотеки — qxmpp — и у меня чесались руки попробовать её в действии. С тонкими моментами в процессе разработки мне очень здорово помогал Артём, значительно более опытный в прикладном программировании. К сожалению, довести мессенджер до ума не удалось, но так как моя мотивация окончательно себя исчерпала, я решил не выбрасывать исходники и не оставлять их валяться на приватном SVN-сервере, а просто выложить на github. Так что если будут желающие сдвинуть развитие проекта с мёртвой точки, я готов принять pull request-ы. Впрочем, я также готов выслушать и критику за ненадобность, но критикующих хотел бы попросить обратить внимание на причину рождения проекта.

    6. mukite

    Mukite (Multiuser Kite) — сервер конференций для XMPP, рассчитанный на работу в условиях высоких нагрузок, разрабатывает его Артём. У этого проекта также есть своя страница на github.

    7. mawar

    Этот проект, являющийся реализацией XMPP-сервера, мы назвали в честь первой девушки на нашем сервере, которую звали Mawar Aryani. На самом деле это слово означает «роза». Главным разработчиком проекта был мой друг, в то время очень заинтересованный в развитии XMPP и просто интересовавшийся состоянием дел у SmartCommunity. Я лишь помогал кодом. Целями проекта были легковесность и низкое потребление ресурсов.

    История mawar достаточно интересна. Сначала планировалось, что этот демон должен был послужить для функционирования сервисов SmartCommunity. Чуть позднее разработчик проекта выражал желание, чтобы демон функционировал в его фирме в качестве корпоративного сервера. Возможность сделать проект открытым первоначально не рассматривалась, хотя проект использовал многие библиотеки, требовавшие этого своим лицензионным соглашением. Точки над «и» расставились лишь летом 2013 года, когда главный разработчик проекта в ответ на мой интерес в достаточно грубой форме сказал, что ему надоел джаббер и джабберопроблемы, и он не заинтересован в дальнейшем развитии проекта. Таким образом, владельцем проекта стал я, и мне ничего больше не оставалось сделать, кроме как опубликовать его на github.

    Highload


    Сезон 2010-2012 выдался «урожайным» не только с точки зрения объёмов кода. В 2011 году начался резкий рост популярности свободной сети в Сирии. По какой-то причине арабы начали массово ломиться на тогда ещё достаточно мелкий и заурядный сервер jsmart.web.id. Нагрузка всё росла и росла, и мы были вынуждены постоянно наращивать мощности за свой счёт. Однажды, когда мы осознали, что этот рост не собирается прекращаться, мы решили проинформировать арабов о том, что они общаются за наш счёт, и должны покинуть сервер в течение определённого промежутка времени, в противном случае будут заблокированы по IP-адресам (благо, списки IP-сетей для любой страны можно легко найти). Однако, арабы оказались навязчивее, чем мы ожидали, и нам удалось найти человека, готового оплачивать хостинг для аудитории любых масштабов. Так неспешно мы пришли к пиковой отметке в 60 тысяч одновременно подключённых пользователей на всех доменах — втрое больше, чем у jabber.ru — и мы должны снять шляпу перед разработчиками ejabberd, давшими нам такую замечательную возможность одновременно обслужить такое количество реальных пользователей на одной физической машине.

    Также летом 2011 года мне удалось побывать в Индонезии вживую и увидеться со многими людьми, внёсшими свой вклад в жизнь нашего сообщества, а также с основателем и администратором другого индонезийского Jabber-сервера, у которого была своя история и своё сообщество пользователей.



    Летом 2013 года в команде случился раскол, в результате которого команда распалась как минимум на 2 части (белорусско-сирийскую и индонезийско-египетскую). Я не примкнул ни к одной из них, так как не вижу для себя никаких причин сделать это. Однако, я желаю обеим командам успешно продолжать начатое когда-то дело по поддерживанию своих скромных узлов свободной сети.
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 13
    • +6
      Читаю и в очередной раз поражаюсь, насколько важны личные качества участников и их желание договариваться. В любом деле, в любом проекте.
      Но вообще — вы провернули крутую штуку, молодцы.
      • +1
        Очень хочется верить, что всё это было проделано не зря, то есть с пользой. Для себя-то я пользу извлёк (значительно сблизившись с далёкой страной), но интересно, есть ли во всём этом какая-то польза для российского джаббера :)
        Собственно, поэтому я и привёл список проектов — хотя многие из них кривы, сыры и недопилены, было бы здорово, если бы нашлись люди, которым это пригодилось бы, и было бы ещё круче, если бы кто-то смог внести свою лепту (fork, pull request, etc).
      • +1
        Немного отошел от Jabber-сообщества.
        Подскажите, оно еще развивается или уже пошло на спад?
        Т.к. на предприятиях все больше сворачивают внутренние Jabber и пользуются кто чем.
        Хотя еще пару лет назад общался с партнерами через коннект серверов Jabber.
        • +1
          Всё зависит от того, в контексте какой страны рассматривать это самое сообщество.
          У арабов, я думаю, всё ещё наблюдается развитие.
          А вот в России уже достаточно давно наблюдается деградация.
          Я, кстати, недавно описывал у себя в блоге вероятную причину этой деградации.
          • +2
            Прочитав пост в блоге: мне кажется, в вашем анализе ситуации обделены вниманием два важных момента: 1) не очень понятно, как (и почему) общая стагнация Jabber-сообщества влияет на корпоративные сервера (внутренние сервера предприятий) — про что, собственно, пишет DLag; и 2) почти все мои контакты в Jabber (как и я сам) пользуются гугловским сервисом (а не независимыми-сторонними). Который, как пишут, никто пока не собирается закрывать.

            Ну то есть как: я тоже стал замечать, что Jabber все чаще стал замещаться, скажем, тем же скайпом, но обстоятельного объяснения пока не нахожу. :-(
            • +3
              У меня есть ещё одна гипотеза.

              XMPP-протокол, считающийся очень простым, на самом деле прост лишь в теории. Он прост, когда надо просто залогиниться на сервер и отправить сообщение. Но он становится феерически сложным, когда надо делать что-то реально полезное. Большинству среднестатистических пользователей на сегодняшний день от IM-приложения нужно достаточно много: гарантированная отправка файлов, закладки на чаты, аудио и видео-вызовы. В XMPP всё это предусмотрено, но — вот беда — для любой задачи предлагается целая туча XEP-ов, то есть методов решения этой задачи. В результате разработчики клиентов (и серверов, кстати, тоже!) вынуждены метаться из стороны в сторону, не зная, что и как им реализовать. Взять те же закладки на MUC — они могут храниться как в Private XML storage, так и в pubsub. О передаче файлов я вообще молчу — там вообще туева хуча возможных способов. Идёт нарушение важного принципа, упомянутого в питоновском import this — «Должен существовать один — и, желательно, только один — очевидный способ сделать это».

              Пользователи хотят от клиентов много, но им совершенно непонятны технические аспекты того, как всё это работает за кадром.
              • +2
                Спасибо, отличный комментарий, с тех. подробностями; то, что надо. Соглашусь насчет гарантированной доставки и передачи файлов (самое насущное): в жабере я или собеседник зачастую теряем сообщения, посланные в ε-окрестности :) времени разрыва связи; а уж настроить передачу файлов — этим, имхо, вообще почти никто не заморачивается. В том же скайпе эти фичи есть «из коробки», сразу, безо всякой настройки.
                • 0
                  Я бы добавил, что не только сложности в реализации каких то возможностей отпугивает пользователей/программистов/администраторов, а еще и то что нет единого сервера для всех. Если рассмотреть тот же скайп, то мы ставим одно приложение которое сейчас довольно популярно и не задумываемся о том какой же сервер подключить и на коком сервере сидят его знакомые и друзья.
                  • +1
                    Это очень серьёзная проблема.

                    Так как если бы был один центральный сервер — всегда был бы риск разрушения сети после отключения этого сервера.
                    Если же серверов много, то есть если имеет место то, что мы наблюдаем сейчас, то получается как я описал у себя в блоге — тысячи бабочек-однодневок, портящих мнение технически не подкованных пользователей о всей сети. Ведь что думает простой пользователь, когда пишет другу и видит ошибку remote-server-not-found? Он не задумывается о том, что произошло, и вообще что за сервер. Он просто думает, что Psi такие вот глючные, и спокойно связывается со своим другом через Skype.

                    Вот если бы в сети на уровне протокола был предусмотрен автоматический, прозрачный для пользователя, выбор сервера на основании каких-то критериев (допустим, его загруженности), и прозрачную его смену в случае отказа, было бы намного лучше. Опять же, позволю себе сослаться на одну из своих предыдущих публикаций, на этот раз на jabber.ru. Сделали бы хотя бы так, то есть, не совсем прозрачно, но хотя бы какая-то балансировка загрузки, не позволяющая загнуться мелким серверам, уже была бы.
                    • +1
                      Добавлю ещё. Мне кажется, развитие Jabber и развитие XMPP надо рассматривать отдельно, а не вместе, как обычно рассматривают. Jabber это просто свободная сеть, построенная на XMPP-протоколе. Есть ли смысл делать её доступной для широких масс, идя на какие-то уступки типа скрытого от пользователя автоматического выбора сервера — это ещё большой вопрос, т/к аудитория сети уже сформировалось и, по крайней мере, в российском и индонезийском сегментах это в основном сплошные IT-шники — программисты и админы.

                      А под развитием XMPP надо понимать интегрирование этого протокола в существующие IM-сервисы (наподобии Skype) и разработка новых. Другими словами, для развития джаббера достаточно просто создать новый сервер или написать какой-нибудь программный проект/продукт, а вот для развития XMPP нужны уже более комплексные меры — в идеале написание нового менеджера, организация инфраструктуры, организация окупаемости всей этой штуки и т.д.
          • +2
            Хорошая история. Приятно осознавать, что есть люди, которые могут и делают вещи только на энтузиазме и идее, которая в них живет.
            • +2
              Вы молодцы! А девушка очень симпатичная. :-)

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.