The InspIRCd Project
Home | Developers | Wiki | Forums | Bug Tracker | SVN | Download | Blog | Stats

Roadmap

From the makers of InspIRCd.

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.

Contents

Introduction

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

It's quite long, so moved to a separate page. See Development/Roadmap/1.2.

Completed for inclusion in 1.2+1

  • Oper override alternatives: OOMODE family of commands, and OJOIN "network buisness" join
  • m_delaymsg
  • Proper dependency checking in the build system; remove ./configure -modupdate
  • Fully IPv4/IPv6-independent code
  • SSL metadata (fingerprint) available to remote servers, better /whois support with multiple SSL modules loaded
  • Correct (module-defined) mode merging on netburst
  • Display correct source of server-sourced actions (such as mode changes) instead of always using the local server
  • Fix potential race conditions in rehash
  • Allow some modules to be loaded on part of the network (rather than forcing network-wide load).
    • SA* command family
    • REMOVE
    • CHGHOST/CHGNAME/CHGIDENT
    • Modules providing a local-acting-only umode (cloaking, most message blocking umodes) - unfinished
  • Bug #723: Initial queries for databases (TODO: port to others besides mysql)

Planned for 1.2+1

  • Split "can send" to a separate hook for easier blocking of stuff. Bug #729 and others.
  • New who hooks (required by austnet?) [w00t]
  • Bug #539 - motd/rules creatable by remote includes
  • Review of chanprotect settings
    • Channel::GetStatus() needs to return the same as GetPrefixRank of highest prefix
  • review of vector/deque use where list is better (vector is less efficient on insert/delete as it requires contiguous memory allocation, but more efficient if used temporarily as it requires fewer heap allocations)
  • review of duplicated code in general
    • m_watch
    • PART and KICK
    • Allow SimpleUserModeHandler to be used for oper-only modes.
  • 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..
  • Make SSL certificate generation optional in ./configure
  • Allow modules to be selected for compilation (integrate with modulemanager?)
  • Bug #683: option to zline on rline match
  • Bug #684 (and others): "rmtkl"
  • Bug #676: send module load/unload notifications to other servers
  • Bug #675: seperate spy channels in whois to a new numeric
  • Bug #672: ? dnsbl exceptions
  • Bug #643: more comprehensible/user-friendly xline messages (date, time, banner?, expiry)
  • Bug #640: ? configuration option for cloak depth
  • Bug #670: make snotice delay configurable
  • Bug #657: sort out operoverride insanity a little bit + make +L more useful by adding an OnJoinFailed event. NOTE: needs careful thinking about how banredirects will interact with this to avoid endless loops &c.
  • Bug #752: Allow some more extbans to be used as extinvex (+I j:)
  • Bug #846: give spanningtree the capability to keep an opercount per-server

Planned for unknown release

  • Native services (in-IRCd), see Development/IRCdServices
  • perl bindings (allow modules to be written in perl)
  • Bug #762: DNS resolver doesn't use anything except the first returned record (causes problem when CNAME and PTR are both returned),
    • Possibly add DNS engine, similar to socket engine, that can optionally make use of third-party resolver libraries
  • Bug #795: <connect:modes> doesn't check all connect tag attributes
  • Bug #689: Looping failovers can cause bad issues
  • Bug #761: Hot fallback links to reduce user-visible affects of netsplit
  • Bug #768: Way to specify requireident/requiressl for <connect> blogs
  • (w00t) Socket subsystem/buffering review
    • Flexible sendq: Don't rigidly enforce sendq, allow some flexibility e.g. for /who, /check, possibly /list output.
    • combine buffers via a simple structure w/ pointers to reduce string copies drastically? (keep ssl in mind, but should be ok now)
    • (done) handle all read/write buffering *internally* instead of making modules deal with it (this is very much possible now)
    • Remove unneeded syscalls to manage read/write readiness -- use edge-trigger rather than level-trigger for epoll
  • Protocol changes:
    • These are delayed to try to retain linking compatibility
    • Bug #739: Topic change needs to include channel TS
    • Split riding: handle cases like s1 <-> s2 on netmerge to splitride into +i channel via KICK resolution like p10? messy...
    • Use ENCAP for better compatibility w/ native TS6, and less forced capabilities for server authors
      • SVSJOIN
      • SVSPART
      • SVSQUIT
      • SVSNICK (TODO also, should we split SVSNICK on nick collision into a SAVE extension?)
      • Many module commands
    • Allow modules to specify how their commands should be routed (possibly related to making them ENCAP)
  • Codepage conversion (Phoenix, w00t)
  • (w00t for now?) Module to scan clients for open proxies (to complement m_dnsbl) (?). - someone who wants this can claim it
  • Be able to override opertype fields for individual opers (e.g. host etc)
  • (Brain) Less disgusting way to look up <connect> info (from user->MyClass, etc), than having to re-match just about everything in every module that wants to do it. Examples of where this is used: m_conn_umodes, m_ident
    • (more generally) Easier way to tie a config tag with a struct in memory, so e.g. modules can look up other details they add without having to go to a great deal of bollocks enumerating and matching stuff. an example would be storing a pointer to opertype & oper block config stuff in user class.

Being considered

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

  • Header file cleanup - have modules include only the headers for features they use, which makes the build faster.
  • Bug #738: (patch) Usermode to allow operoverride (needs thinking on whether or not we really want this) (corrections to attached patch in danieldg's queue)
  • protocol changes to be more similar to TS6:
    • EUID from charybdis?
    • FMODE -> TMODE from TS6 (they are identical in semantics already)
    • FJOIN -> TS6 SJOIN compatibility somehow?
  • Other protocol changes:
    • AWAY time notification: :AAAAAAAA AWAY 123456789 :away message here + send on whois optionally via new numeric
    • Bug #420: Syncing of channel ban details (setter/time). This could also make TBAN easier to implement
  • XML-RPC stuff (ala atheme)?
  • SQL logging of XLines Bug #357 (not a must now with xline db, according to owine)
  • More state storage in SQL or other database type (/lusers output)
  • Bug #468: add a return enum to mode parser so modules can determine what part of the parse failed
  • Web configuration frontend
  • "IRCd Virtual hosts" - Server responds based on the dns entry used to connect to the server, different server names, auto joins, motd etc.
  • Development/ChannelMembership Channel membership ideas
  • Bug #748: Development/ModeSync - resolution for MODExMODE and MODExJOIN desyncs
  • Bug #521: RMTKL/RMXLINE (done via third party, by Phoenix)
  • 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 is considering some of this)
Personal tools
head
Navigation
head
head
head
head
 
head
head
Toolbox
head
head