This site is deprecated; docs have moved to!


From the makers of InspIRCd.
Revision as of 01:03, 13 July 2008 by Special (Talk | contribs)

Jump to: navigation, search
Development Development Material - Information posted here is for developer reference only. This material is subject to possible change and will be technical in nature.


This page is to provide a general roadmap for future InspIRCd development. It is updated regularly, so don't take it as verbatim.

Please note that this page may be quite technically oriented, as it is intended primarily as a developer reference.

Please only edit this page if you are a developer. :)

1.2.0 Release


  • [DONE (Brain)] userrec::HasPermission -> map of maps, for (even faster) access
  • [DONE (Brain)] Fix jointhrottle to not try 'throttle' clients during a netmerge (requires changing join event to be aware of netmerge?)
  • [DONE, BACKPORTED (Brain)] SVSPART (bp to 1.1?)
  • [DONE, BACKPORTED (w00t)] Allow spanningtree to re-bind listeners on rehash (bp to 1.1?)
  • [DONE (w00t)] Stop using local fake clients to force mode changes, use a global one.
  • [DONE (w00t)] If possible, combine module compilation and linking into one command - from a casual glance and vague test, this should work, and cuts off about 25mb.
  • [DONE (w00t)] Snomask compression (multiple snotice repeats compressed into 2 lines)
  • [DONE (w00t)] Ability to limit total number of users in a connect class/tag, via limit="" (will not be easy)
  • [DONE (w00t)] Permanent channels and relevent protocol changes (ick!) Bug.png Bug #352
  • [DONE (w00t, Brain)] dev/UID UUIDs and SIDs.
  • [DONE (Brain, w00t)] dev/CommandFloodControl Flood control redesign proposal.
  • [DONE (Om, Brain)] dev/ModuleLoader Module factory removal and module loader refactor.
  • [DONE (w00t, Brain)] dev/XLine XLine redesign.
  • [DONE (w00t)] dev/BanCache BanCache. (probably in conjunction with XLine redesign)
  • [DONE (Brain)] dev/Hooking Module hooks redesign.
  • [DONE (w00t)] dev/xline.db XLine database stuff
  • [DONE (w00t)] Re-work spanningtree usercounts to be a little more understandable, and work 100% on reloads etc
  • [DONE (w00t)] RLINE\sgecosmatchingtoo 7d :reason (user-based regex bans ala /spamfilter -u)
  • [DONE (w00t)] SAPART reason, and part-prefix/postfix.. Bug.png Bug #467
  • [DONE (w00t)] Ban for lots of quit flooding, see Bug.png Bug #314 (done, m_quitban)
  • [DONE (w00t)] Exceptions for m_denychans.
  • [DONE (w00t)] Speed up culllist
  • [DONE (aquanight)] Allow certain channels to be exempt from m_filter_*, help channels etc
  • [DONE (aquanight)] Hashed passwords for more than just opers, e.g. die and restart, Bug.png Bug #355 - simple way to do this: Instead of OnOperPassCompare (blah), we need an OnPassCompare(method, input, expectedoutput) ..or something.
  • [DONE (aquanight)] Make m_password_hash re-read hashtypes on rehash.. so you can load providers after it. (Actually, it just picks up the hash modules immediately as they are loaded meaning /loadmodule is enough.)
  • [DONE (aquanight)] /invite timers.. timed invites that expire. Either /invite foo #chan 60s, or something. (I'd prefer mandatory expiry of all invites after a configurable period of perhaps 5 minutes myself). Bug.png Bug #489
  • [DONE (dz)] Allow redirecting a channel in config (add option to ban channel stuff?)
  • [DONE (w00t)] Create command handlers for spanningtree commands, move commands out into individual files rather than huge .cpps
  • [DONE (Brain)] dev/RemoteIncludes Remote includes. (5 parts)
  1. [DONE (Brain)] Remote includes dependency: posix-threads threading engine
  2. [DONE (Brain)] Remote includes dependency: windows-threads threading engine
  3. [DONE (Brain)] Thread class
  4. [DONE (Brain)] Test suite incorporating thread engine test methods
  5. [DONE (Brain)] Ability to execute a command as an include statement
  • [DONE (Brain, nenolod)] dev/CAP CAP negotiation.
  1. [DONE (Brain, nenolod)] Addition of CAP to NAMESX, UHNAMES etc
  2. [DONE (Brain, nenolod)] IAL/SASL support
  • [DONE (Brain)] Ability for modules to hook any outbound numeric
  • [DONE (w00t, aquanight)] dev/Logging Logging overhaul. (2 parts)
  1. [DONE (w00t, aquanight)] Core logging
  2. [DONE (w00t, aquanight)] m_chanlog channel logging
  • [DONE (Brain)] Don't make binding ports work by port number (i.e. allow 7000 to be plaintext on one IP, SSL on another)
  • [DONE (Brain)] Bug.png Bug #254 - Allow sqlauth to specify the nick in the password
  • [DONE (aquanight)] Add the ability to allow or disallow modes for an oper via the oper type; this could, for example, allow certain types to not use some snomasks, or +H, etc, and would also remove the custom flag for m_invisible.
  • [DONE (Brain)] dev/Functors Conversion to use functors (2 parts)
  1. [DONE (Brain, Om)] Functor framework
  2. [DONE (Brain)] Porting of core methods to functor framework - Functions will be converted to functors as required by modules/user requests
  • [DONE (w00t)] /WATCH away notification
  • [DONE (w00t)] Configurable prefixes for +qa (instead of forcing ~&). Needs a protocol change to FJOIN to be nice to services. Useful for Ultimate/ircx/etc users. (probably nabbed by w00t :P)
  • [DONE (Brain)] Detection of max sockets without a recompile, just requires you to raise it in your kernel and restart inspircd.
  • [DONE (Brain)] Mode merges in one line for netburst, fixes Bug.png Bug #493.
  • [DONE (Brain)] Server to server protocol 'interface', which is implemented by protocol modules (m_spanningtree) - not sure how this is to work exactly, something like ServerInstance->Remote->SendModeChange(user, "+r"), ServerInstance->Remote->ChangeHost(userrec, "") (this will be ongoing, the beginnings will probably be in 1.2)
  • [DONE (Brain)] Allow for custom prefixes to be used in /notice #chan e.g. &
  • [DONE (w00t)] dev/Extbans Extban infrastructure.
  • [DONE (w00t)] Convert m_shun and m_cban to use new XLine framework


  • [UNDERWAY (dz)] WHO reworking of sorts


  • [PARTLY DONE (w00t)] Module to scan clients for open proxies (to complement m_dnsbl) (?). - someone who wants this can claim it
  • Server linking via SSL crap (aquanight?) Bug.png Bug #423
  • Method of listing all users connected for configurable time (e.g. /who +t 1d5m)
  • AWAY time notification: :AAAAAAAA AWAY 123456789 :away message here + send on whois optionally via new numeric
  • Permanent channels: have a list of channels in inspircd.conf created on startup - include topic and modes. Bug.png Bug #511
  • CAPAB check for prefixes -> CAPAB check for prefix modes
  • Single regex provider module used by all modules requiring regex: allows also for multiple types of regex (tre for u3.2 compatibility, POSIX regex, PCRE)


These are ideas that we either like, (we just aren't sure when to do them), or ideas we aren't yet sure about.

  • Flexible sendq: Don't rigidly enforce sendq, allow some flexibility e.g. for /who, /check, possibly /list output.
  • SQL logging of XLines Bug.png Bug #357 (not a must now with xline db, according to owine)
  • Bug.png Bug #468 - add a return enum to mode parser so modules can determine what part of the parse failed
  • Web configuration frontend
  • Synching of channel ban details, this would require an entirely now BMASK or whatever command to sync bans, one per line (ick) Bug.png Bug #420
  • "Virtual hosts" - Server responds based on the dns entry used to connect to the server, different server names, auto joins, motd etc.
  • dev/ChannelMembership Channel membership ideas
  • Restriction of kills to local server (1.2? third party?)
  • Allow OperOverride to set modes +q +a Bug.png Bug #524
  • Oper prefixing mode (3rd party?)
  • dev/ModuleManager Package management-like system for modules, to encourage 3rd party development and slim down the distribution