This site is deprecated; docs have moved to!


From the makers of InspIRCd.
Revision as of 19:18, 23 December 2010 by Jackmcbarn (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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.

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


This is where features that have been implemented are moved. This also serves as a high-level changelog of major versions

Planned Features

New Modules

These features may be included as third-party for existing releases.

  • Bug.png Bug #684 (and others): "rmtkl"
  • censor support for multiple lists (+GG racism cursing)
  • Allow replacement using glob-regexes instead of just blocking or <censored> (+g s/shirt/pants/)
  • Bug.png Bug #873: Kill chasing
  • Bug.png Bug #873: Mode (or more likely extban) for amsg usage
  • Bug.png Bug #925: SSL Client Certificate for Authentication & Nickname Enforcing
  • Add SNMP support to show some basic statistics (user count, etc)
  • Connect block specifiers
    • System based on some kind of metadata to set class using services (triggered during SASL, perhaps)
    • Add n: extban for matching based on connect class name (i.e. for a tor connect class)
  • Module to scan clients for open proxies (to complement m_dnsbl; might not scale as well as a split process)
  • Character encoding translation for PRIVMSGs (convert to/from UTF-8, normalize UTF-8) - allow client choice, server default.
  • Language translation: add vsnprintf functor in User::Write, convert core/modules to use that for stuff needing xlation. Not a small task, needs a someone with a target language.
  • RE2 regex engine for regex bans/spamfilters settable by non-opers
  • XML-RPC stuff using m_httpd - channel mode changes/kicks/etc via trusted client. See atheme's interface for ideas.

Module Changes

Changes and updates to existing modules, which can be done without changing the core.

  • Easy aliasing of existing commands, possibly with a module, such as: <ealias target="NICK" alias="N">
  • SNOTICE filtering for log channels, to filter out SearchIRC bots (or similar)
  • Add /STATS h to list all users with umode +h set (help list) - or perhaps have HELPOP command itself do this
  • blockcaps percentage setting, e.g. +B 95 for blocking 95% of caps per channel.. perhaps 5:93 type setting, 5 min chars, 93% to block..
    • Extban syntax thoughts: +b B:5,93:banmask
  • more flexible +j that allows you to specify how long you are prevented from joining once you fail to join
  • m_dnsbl changes
    • exceptions - can be done now if the dnsbl only changes connect class, but E:line check may be easier.
    • support for more complex DNSBLs like TorDNSEL [1]
  • m_cloaking changes
    • Allow cloak depth for IPs to be customized (shown octets, number+size of intermediate chunks)
    • Allow customization of host cloak depths (number hidden?)
    • Include all this in the "*" cloaked for CAPAB matching
  • Bug.png Bug #930: improve m_connectban rate-limiting
  • Bug.png Bug #873: Make m_nopartmsg block quit messages too (needs thought on what to do for people in multiple common channels)
  • Give spanningtree the capability to keep an opercount per-server
  • Show recently split servers at the end of /map output, i.e. * [split 4m2s ago]. Possibly only for opers, although it is useful for users to know that the network is smaller than it should be.
  • Initial queries for databases (mysql has it, others need it)
  • Move LDAP lookups to a worker thread like SQL, so they don't block the IRCd
  • LDAP group extban (may need thought if this will this be a speed concern or need to make things like JOIN async)
  • Change operprefix to only mark opers with a given permission. Perhaps multiple prefixes (ala customprefix).
  • Move DH parameter regeneration to a separate thread to avoid blocking


  • Bug.png Bug #643: more comprehensible/user-friendly x:line messages (date, time, banner?, expiry)
  • Add information (possibly to 005 line, possibly elsewhere) on the available named modes, similar to the CHANMODES list
  • Register action extbans
    • Allow the choice of activating them as listmodes (so you can choose between +b S:PostBot!*@* or +S PostBot!*@*).
    • Syntax idea for exemptions: +SS *!*@* ~PostBot!*@* will strip colors from everyone except PostBot.
  • State storage on restart (/lusers output, for example)


Changes that require changing the server-to-server protocol.

  • Bug.png Bug #739: Topic change needs to include channel TS
  • Hot fallback links to reduce user-visible affects of netsplit (handshake and mini-burst?)
  • Split riding: handle splitride into +i/+k/banned channel via KICK resolution


  • Allow modules to be selected for compilation (integrate with modulemanager?)
  • Modules providing a local-acting-only umode (cloaking, most message blocking umodes)
  • Codepage conversion (Phoenix, w00t)
  • Use a precompiled header on supporting systems to speed up compilation

Other ideas

These are ideas that we aren't yet sure about, need discussion, or don't seem practical. They are all open to discussion, and most would make good third-party modules.

  • Merge CBAN and QLINE so they're the same code, essentially
  • Scripting language bindings (allow modules to be written in other languages like python/perl)
  • Header file cleanup - have modules include only the headers for features they use, which makes the build faster.
  • Bug.png Bug #420: Syncing of channel ban details (setter/time). This could also make TBAN easier to implement
  • SQL logging of XLines Bug.png Bug #357 (not a must now with xline db, according to owine)
  • Web configuration frontend - either as an extension of httpd_config, or a full PHP-based web app producing & editing inspircd.conf
  • Bug.png Bug #521: RMTKL/RMXLINE (done via third party, by Phoenix)
  • Bug.png Bug #528: Restrict oper to particular login (done via third party, by Phoenix)
  • Restriction of kills to local server (done via third party, by Om)
  • Presence extension:
    • AWAY broadcast in a numeric, possibly including AWAY timestamp info
    • Numeric for changing host, rather than forcing a fake quit/join
    • Support for extended client-client notifications (typing notice? charybdis was considering some of this)
  • Development/Roadmap/account system - being introduced in pieces as issues are addressed