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

Difference between revisions of "Comparison Of Features"

From the makers of InspIRCd.
Jump to: navigation, search
(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</th></th></tr>
+
<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

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 PleXusUnrealIRCd
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.


IRCdProtocol 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 PackageUnrealInspIRCdShadowIRCdBahamutHybridRatboxCharybdisPleXus
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 PleXusUnrealIRCdCharybdis
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

  1. The ability to assign abstract classes to a user, such as "netadmin".
  2. The ability for network staff to be denoted in a channel with a special prefix.
  3. 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.
  4. Encrypted links can either be through a context, or SSL.
  5. TS6 is not available in hybrid-7.0. Support is available in the 7.1 beta.
  6. Cygnus does not support bahamut 1.8.x.
  7. IRCServices support for this ircd is available through a third-party module.
  8. Has been tested on Solaris 10 (x86) previously, not currently officially supported
  9. The ability to hot-swap the linking protocol via a dynamic module or restart, without recompiling or patching
  10. 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
  11. Multithreaded DNS is implemented, however it is not yet recommended for production use.
  12. 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.
  13. On UnrealIRCd this is a compile time option, activated by editing a header file and uncommenting a #define statement.