This site is deprecated; docs have moved to docs.inspircd.org!

FAQ/General

From the makers of InspIRCd.
Revision as of 09:57, 14 May 2007 by Special (Talk | contribs)

Jump to: navigation, search

General

Why should I choose InspIRCd over some other ircd?

There are several reasons to choose InspIRCd over some other ircd. These are:

  • InspIRCd has high-performance socket engines such as epoll and kqueue, where other ircds with the same feature set (modes, commands) as InspIRCd do not.
  • InspIRCd is totally modular -- add and remove features as YOU please, not as the developers tell you to.
  • InspIRCd offers its own implementation of many modules for free which developers of certain other irc servers want to charge you for.
  • InspIRCd has a highly scalable non-blocking SQL API, supporting postgresql, sqlite and mysql, unseen in any other ircd.
  • InspIRCd's massive featureset is efficiently written in approximately 32000 lines of code. Compare this to 84000 lines of code for similar ircds with similar featuresets.
  • InspIRCd's modular design allows you to upgrade parts on the fly which you cannot in any other ircd, such as SSL support (just think, you don't need to restart your net just because of an openssl upgrade any more!), any modes, and even the linking protocol itself!
  • Its fun to use Tongue.gif

How much memory does InspIRCd use? How does this compare to other IRCd software?

On our live network, ChatSpike, we have between 1000 and 1400 locally-connected users at a time, and our server currently has the following stats (using the latest 1.1 series InspIRCd):

  • Memory use: 18mb
  • CPU Usage: 0.00% through 0.15% CPU usage
  • CPU Time: Over approximately nine hours since the last restart weeks on a 1.7ghz Pentium 4; 3 minutes 7 seconds CPU time
  • Modules loaded: 68 modules (most of them plus a couple of proprietary modules)
  • Linked servers: One other InspIRCd server plus ircservices

By loading less modules, it is easy to lower this usage by a factor of ten on all counts.

What operating system runs InspIRCd the best?

As we have not personally tested and profiled every operating system on the planet which is capable of compiling and running InspIRCd we cannot say. We can however state that we developed InspIRCd on freebsd and gentoo machines, so we know it performs well on these platforms.

Why did you write an IRCd in C++?

Because C++ has a whole range of features that make it appealing to such a project, on a project management and coding level:

  • OOP allows for modular design, which is the goal of InspIRCd
  • OOP allows for easier project management and allocation of tasks between developers
  • OOP programs are easier to design

Of course there are negative aspects -- it is harder to find C++ coders than C coders (we still don't know why) and there are probably faster and more efficient object oriented languages out there, but it basically comes down to the fact we know C++ and we don't know these other languages.

Why didn't you use an XML parser for your config format?

There are three reasons for this. The most important reason is firstly because the config file is not xml! It isnt intended to be XML, or anything like XML. If you need to draw comparisons to other data formats, the closest comparison is SGML not XML (which is akin to HTML - we chose this format simply because just about everybody who's trying to set up an IRCd knows how to write HTML). Secondly, XML parsers apart from being slow and bloated libaries, are just that -- libraries. You will notice that the core of inspircd has no external dependencies at all. You could probably compile the core of InspIRCd on a shaven yak. Adding XML as a requirement as well as making our IRCd slower and bigger would add this as a dependency making it more akward to install. Thirdly, we believe XML is just a modern day management buzzword and there are many more useful data formats out there (such as SQL databases for example!).

Can my network be the "official" InspIRCd network?

Sorry, no. That privilege is reserved for our own network at irc.inspircd.org.

What services package should i choose?

This is pretty much a personal question. Choose what you are happy with, and what your users like. Spend a week or so trying out each package on a testnet, put it through its paces and find the best one for you, not for someone else.

Also, consider these very general guidelines:

  • If you're looking to create an undernet-like, or ircu-like network, you should consider atheme first. Atheme is similar in operation to undernet services in that it operates on the idea of accounts, not owned nicknames. This means it will guide you into using m_services_account.so on your InspIRCd server, and not the same style of nickname ownership as dalnet, for example. Currently, the largest InspIRCd network (barafranca) uses this services package.
  • If you're looking to create a dalnet-like network, you should consider ircservices. ircservices is lightweight, and because the second-largest InspIRCd network (ChatSpike) uses it, it is the best-supported services package protocol wise for dalnet-style services. In this instance, we refer to dalnet-like as any network which has strong nickname ownership, which in this case means a user can only use services from a registered nick and the services implement "nickserv enforcement".
  • For everyone else who is undecided, consider anope. Anope is the most user-friendly of all the packages, however it is the least supported of the three packages, as no larger InspIRCd networks are using it.

Where should i report a bug?

On our official bugtracker, here.

How can i contribute to the project?

Any contributions to the program should be posted as patches on the bugtracker, preferably as unified diffs (man diff) by posting here. Contributions of documentation should be made to this wiki. We do not currently need webspace, or download mirrors.

Where can i submit feature requests?

On our forum, here, or directly over IRC. Your feature is more likely to be accepted if:

  1. You provide a patch or working module.
  2. Your feature fits in with the 'style' of InspIRCd. For example, do not create one module that does ten things, create ten simpler modules that do each thing in turn, wherever possible.
  3. You can represent your idea in a simple logical way, e.g. with a flowchart or by example.

Where can i bitch, moan, flame and harass people?

NOT here, on the IRC network. In fact, it is against our Channel Rules.

Can I use InspIRCd on my large network?

Feel free! We have tested InspIRCd up to 8000 clients (on one server, our resources are kind of limited). If you have any statistics on performance etc you would like to share, just get in touch with us :)

Do any large networks use InspIRCd?

To our knowledge, the two largest networks using InspIRCd are Barafranca (3500 users) and ChatSpike (1400 users).

Which socket engines are supported by InspIRCd?

InspIRCd (From 1.0 Beta 5 onwards) supports kqueue(), which increases performance on BSD machines, and epoll(), which increases performance on Linux machines. From 1.1.6 onwards, InspIRCd also supports IOCP on Solaris 10 (IO Completion Ports). Other socket engines will be supported as we have time and resources to develop them.

Please note that the performance improvements given by use of kqueue, iocp or epoll are very large performance gains over select(), and should be used wherever they are available. If you do not have any of these socket engines, you should seriously consider upgrading your operating system or kernel before running an IRC server.

What IRCd is InspIRCd based on?

None. Yes thats right, None. We didnt start from anyone else's code, at all. Its not based on unreal, and its not based on bahamut. This is what makes it unique.

Can i run InspIRCd as root?

You could run the inspircd binary with the -runasroot parameter, but if you do, we won't support you. If you want to bind InspIRCd to a privilaged port, you should instead use a port forwarding rule in your firewall. For example, if you are using Linux with 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

This will forward all traffic on port 443 to port 4430, on the IP 127.0.0.1. You should change the ip and port numbers as appropriate.

To launch InspIRCd when your system starts, you should create an unprivilaged user, and place a line like this one into your crontab:

@reboot    cd /home/user/inspircd; ./inspircd start

Can InspIRCd make cheese sandwiches?

Only with the m_cheesesandwich module.