This site is deprecated; docs have moved to docs.inspircd.org!
Difference between revisions of "Comparison Of Features"
From the makers of InspIRCd.
(→Feature table) |
(Fixed some extra html tags) |
||
Line 110: | Line 110: | ||
<center><table style="border: 1px solid black"> | <center><table style="border: 1px solid black"> | ||
− | <th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Services Package</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Unreal</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">InspIRCd</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">ShadowIRCd</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Bahamut</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Hybrid</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Ratbox</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Charybdis</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">PleXus | + | <tr><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Services Package</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Unreal</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">InspIRCd</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">ShadowIRCd</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Bahamut</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Hybrid</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Ratbox</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">Charybdis</th><th style="padding-left: 4px;padding-right: 4px;background: #C0C0C0">PleXus</th></tr> |
<tr><td style="background: #C0C0C0">Atheme 1.0 </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td></tr> | <tr><td style="background: #C0C0C0">Atheme 1.0 </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td><td> XX </td></tr> | ||
<tr><td style="background: #C0C0C0">Anope v1.6.3 </td><td> XX </td><td> -- </td><td> -- </td><td> XX </td><td> XX </td><td> -- </td><td> -- </td><td> -- </td></tr> | <tr><td style="background: #C0C0C0">Anope v1.6.3 </td><td> XX </td><td> -- </td><td> -- </td><td> XX </td><td> XX </td><td> -- </td><td> -- </td><td> -- </td></tr> |
Revision as of 13:21, 8 December 2006
Contents
Introduction
This page indicates the differences in feature sets between the most popular IRCds, compared to InspIRCd. Each feature is compared against InspIRCd, as of the current version. This table is updated as new features are added to IRCd implementations. If you find any inaccuracies on this page please do not hesistate to contact us.
- Thanks to nenolod at OSCN for his original document (We have added a few extra rows to his tables) -- it saved us a lot of time and effort in coming up with the initial feature list.
Feature table
This table lists the feature sets of each IRCd.
XX means the feature is supported, -- means it is not supported or planned. ? means the status of this feature is unknown to us.
Feature | InspIRCd | ShadowIRCd | Bahamut | Hybrid | Ratbox | Charybdis | PleXus | UnrealIRCd |
---|---|---|---|---|---|---|---|---|
IPV6 Support | 1.1 | XX | XX | XX | XX | XX | XX | XX |
Reloadable core commands | 1.1 | ? | ? | ? | XX | XX | ? | XX |
SSL Client Certificate Support | 1.1 | -- | -- | -- | -- | XX | -- | XX [13] |
Oper based on SSL Client Certificate | 1.1 | -- | -- | -- | ? | ? | -- | XX [13] |
Advanced connect-flood detection | XX | XX | -- | XX | XX | XX | XX | commercial module |
Bandwidth saving (idle gets +D) | -- | -- | -- | -- | -- | -- | XX | -- |
Supports select() socketengine | XX | -- | -- | -- | -- | -- | XX | XX |
Supports poll() socketengine | XX | XX | XX | XX | XX | XX | XX | -- |
Supports epoll() socketengine | XX | XX | XX | -- | XX | XX | -- | -- |
Supports kqueue() socketengine | XX | XX | XX | XX | XX | XX | XX | -- |
Supports rtsigio() socketengine | -- | XX | XX | XX | -- | -- | XX | -- |
Supports Solaris /dev/poll | Planned | XX | XX | broken | XX | XX | broken | -- |
Portability: Native Windows support | XX | -- | -- | -- | -- | -- | -- | XX |
Portability: Solaris support | XX [8] | XX | XX | XX | XX | XX | XX | -- |
Portability: OpenVMS support | -- | XX | XX | XX | -- | -- | -- | -- |
Portability: Mac OS X support | 1_0_stable [12] | XX | XX | 7.1 | 2.0 | XX | -- | 3.2.4+ |
Basic channel flood controls | XX | XX | XX | XX | XX | XX | XX | XX |
Advanced channel flood controls | XX | -- | -- | -- | -- | -- | -- | XX |
No create on split (avoids +ik bypass) | -- | ? | -- | XX | XX | XX | ? | -- |
Modularity | XX | XX | -- | XX | XX | XX | XX | XX |
Join throttling | XX | -- | XX | -- | -- | XX | -- | XX |
Advanced Operator ACL [1] | XX | XX | -- | -- | -- | -- | -- | -- |
Operator Prefixing [2] | -- | XX | -- | -- | -- | -- | -- | -- |
Server notice selection (snomask) | 1.1 | XX | XX | XX | XX | XX | XX | XX |
Global client connection notices | XX | ? | -- | -- | -- | XX | ? | XX |
Meshed Linking | Planned [3] | -- | -- | -- | -- | -- | -- | -- |
Modular Linking [9] | XX | -- | -- | -- | -- | -- | -- | -- |
Unique IDs in server-server protocol (instead of nicks) | -- | ? | -- | XX | XX | XX | -- | -- |
SSL Support | XX | XX | -- | -- | -- | -- | -- | XX |
Supports GnuTLS | XX | -- | -- | -- | -- | -- | -- | -- |
Supports OpenSSL | XX | XX | -- | -- | -- | -- | -- | XX |
Modular SSL Support [10] | XX | -- | -- | -- | -- | -- | -- | -- |
Encrypted link support [4] | XX | XX | XX | XX | -- | -- | XX | XX |
Compressed server links | -- | -- | XX | XX | XX | XX | XX | XX |
User mode for registered nicks | XX | XX | XX | -- | -- | -- | XX | XX |
Track registered account name | XX | -- | -- | -- | XX | XX | -- | -- |
Services Integration (builtin services) | Planned | -- | -- | -- | -- | -- | -- | -- |
RDBMS Integration (MySQL/PostgreSQL) | free | -- | -- | -- | -- | -- | -- | commercial module |
SQL Authorization Module | free | -- | -- | -- | -- | -- | -- | commercial module |
SQL Services Integration | free | -- | -- | -- | -- | -- | -- | commercial module |
SQL Logging | free | -- | -- | -- | -- | -- | -- | commercial module |
SQL Operaccess Module | free | -- | -- | -- | -- | -- | -- | -- |
Nonblocking SQL | 1.1 | -- | -- | -- | -- | -- | -- | -- |
Spamfilter (Regexp) | XX | XX | -- | -- | -- | -- | -- | XX |
Halfop support | XX | XX | -- | XX | -- | -- | XX | XX |
'Founder' mode support | XX | XX | -- | -- | -- | -- | -- | XX |
'Protect' mode support | XX | -- | -- | -- | -- | -- | -- | XX |
Channel Censor | XX | -- | -- | -- | -- | -- | -- | XX |
Chanop-Controlled Channel Censor | XX | -- | -- | -- | -- | -- | -- | -- |
Glob match spamfilter | XX | XX | -- | -- | -- | -- | -- | -- |
User parking | XX | -- | -- | -- | -- | -- | -- | -- |
Nickname locking | XX | -- | -- | -- | -- | -- | -- | -- |
Command enable/disable | XX | -- | -- | -- | -- | -- | -- | -- |
Variable per-channel banlist size | XX | -- | -- | -- | -- | XX | -- | -- |
REMOVE command | XX | -- | -- | -- | -- | -- | -- | -- |
Timed bans | free | -- | -- | -- | -- | -- | -- | commercial module |
Hostmasking | XX | XX | -- | -- | -- | XX | XX | XX |
vHost via i:line (or equivalent) | XX | XX | very limited | XX | XX | XX | XX | commercial module |
vHost via services | XX | XX | -- | -- | -- | XX | ? | XX |
Multi-Threaded DNS | XX [11] | -- | -- | -- | -- | -- | -- | -- |
User and channel modes
See Comparison_Of_Modes_Available.
Protocol Compatibility
This table indicates the protocols supported by each of the above IRCds.
IRCd | Protocol Information |
---|---|
InspIRCd | Dependent upon linking module. m_spanningtree.so implemements a dreamforge-like prorietary protcol with TS concepts. |
UnrealIRCd | A mixture of DreamForge and EFnet TS with SJOIN, extra user modes, SPAMFILTER, etc. |
ShadowIRCd | A proprietary protocol which is a hybrid of EFnet TS6 and Undernet P10 concepts. |
Bahamut | EFnet TS5 with extensions |
Hybrid, Ratbox | EFnet TS5/TS6 [5] |
Charybdis | EFnet TS5/TS6 with extensions |
PleXus | EFnet TS5 with extensions |
Services Support
This compares the compatibility from vendor branches.
Services Package | Unreal | InspIRCd | ShadowIRCd | Bahamut | Hybrid | Ratbox | Charybdis | PleXus |
---|---|---|---|---|---|---|---|---|
Atheme 1.0 | XX | XX | XX | XX | XX | XX | XX | XX |
Anope v1.6.3 | XX | -- | -- | XX | XX | -- | -- | -- |
Anope v1.7.13 | XX | XX | XX | XX | XX | XX | XX | XX |
Auspice | XX | -- | -- | -- | -- | -- | -- | -- |
Cygnus IRC Services | XX | -- | -- | XX [6] | -- | -- | -- | -- |
IRCServices 5.x | XX | XX | XX [7] | XX | XX | -- | -- | -- |
HybServ | -- | -- | -- | -- | XX | XX | -- | -- |
SirvNET 3 Services | ?? | -- | -- | XX | -- | -- | -- | -- |
Shrike | -- | -- | -- | -- | XX | XX | -- | -- |
SRVX | -- | -- | -- | XX | -- | -- | -- | -- |
Ratbox Services | -- | -- | -- | -- | -- | XX | -- | -- |
Denora IRC Statistics, Beta 1 | XX | XX | XX | XX | XX | XX | XX | XX |
GNU Thales | XX | -- | -- | XX | XX | -- | -- | -- |
NeoStats | XX | -- | -- | XX | XX | -- | -- | -- |
IRC Defender | XX | XX | -- | XX | XX | XX | -- | -- |
Code Comparison
Feature | InspIRCd | ShadowIRCd | Bahamut | Hybrid | Ratbox | PleXus | UnrealIRCd | Charybdis |
---|---|---|---|---|---|---|---|---|
Lines of code (approx) | 41804 | 109183 | 71356 | 92824 | 67885 | 85980 | 120627 | 64639 |
Unzipped size | 2.1mb | 4.9mb | 3.2mb | 5.1mb | 3.7mb | 5.6mb | 13mb | 3.7mb |
Number of goto's (approx) | 0 | 53 | 104 | 153 | 58 | 61 | 114 | 65 |
Percentage comments (approx) | 18% | 13% | 19% | 12% | 11% | 9% | 18% | 12% |
Notes
- The ability to assign abstract classes to a user, such as "netadmin".
- The ability for network staff to be denoted in a channel with a special prefix.
- The ability to have a mesh of servers instead of an acyclic distribution graph. In InspIRCd, this was supported before beta 5, it is planned to be re-implemented as a module in later versions.
- Encrypted links can either be through a context, or SSL.
- TS6 is not available in hybrid-7.0. Support is available in the 7.1 beta.
- Cygnus does not support bahamut 1.8.x.
- IRCServices support for this ircd is available through a third-party module.
- Has been tested on Solaris 10 (x86) previously, not currently officially supported
- The ability to hot-swap the linking protocol via a dynamic module or restart, without recompiling or patching
- The ability to hot-swap the SSL support via dynamic modules, without recompiling or patching. In the case of InspIRCd, also without requiring a restart
- Multithreaded DNS is implemented, however it is not yet recommended for production use.
- Support for MacOS X is planned in trunk (1.1) and will be manually merged into the codebase after the development of the new mode parser and other features.
- On UnrealIRCd this is a compile time option, activated by editing a header file and uncommenting a #define statement.