---

Jabber.org: Year-End Status Report

[ Jeremie writes: ]

“Welcome! This message is from the Jabber.org project, and is intended to provide a current overview, for both technical and non-technical users, of the many related technologies, projects, and plans for Jabber.

Introduction

“What is Jabber?” Many think of Jabber as just an instant messaging client/server, but in fact it’s much more. At the core, Jabber is an extensible architecture to flexibly route XML data instantly between any two points. The primary use of Jabber is as a platform for communicating instant messages and broadcasting presence. But the set of tools and technologies being continually developed at Jabber.org also have the flexibility to do much more than a simple buddy list application.

The Jabber project has made incredible and substantial progress over the last year. It started as a few prototypes in 1998 and was announced to the world at the start of 1999 on Slashdot.org. Since then we have had three major revisions and the architecture has matured significantly.

Commercial interest in Jabber has also grown significantly. The first company to step forward and support the project is Webb Interactive Services, with an interest in helping advance XML as an open messaging platform. There’s also been interest in using Jabber as a platform for instant messaging for ISPs and portals, which we welcome all involvement in. If you represent commercial interest, we are developing a special site for you at http://jabber.org/business to answer some of your questions and list others involved.

The following sections represent the general categories of Jabber development.

XML/Protocol

The basic network connection in Jabber is an “XML Stream,” a simple and powerful concept of unifying an XML document and simple TCP/IP socket. On top of XML Streams, any application can layer their own XML data in a namespace to be streamed between the two points. In Jabber, we use a basic protocol consisting of messages, presence, and queries. Within each basic Jabber protocol type, any application can further embed it’s own XML data protected in a namespace.

Server

The server side of Jabber has been the focus of the core development team, and includes jserver (the application Jabber clients connect to), etherx (an XML Stream ‘router’ of sorts), and modules (used within jserver to extend functionality). Version 0.8 of the server side tools, which was released in the first week of December, bundled full functionality for deploying instant messaging, presence, and buddy lists. The current plan is to get a 0.9 version, which has a better build system and will work on more platforms, out shortly and release a 1.0 server in January.

Clients

The long-time clients include zABBER (Tcl/Tk) and Cabbar (GTK+), and the new clients are WinJab and Jabba, both for Windows. Clients are also being developed to accompany many of the libraries described below.

Transports

A “transport” within the Jabber architecture is a server-side, special purpose engine that can interact with the rest of Jabber and has its own namespace. This is used to gateway transparently to other instant messaging networks or information sources. Development is progressing on an AIM and Yahoo! transport, which both have working versions available, with ICQ and MSN not far behind. An IRC transport has been discussed that can participate as a server within an IRC network, and allow Jabber and IRC users to communicate transparently (any experienced individuals that want to take the lead on this, join us in #jabber on the OpenProjects network – try irc.linux.com). There are numerous other transports planned including SMTP, RSS, talk/finger, news/stock tickers, and more.

Libraries

  • Perl: The XML::Stream module is currently available, and the new Net::Jabber that works with the latest jserver is also available. Special purpose logging, news, transports, and other tools can easily be prototyped or deployed quickly using these powerful perl modules.
  • Java: Jabberbeans is a Java package that exposes Jabber functionality through the JavaBeans interface. It can be used to create Java programs that use the Jabber functionality (not just for instant messaging). The current code is in development, and the first test application will be a Java applet, which can be embedded on a web page to provide instant messaging functionality (i.e., AOL’s QuickBuddy, or the Java version of Yahoo!’s client).
  • C: The shared library “libjabber” is being assembled for 0.9 out of the server sources and some other C projects. A simple ncurses test client is provided with it.
  • C++: jabberoo is a portable C++ library for Jabber, providing a comprehensive set of objects for interfacing with Jabber servers and model OO interface for other languages. Geared primarily as a client-side library, jabberoo will be designed to allow client writers focus more on the user interface and less on the details of XML parsing and Jabber server.
  • COM: JabberCOM is available and supports dual interfaces and can be used from any language/environment which supports COM, including Visual Basic, Delphi, Visual C++ and many more.
  • Python: PyJabber is 100% pure Python, portable, (optionally) threaded, compact, and trivial to integrate. It is fully functional and is ready for more testers, users, and being used to bring Jabber and real-time XML functionality to a variety of popular Python projects (mailman, zope, etc).
  • Smalltalk: Jabber functionality is being integrated into the Sqeak system for easy and fast prototyping of new client user interface concepts and protocol extensions.
  • Tcl: JabberLib is available for use by any Tcl application, and has been used to build zABBER, a full featured Tcl/Tk cross platform client.

Needs

There is always a need for more help in every aspect of any open development project, but a few key areas we could use some talented help on include:

  • Web: We need some gifted and creative graphic artists for the web site, banners, buttons, client icons, and web-based clients. We also can use anyone handy with PHP and MySQL to help maintain the tools available for developers on jabber.org.
  • Coders: pick your favorite language and join an existing effort, or start a new one. If you are good with C and server-side issues, any of the transport efforts can use a hand or writing a module to extend the server’s functionality is always helpful.
  • Documentation: as with any project, we are always behind and sub-par in our documentation. If you are a technical writer, or non-coder and want to contribute in some way, jump in and help keep the documents up-to-date or write new ones.
  • Testers: anyone who has shell access to any server can install a server, and anyone can download a client and start testing and using it. We are always welcome to feedback.
  • Security: we want to add secure layers to the architecture and provide those options, but many of the developers live in crypto-export-handicapped countries. Any international efforts to add these layers is welcomed and encouraged.
  • Clients: With the core Jabber server nearing a state of maturity, the Jabber project is scrambling to develop clients to *use* all the features Jabber provides. With the completion of the C++ library, nearly all major languages will have the necessary libraries for writing Jabber clients. If you have experience with developing for any of the following platforms, your help is needed to develop clients: Unix/XWindows, Win32, BeOS, and Macintosh.
  • GTK+ Client: Cabbar is the primary GTK+ client, but is only maintained by one individual with limited time to devote to it, any assistance would be helpful to bring it up to date and modernize it.”

Contacting

http://jabber.org/
Administrative: team@jabber.org
General: info@jabber.org
irc.openprojects.net #jabber

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends, & analysis