Introducing Baraza: Free Mobile Instant Messaging Server
Baraza implements the IMPS (a.k.a "Wireless Village") protocol for Mobile Instant Messaging. Baraza is designed to run on Linux. (Future releases may support other platforms.)
IMPS is a rich, Open Standards protocol developed by the Open Mobile Alliance. (IMPS protocol specifications may be found here.) It is supported natively on a number of widely available mobile devices.
Baraza implements both the Instant Messaging and Presence services in one application. It supports the IMPS Client/Server Protocol (CSP) for communication between IMPS client applications and the server, and the Server/Server Protocol (SSP) for inter-domain message and presence exchange. Jabber/XMPP is also supported for inter-domain message and presence exchange.
Baraza aims to deliver a complete IMPS implementation. Though still a work-in-progress, Baraza provides at least the following functionality:
IMPS CSP protocol support for versions 1.1 through 1.3
Support for user auto-registration: Depending on system configuration, new users are automatically registered on first logon.
Offline message storage: Server stores messages received when the user is offline, for delivery when user logs on
IMPS Communication Initiation Request (CIR) TCP/IP channel (a.k.a S/TCP) support for CSP, allowing for fast delivery of IM for devices that support TCP-based CIR (e.g. Nokia Series 60). WAPUDP, WAPSMS and SUDP are also supported.
Full, automatic, support for text (XML) and binary (WBXML) encodings of CSP protocol messages, as well as our own JSON realisation of CSP — very convenient for building AJAX-based IMPS clients. (Refer to Online Forums for more information on this.)
In-built chatterbot support, enabling the implementation of generic, server-side auto-responder and push services. (e.g. news services, etc.)
Jabber/XMPP server-to-server protocol support, for inter-domain message exchange (a.k.a "federation") as defined in RFC 3920. This means that you can exchange IM and Presence info with existing users on services that use Jabber/XMPP, such as Google Talk/Gmail.
IMPS Server Server Protocol (SSP) v1.3 for inter-domain federation. This means that any two instances of Baraza, on separate hosts/domains, can exchange messages.
Support for multiple domains on one Baraza instance: A typical IMPS chat user ID is of the form user@domain. A single instance of Baraza can service multiple domains.
Multimedia Content storage (a.k.a shared content): When Baraza receives a multimedia message (picture, audio, etc.) destined for a user at a domain that uses Jabber/XMPP, the message is saved to the inbuilt content server, and the remote user is offered a URL where they can download the content. Baraza does this because plain Jabber/XMPP, unlike IMPS, does not support multimedia content delivery.