Ideas - jabberd2/jabberd2 GitHub Wiki
- Rob's [wiki:OldTODO] and ideas file is here too
At present, j2 builds dynamically link all enabled libraries into the resultant binaries. This creates some headaches for packaging in that the binaries will not run if a single enabled/linked library is missing even if the options it provides are not used. Other applications seem to be able to work around this by looking for the needed options/libraries at runtime. #52 done in [180] as [source:/tags/jabberd-2.1.5 2.1.5 release].
At present, j2 can be scaled horizontally in limited ways: there can be multiple c2s and sm processes (also s2s?). Each domain must have its own sm. j2 can support at least several thousand concurrent users, though most j2 installations are smaller than that. j2's vertical scaleability could be improved in several ways:
- more efficient mio backend: using libevent, which would support epoll, kqueue etc. depending on platform. Christof Meerwald has implemented experimental epoll support for j2.0, but libevent would support more platforms.
- optimising memory usage, e.g. converting JIDs from char arrays (each JID is min 3K), dynamically sized hashes.
Here are some relevant resources:
- [http://www.kegel.com/c10k.html The C10K problem]
- [http://pl.atyp.us/content/tech/servers.html High-Performance Server Architecture]
- [http://monkey.org/~provos/libevent/ libevent]
- Make it easier to support multiple domains with minimal additional config
- Present appropriate ssl cert based on to attribute in initial stream header
- A frequent request
- Aim for 100% XMPP and XMPP-IM support and compliance. Involves supporting s2s SASL, xml:lang and possibly reviewing code behaviour and error checking for compliance.
Consider implementing support for:
- [http://www.xmpp.org/extensions/xep-0013.html XEP-0013] flexible offline message retrieval
- [http://www.xmpp.org/extensions/xep-0025.html XEP-0025] http polling (?)
- [http://www.xmpp.org/extensions/xep-0033.html XEP-0033] extended stanza addressing (?)
- [http://www.xmpp.org/extensions/xep-0079.html XEP-0079] advanced message processing (being implemented by Cedric Vivier)
- [http://www.xmpp.org/extensions/xep-0124.html XEP-0124] http binding
- [http://www.xmpp.org/extensions/xep-0133.html XEP-0133] service administration
- [http://www.xmpp.org/extensions/xep-0198.html XEP-0198] Stanza Acknowledgements; do this anyway despite the Jabber Council - sneakin
- Integrate Oracle module contributed by Nathan Christiansen [in 2.0 as a storage driver only]
- Integrate SQLite module contributed by Chris Parker & Christof Meerwald. #43 done in [153] as [source:/tags/jabberd-2.1.4 2.1.4 release]
- Need an MSSQL Storage driver
- Need more options for using LDAP, e.g. retrieving vcard info from LDAP
- Offline message quota (being implemented by Stephen Marquard) and expiry. Quota in [source:/tags/jabberd-2.1 2.1 release]
- Database schema changes and extended info in the database: IdeasDatabase
- Integrate contributed CVM and IMAP auth modules
- More flexible LDAP authentication
- Ability to store password hashes only and not cleartext passwords in storage
- The problem with this is that many SASL modules require direct access to the cleartext password. Whilst you can work around this on a per-mechanism basis, storing hashed passwords breaks the modularity of SASL's plugin mechanism.
- X509 (certificate) client authentication
- Radius authentication