FAQ/General.ru
From the makers of InspIRCd.
Почему мой выбор должен пасть на InspRCd, а не на какой-то другой IRCD?
Есть несколько причин предпочесть InspIRCD другим IRCD. Вот они:
- InspIRCd имеет в своем активе высокопроизводительные сокет-движки, такие как epoll и kqueue, в то время как другие IRCD, с таким же набором функций (режимы, модули) как и у InspIRCd - не имеют. Более того, InspIRCD имеет в своем активе еще и поддержку некоторых уникальных систем сокетов, таких как windows I/O Completion ports, которая увеличивает производительность windows-сборок InspIRCD не в пример другим IRCD.
- InspIRCd полностью модульный IRCD - вы можете добавлять и удалять различные возможности как ВАМ того хочется, а не так, как того требуют разработчики других IRCD.
- InspIRCd имеет набор своих собственных, бесплатных модулей, в то время как разработчики некоторых других IRCD требуют оплаты за аналогичные модули.
- InspIRCd имеет свой собственный, широкий, неблокируемый SQL API, поддерживающий postgresql, sqlite и mysql, чего нет в других IRCd.
- Огромный список возможностей и особенностей InspIRCd укладывается всего в 32000 строчек кода! В то время как другие, аналогичные IRCD с аналогичными возможностями насчитывают аж 84000 строк.
- Модульная система InspIRCd разработана таким образом, что позволяет вам обновить одну из частей вашего IRCD прямо "на лету", например таких, как поддержка SSL, новые режимы, и даже протокол связи между серверами! Этой особенностью не обладает ни один из известных IRCD (только представьте себе, вам больше не придется перезапускать IRCD только для того, что бы добавить поддержку SSL или изменить какую-то особенность протокола!)
- Группа кодеров InspIRCd активно поддерживает и обновляет проект! В то время, как другие группы кодеров выпускают релизы своего детища раза два в год, мы же выпускаем новые сборки каждые две недели, что бы быть уверенными, что у вас имеются последние разработки и улучшения. О причинах таких скорых релизов смотрите документ "Release Early, Release Often".
- Команда разработчиков InspIRCd с большой долей вероятности прислушается к вашим пожеланиям, озвученным на форуме и рассмотрит выложенные вами патчи, в отличие от разработчиков других IRCD.
- Это, просто-напросто, великолепный IRCD!
Как много оперативной памяти потребляет InspIRCd по сравнению с другими IRCD?
Наша, достаточно населенная сеть ChatSpike, с постоянным онлайном около 1000-1400 локально-соединенных пользователей за раз, имеет следующую статистику по использованию ресурсов сервера (используются последние сборки из 1.1 серии InspIRCd):
- Потребление памяти: 18Мб
- Потребление CPU: от 0.00% до 0.15% загрузки CPU
- Время использования CPU: 4 минуты и 7 секунд, за 9 часов работы, с момента последнего рестарта на этой неделе (Pentium 4 1.7Гц процессор)
- Загружено модулей: 68 модулей (большинство из стандартной поставки плюс несколько личных модулей)
- Слинковано серверов: один сервер на базе InspIRCd плюс сервисы IrcServices.
Меньшее количество загружаемых модулей позволит вам снизить текущие показатели примерно в 10 раз.
Почему вы выпускаете новые версии так часто? Я не поспеваю за вами!
Мы следуем идеологии 'Release Early, Release Often', основной идеей которой является выпуск новых версий как можно чаще, что бы сохранить к продукту интерес пользователей и вкладчиков. Это отнюдь не значит, что мы в спешке исправляем ошибки предыдущего выпуска (как это бывает с другими IRCd), совсем нет, просто мы хотим показать, насколько активны мы и наш проект соответственно. Если в новой версии релиза вас ничего не заинтересовало (новая возможность или исправление какой-либо ошибки), вы более чем вправе использовать свою текущую версию. В случае, если в новой версии есть какие-то критические изменения, мы обязательно уведомим вас об этом в описании к релизу и новостях.
На какой операционной системе лучше всего использовать InspIRCD?
К сожалению, мы не тестировали InspIRCD на каждой ОСи мира, на которой его можно скомпилировать и запустить, поэтому, мы не можем ответить на данный вопрос. С другой стороны, учитывая тот факт, что InspRCd был разработан на FreeBSD- и Gentoo-системах, мы можем ответственно заявить, что он работает на них просто прекрасно.
Почему в качестве основного языка программирования вашего IRCD вы выбрали C++?
Потому что C++ имеет широкий спектр особенностей, которые представляются весьма привлекательными (с точки зрения кодинга и управления проектом) при разработке подобных проектов:
- OOP позволяет организовывать модульную архитектуру - основную особенность InspIRCD
- OOP позволяет без труда управлять проектом и распределять конкретные задачи между разработчиками
- OOP-программы очень просто проектировать
Безусловно, есть и некоторые минусы - очень сложно найти кодеров, знающих C++, в отличие от кодеров на C (нам до сих пор непонятно почему). Вероятно, есть и более быстрые и более эффективные обьектно-ориентированные языки программирования, однако, мы знаем только C++ и не знаем других языков.
А почему бы вам не использовать XML-парсер для конфига вашего формата?
Три причины. Первая и самая основная - наш конфигурационный файл не XML-based! Он не задумывался как XML-файл или что-нибудь подобное. Если вам нужно сравнение с существующими форматами файлов, ближайшим подходящим будет SGML, но никак не XML (SGML чем-то схож с HTML - мы выбрали данный формат только потому, что любой, кто сталкивался с проблемой настройки IRCD, уже ознакомлен с особенностями HTML). Во-вторых, XML-парсеры, помимо того, что работают очень медленно и перегружены библиотеками, сами по себе являются библиотеками. Стоит заметить, что ядро InspIRCD - независимо от внешних факторов, в принципе, вы можете скомпилировать его даже голом колене. Поэтому, добавление XML лишь замедлит наш IRCd и более того, поставит установку IRCD в зависимость от внешних условий. Ну и в-третьих, мы считаем, что помимо XML есть еще много удобных и полезных форматов хранения данных (например таких, как SQL-базы данных!).
Может ли моя сеть быть "официальной" сетью InspIRCd?
Нет. Данной привилегией обладает лишь одна сеть, ее основной сервер irc.inspircd.org
Какие сервисы стоит мне выбрать для InspIRCd?
Это вопрос личных предпочтений. Выбирайте то, что нравится вам и пользователям вашей сети. Выделите несколько недель на тестирование различных сервисов на тестовом сервере и остановите свой выбор на понравившимся вам, а не кому-то еще.
Если интересно, вот несколько рекомендаций:
- Если вы хотите создать сеть, похожую по структуре на Undernet или IRCu, стоит обратить внимание на сервисы Atheme. По своей работе, сервисы Atheme очень похожи на сервисы Undernet'а - в основу положен принцип аккаунтов, а не регистрации ников. Это значит, что вам нужно будет использовать модуль m_services_account.so на вашем сервере с InspIRCd. На текущий момент, самая большая сеть на базе InspIRCd (barafranca) использует сервисы Atheme.
- Если же вы хотите создать сеть на подобие сети Dalnet, стоит обратить внимание на сервисы IrcServices. Легкие и быстрые IrcServices используются во второй по размерам сети на базе InspIRCD (это наша сеть - ChatSpike) и являются лучшим выбором, если вы желаете организовать сеть, похожую на Dalnet. Стоит заметить, что данные сервисы основываются на ярко выраженном принципе "владения" ником.
- Ну и тем, кто еще не определился или хочет создать что-то свое, стоит обратить внимание на Anope. Сервисы Anope наиболее "дружественны" и просты в освоении, в отличие от других сервисов, однако, учитывая тот факт, что ни одна из крупных сетей на базе InspIRCD не использует их, имеют меньший приоритет поддержки.
Куда мне отсылать отчеты о найденных багах?
Сюда, на наш официальный bugtracker.
Каким образом я могу поддержать проект?
Любая поддержка на программном уровне должна быть осуществлена в виде патчей, выложенных на bugtracker'е, желательно в виде diff'ов (man diff). Поддержка на уровне документации осуществляется через Wiki. На данный момент, наш проект не нуждается в дополнительном хостинге или зеркалах на дистрибутивы.
Куда обращаться по поводу запросов на улучшения/дополнения?
На наш форум или прямо на канал в нашей IRC-сети. У вашего улучшения будет больше шансов на одобрение если:
- Вы предоставите его в виде патча или рабочего модуля.
- Ваше улучшение вписывается в "стиль" InspIRCd. Например, не стоит создавать модуль, который обладает 10 функциями сразу, лучше создать 10 маленьких и простых модулей, которые могут выполнять все эти функции по отдельности, если возможно.
- Вы можете представить вашу идею простым логическим способом - блок-схемой или примером.
Где я могу спорить, жаловаться, флеймить или беспокоить людей?
ТОЧНО не в нашей IRC-сети. Почему? Читаем правила нашего канала.
Могу ли я использовать InspIRCd в моей весьма большой сети?
Конечно! Работа InspIRCd тестировалась в условиях работы с 80-ю тысячами клиентов (на одном сервере, наши ресурсы очень ограничены). Если вы обладаете какой-либо статистикой производительности InspIRCD и хотите ею поделиться, мы всегда рады, просто свяжитесь с нами :)
Использует ли InspIRCd какая-нибудь большая IRC-сеть?
Насколько нам известно, InspIRCd используется в двух крупных сетях: Barafranca (3500 пользователей) и ChatSpike (1400 пользователей).
Какие системы сокетов поддерживаются InspIRCd?
Поддерживаются следующие, высокопроизводительные системы сокетов:
- select (для всех версий и всех ОСей)
- kqueue (1.0 beta 5 и выше, только BSD-системы)
- epoll (1.0 beta 5 и выше, только Linux-системы)
- Solaris 10 I/O Completion Ports (1.1.6 и выше, только Solaris-системы)
- Windows I/O Completion Ports (1.1.8 и выше, только Windows-системы)
Возможно, будут разработаны и другие движки системы сокетов, если, конечно, у нас хватит на них времени и ресурсов.
Стоит заметить, что серьезное увеличение производительности наблюдается при использование таких систем сокетов как kqueue, iocp или epoll, поэтому, они должны использоваться на всех системах, где только возможно их использование. Если же ваша Операционная Система не поддерживает ни одну из вышеупомянутых систем сокетов, стоит серьезно задуматься об обновлении ОС и/или ее ядра.
Какой IRCD послужил основой IRCd?
Никакой. Да-да, вы не ослышались - никакой. Мы не начинали с каких-либо заготовок или чьего-либо кода. Наш IRCD не базируется ни на Unreal, ни на Bahamut. Это делает его уникальным.
Могу ли я запускать InspIRCD под рутом?
Вы можете запустить бинарник InspIRCD с правами рута используя параметр -runasroot, но, в этом случае, мы не берем на себя никакой ответственности за последствия. Если вы хотите привязать InspIRCd к определенному порту, рекомендуется использовать правило перенаправления портов с помощью firewall'а. Например, если вы используете Linux с iptables:
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d 127.0.0.1 --dport 443 -j DNAT --to 127.0.0.1:4430 /sbin/iptables -A FORWARD -p tcp -i eth0 -d 127.0.0.1 --dport 443 -j ACCEPT
Данное правило перенаправит весь трафик с порта 443 на порт 4430, используя IP 127.0.0.1. Вам лишь необходимо изменить порт и IP на нужные вам.
Каким образом я могу поставить InspIRCD на автозапуск, вместе с системой?
Для запуска InspIRCd одновременно с запуском вашей системы, вам необходимо добавить следующую строку в список задач crontab того пользователя, под которым вы хотите запустить IRCd (crontab -e):
@reboot cd /home/user/inspircd; ./inspircd start
Может ли InspIRCd готовить бутерброды с сыром?
Конечно, но только с модулем m_cheesesandwich.

















