Международная конференция разработчиков
и пользователей свободного программного обеспечения

Общение, доверие, взаимоуважение.

В августе 2009 года одной из популярнейших белорусских IRC-сетей bynets.org исполняется 5 лет. Но примечательна она не только тем, что является излюбленным местом общения unix-гуру со всей страны, а еще и не вполне обычной историей своего создания и принципами своего существования… По нашей просьбе воспоминаниями о жизни bynets с первых дней до нашего времени поделился один из активных основателей сети Антон Самец aka Bock.

Справка:
IRC-сеть bynets.org создана и развивается с 2004 года. На сегодняшний день она объединяет около 90 irc-серверов, одновременно в онлайн находятся от 1500 до 3000 пользователей. Принцип организации сети — коллегиальное самоуправление, решения принимаются техническим советом, состоящим из администраторов серверов.

Когда по земле еще бегали мамонты…

Сам я пользуюсь IRC довольно давно, года с 2002. Начиналось все с общения на irc.by (тогда крупнейшей сети Беларуси), на канале моей специальности #informatics. Постепенно начал втягиваться все больше. Ходил по каналам, смотрел, общался с народом. Создал там даже свой канал. Потом подключился в локальную компьютерную сеть, уговорил тогдашнего админа попробовать сервер ircd. Разобрался, поставил, настроил… и слинковался на irc.by, получив права администратора сервера. Это был примерно год 2003-й.

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

Они могли заходить на канал с правами администратора канала, в обход сервисов сети. Могли без лишних объяснений кому-то давать “плюсики”, кому-то выписывать баны. А кому-то снимать баны: приятелям, соседям, знакомым и прочим. Воздействовать на них мог только основатель сети.

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

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

Правила составлялись долго, упорно, организовывались посиделки на лавочках возле домика-музея первого съезда РСДРП. Было замечательное большое заседание, с которого по мобильнику звонили для обсуждения каких-то вопросов в Америку, “отцу-основателю”. В результате нарисовались правила, в которых были не только очевидные соглашения о том, что является допустимым, а что нет — но и пункт о том, что “высшей инстанции” в одном лице, главного товарища, ответственного за все, а также правого всегда и во всем, больше не было бы. Вместо этого вводилось какое-то подобие демократии, совет координаторов (на текущий момент упразднен и он, все спорные вопросы решаются открытым общим обсуждением пользователей сети).

Естественно, это тогда и стало главным камнем преткновения. Еще раньше высказывались мнения, что проект реформ irc.by провалится и результатом будет исход или изгнание несогласных из сети. Большинство инициаторов изменений сначала скептически относились к пессимистичным прогнозам, но к августу стало ясно, что сценарий назревает именно такой.

Мы построили свой луна-парк

Теплым августовским днём Влад Шахов aka mend0za в конце концов сказал: “А не пора ли попробовать сделать альтернативу? Давайте что-нибудь постараемся предпринять”. И не только сказал, но и начал действовать. С этого момента и практически до теперешних дней это и стало главным принципом сети bynets: ты подумал, выразил умную мысль, и сделал сам… с небольшой помощью остальных.

Прежде всего задумались над выбором используемого ПО, потому что то, что было в irc.by, нам не сильно подходило, были свои недостатки и баги. Решили остановиться на UnrealIRCd. У него была тогда для нас куча плюсов, в том числе полнофункциональная версия под Windows. Сервисы тоже были неплохи.

Далее mend0za обратился к пользователям канала #unix с просьбой поискать по загашникам старые железки. Ненужные винчестеры на 1-2 гигабайта, которые уже явно не будут использоваться, материнская плата рабочая, но с устаревшим процессором К6… Развертывание опорной сети было сделано за месяц силами товарищей angor, lynxer, mend0za, [uNIx]nix. Первый сервер новой сети был установлен у провайдера bas-net благодаря администратору Саше Бутенко aka MrDeath. Сейчас этот сервер уже ушел в историю, после того как Саша уволился от провайдера, но было это уже несколько позже описываемых событий.

Тогда же мы начали заручаться поддержкой у других провайдеров, среди администраторов провайдерских irc-серверов тоже были люди, неравнодущные к ситуации. Некоторые администраторы провайдеров либо выделяли для новой сети мощности на своих серверах, либо просили: “Ребята, давайте свой сервер и мы его поставим”. Соответственно, если несколько первых мы смогли собрать сами из подручных средств, то остальные уже собирались исключительно с волонтерской помощью. Люди абсолютно бесплатно отдавали свое старое железо под это дело.

До сих пор вспоминаю с теплотой в душе один из серверов, работавший под Openbsd 3.6/Sparc — Sun Sparkstation Voyager 1995 года выпуска, с винчестером в 500МБ, встроенным цветным ЖК экраном и процессором Sparc частотой 60MHz и 64MB памяти. Он был передан на нужды сети уже со сломанной клавиатурой, но с работоспособной операционной системой внутри, управляемой удалённо. Периодически сервер радовал самопроизвольной перезагрузкой при прописывании нового линка в момент перечитывания конфигурационного файла. Был такой баг, который потом устранил Валера Масютин… Умирал сервер долго. Сначала он не давал на себя зайти по ssh, отваливался и ругался. Но IRC-демон в нём жил еще около 1.5-2 суток, в оперативной памяти продолжал витать его дух. Потом всё умерло окончательно (если не изменяет память, по причине краха винчестера), и ящичек от того провайдера мы убрали.

Сначала наши серверы ставились на неприоритетных портах. Зачастую на одном физическом сервере крутилось сразу два irc-демона, обоих сетей. И один из них слушал порт по умолчанию (6667), а другой — например, порт 6669. Затем, когда администратор физического сервера решал перейти на нашу сторону, он властным движением руки менял порты местами. :)

Название ‘bynets.org’ было достаточно очевидным. Мы не являлись коммерческой организацией, мы объединяли сети, расположенные в Беларуси. Кстати, тогда же было принято решение (после некоторых прецедентов в irc.by с линковкой российских серверов и последующей невозможностью достучаться до их администрации), что мы линкуем только серверы, находящиеся в Беларуси. Сидеть на наших каналах можно из любой точки мира, но небелорусских серверов у нас не было и не будет — это принципиально.

Реклама нашей инициативы в другой сети, естественно, была безоговорочно запрещена. Любое упоминание вело kill, gline и прочие прелести. Но находились способы… С течением времени к нам присоединялись те администраторы, которые изначально не пошли за нами, посчитав всё это отщепенством и несерьезным проектом. В итоге несколько наиболее популярных каналов и народ с них плавно переехали в нашу сеть.

Но вопрос привлечения пользователей продолжал стоять. На голом желании и обидах далеко не уедешь. Поэтому начали внедрять привлекательные для пользователей сервисы. Сначала были стандартные: боты, викторины, погода. А затем появился пользователь paulik и написал гейты “IRC-ICQ”, “IRC-Jabber”, к почте…

Спасение утопающих — дело рук самих утопающих

Мы не стали исключением из кириллических сетей по поводу проблемы схожести ников, написанных с использованием кириллических и латинских символов. С точки зрения сервера такие аккаунты различаются, чего не скажешь о восприятии пользователей. Для преодоления проблемы в версии UnrealIRCd 3.2.2 применялся какой-то старый патч, задававший настройки прямо в коде.

К версии 3.2.4 мы попросили замечательного товарища Killer{R} посидеть-посмотреть-подумать, что можно с этим сделать. В итоге он добавил в UnrealIRCd поддержку языковых файлов. Теперь стало возможным управлять настройкой символов, разрешенных в никах, без перекомпиляции сервера. Этот патч пока что в upstream не принят, но, возможно это будет сделано в одной из следующих версий.

Но этим проблемы кириллицы в мире irc не исчерпываются. Пусть пользователи не могут сидеть под одним ником одновременно, но что делать, если они входят в разное время? Старый проверенный способ — это регистрация ника на сервисах сети, обеспечивающая защиту ника паролем, и затем авторизация с использованием того же пароля. Однако проблемы с использованием схожих кириллических символов там были абсолютно аналогичные, пока в 2006 году Killer{R} не написал патч и для anope. Мы, наверное, стали одной из первых сетей, где была решена такая проблема, как схожие ники с использованием кириллических символов.

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

С версии 2.3.4 я начал писать баг-репорты на UnrealIRCd. С течением времени некоторые мелкие вещи уже мог и сам подправлять, за некоторыми обращался за помощью к Killer{R}, другим ребятам. В том числе поправили мы некоторые версии в windows-версии, которую сами разработчики UnrealIRCd не очень жалуют и поддерживают в последнюю очередь. К версии 3.2.8 меня уже записали в список контрибьюторов проекта.

Еще мы очень активно взялись за документацию. Году в 2005-2006 мы задумались — почему UnrealIRCd не так популярен, как хотелось бы? И чего не хватает народу? Обычно начинающий администратор IRC-сервера знает только windows, не знает английского — но он хочет в сеть, а для этого надо читать документацию, надо учить английский. Что далеко не всем с первого раза дается.

В итоге мы сели и потратили пару месяцев. Основной перевод сделал Сергей Довнар aka slyder. Он перевел большую часть официальной документации. Потом еще несколько человек, я в том числе, подправляли и поправляли этот перевод. Потом перевели пример конфигурационного файла и файл помощи по встроенным командам.

Вроде бы вся эта деятельность помогла популяризации UnrealIRCd и нововвведения прижились. По крайней мере, на некоторых форумах именно нашу, “байнетсовскую” сборку UnrealIRCd рекомендуют брать за основу при построении своей IRC-сети.

Локоть к локтю, кирпич в стене

Сейчас в сети около 80 серверов, что достаточно необычно для других стран, где у людей нет таких проблем, как связь с интернетом, нет необходимости объединяться в локальные сети и активно пользоваться внутренними ресурсами провайдера. Там обычно irc-сеть — это 4-5 серверов, но на каждом по 1000-2000 пользователей. В наших краях расклады немножко другие — мы рады, что провайдеры идут навстречу и открывают доступ к серверам irc во внутреннем режиме. В результате народ может общаться “со всем миром” (если “весь мир” придет к нам) через серверы провайдера. И даже если отвалится связь со внешним интернетом, пользователи такой подсети смогут общаться друг с другом, так как у них общий сервер.

Когда я как-то отправлял разработчикам UnrealIRCd скриншот вывода команды map, показывающей, сколько серверов подключено в сеть, они обалдели. И сказали, что теперь понимают, почему мы столько багов выявляем. Объединяем почти сотню серверов — неудивительно.

Условия линковки нового сервера в сеть у нас обычно достаточно просты — желательно, чтобы на новом сервере одновременно сидело не менее 10-15 человек, чтобы на связи были люди и надолго не пропадали. Потому что случались случаи, когда сервер подключали, а на нем стабильный ноль пользователей.

Управление в сети у нас довольно простое. После того, как сеть в целом сформировалась, был принцип, что администратор сервера отвечает за своих пользоватлей. Если это не сервер провайдера, естественно. И у 5-6 человек технически есть права network-админнистратора, на управление глобальной сетью. Но что нас очень радует, за статусами никто не гонится. Если возникают люди, которые кричат “дайте мне это и дайте мне то” и не могут аргументированно обосновать своё желание — они просто игнорируются. Если ты хочешь что-то реальное сделать для проекта, покажи, что тебе это действительно надо, сделай что-нибудь для всех в этой сети. И тогда получишь свои “плюшки”.

Но “плюшки” в виде дополнительных технических полномочий — это тоже не оголтелая власть над пользователями. В нашей сети — это скорее дополнительная ответственность. В других сетях действует правило “администратор всегда прав”. У нас, если ты неправильно выпишешь kill, поставишь gline и не сможешь потом аргументированно эти действия обосновать, к тебе могут быть приняты такие санкции, как исключение из сети.

Есть жесткие ограничения. В основе лежит принцип “irc оператор не имеет права вмешиваться в дела каналов, пока это не угрожает работе (целостности) всей сети”. Сеть представляет собой коммуникационную платформу для всех желающих, а не навязчивого ментора и опекуна. Это привело к расцвету многообразия каналов, каждый из которых представляет собой автономное пространство, со своими привычками, условностями и почитателями.

У нас есть рассылка, где у каждого есть право голоса. И решения принимаются иногда большинством, часто консенсусом. Если кто-то не согласен, то обсуждаем возражения с мотивировками и аргументами — либо доказываем правоту большинства, либо приходим к выводу, который он отстаивал. Для подключения новых серверов обычно достаточно мнения 2-3 человек “за”, если никто не высказывается против. Мы очень рады новым пользователям в сети, новым серверам. Потому что сейчас иногда, после того как проект уже устоялся за 5 лет, хочется свежих и новых идей.

Сетевые решения 2009