Jabber 1.0

This is a temporary plan or collection of needed features for the upcoming 1.0 release.  There will be a 0.9 release preceding the 1.0, which will be feature-complete but not fully bug/load tested.

Jabber is an "architecture", and therefore consists of many different components and projects. The 1.0 release is only for the core server, which involves libjabber, jserver, and etherx.  The numerous other projects and teams will likely reach a 1.0 status around the same time, but this document is not making any statements about those efforts.

(a + means the assigned person is looking for help with the task)
 

Item Description Assigned Status
Server
Build Overhaul the autoconf/automake build system, better tests/xp checks temas
dlopen XP issues with dlopen and family, use libtdl and allow for static builds jer
logging Improve the logging data for etherxd and jserver, document and have sample log formatters/stats. jer
API Complete API overhaul. jer, + Three API types: svc[Services], mod[Modules], and xdb[XML Data storage].
Data Models Look at using hashes and adjusting other data models internally jer user data references tracked and freed when not used.  Hash for main user and resource lookup.
Keepalive Implementing a protocol-level keepalive function to check for broken sockets jer plan is to send whitespace at timed intervals between the main elements
Error better error checks/handling, testing for validity of data, etc jer
Resource Types Allow for different types of resources, hidden, shadow, etc jer Server will no have this built in, but modules can implement this using agents.
I18n Internationalization issues. jer, temas Use gettext for error messages and other strings.
Etherx Protect the secret from the wire jer Use hashes (MD5)
Protocol
File Xfer And Family (any data stream), negotiating location, starting, etc. SOCKS? jer, temas, + Full doc being written, but get started by looking at the jabber:x:oob namespace.
Feature Negotiation Between any entity, clients, servers, transports, etc. NOT for negotiating aspects of a feature, just the yes/no existance of it. jer, + jabber:iq:fneg proposal
Transport Agent/Transport/Service handling, type: issue (icq:123454), server listing available transports, etc. jer, + all URI's in jabber are "jabber:" for now, and jabber:iq:agents for listing transports/etc on a server
JUD Jabber Universal Data: jabster, user searching, master server list, etc. temas, jer, + started
CTCP Typical Client2Client stuff, ping, traces, version, but could be between any jabber entity jer, +
Registration Maturation of the jabber:iq:register IQ jer updated jabber:iq:register
User Info Standard user info, setting and fetching. jer Uses the vCard XML IETF proposal.
Group Chat How is the presence/messages handled for group chats, or chatrooms, joining, nicks, etc. temas, jer basics implemented (participants level), no administration yet
Redirects XML Stream level redirection. jer Upon connecting, if the stream root greeting has a redirect="12.34.56.78" attribute, the connector should use that IP and attempt to connect again.
Valid Chars List the exact valid characters for the Jabber ID. jer, temas The username is under the same restrictions as SMTP, the host is normal DNS name restrictions, and the resource has no restrictions.
Transports
ICQ Basic ICQ transport quad partially implemented (libicq)
AIM Basic AIM transport temas partially implemented (libfaim, oscar)
Yahoo! Basic Yahoo Pager transport tcharron partially implemented (yahoolib.c)
MSN Basic MSN transport + MSN Messenger lib in Java was mentioned?
SMTP Receiving Email immediately in Jabber using a special email address(userid@jabber.host.net), and replies being delivered via email. jer, + concept
Group Chat Simple chatrooms, bundled with jserver temas implemented
Unix Talk/Finger/R* services that query a jabber server directly. +
File Xfer A special transport to assist in file transfers, bridge between two clients via the server, optionally allow offline file xfers. jer, + Two main types of features needed here: SOCKS type (stream through a 3rd party) and HTTP storage type (offline file exchanges).
POP Checker Check any POP box for new messages and send alert. jer Plan to do w/ perl.
Modules
Basic stores user data in simple files jer implemented
MySQL stores user data in mysql +
Unix uses standard unix data (/etc/passwd) +
Radius auth against a radius DB +
LDAP uses a LDAP server for user data +
Groups Allow shared roster groups jer
Announce Broadcast messages to everyone (for admins) jer
Admin Query server status and change variables on the fly, active user list, etc jer
MD5 Secure Authentication jer, temas
SHA1 Secure Authentication jer, temas
Services
Multi Allow multiple authenticated users/resources via one socket, for proxies or advanced clients. jer
IRC Any IRC client can connect directly to jserver and log in as a jabber client jer, + concept
Telnet a simple text-based interface built into jserver, similiar to a moo/mud jer, + concept
HTTP For web based clients, allow HTTP access, for clients behind firewalls/proxies also. jer planning
Misc Projects
josh Shell tools, other lightweight UNIX environment jabber apps quest, jer concept
mozilla XUL based client/libs, full Jabber  integration with Mozilla eric, jer, + partially implemented
HTML pure HTML/Javascript based clients, presence buttons, message forms, chatrooms, etc. jer uses HTTP service