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. Version 0.9 (to be released shortly) will provide
an enhanced build system and support a larger number of platforms. This release will be
followed by version 1.0 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 provides a dual-interfaced COM object which can be used with Visual Basic,
Delphi, Visual C++ and any other COM supporting environments.
- 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