[JDEV] first run of the "Jabber Essay", please read, correct, and add
Jeremie
jeremie at jabber.org
Mon Dec 13 03:48:18 CST 1999
Here is the first run at the document I plan on sending to the
announcement list and publishing online, to help everyone sync up with the
project development.
Very little focus has been given to grammer or spelling, so ignore those
obvious errors as they will be corrected. Pay attention to the content,
where more needs to be said, where things are incorrect, etc.
Developer Notice: if you are working on ANYTHING relating to Jabber and
want it mentioned, please speak up!
Business Notice: if you are a commercial entity and Jabber is a part of
your current development or plans, and want to be included, let me know!
Now, make sure when you reply, change the To: header to
jeremie at jabber.org, and I'll collect all the comments and post an edited
version Monday evening. Again, don't send your replies to the list, send
them to me.
======================================
Welcome! This message is from the Jabber.org project, and is intended to
provide an overview of the progress made and plans for Jabber.
============
Introduction
============
What is Jabber? That's a difficult question to answer... Many think of
Jabber as an instant messaging client/server, but that's only one way to
look at it. The easiest way to describe the set of tools and technologies
being continually developed at Jabber.org, is an architecture to flexibly
route XML data instantly between any two points. We use this extensible
architecture to do many things, most importantly as a platform for
communicating instant messages and broadcasting presence.
The Jabber.org project has made incredible and substantial progress over
the last year. It started as a few prototypes in '98 and was announced to
the world earlier this year on slashdot.org. Since then we've 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.net, 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
within ISPs and portals, which we welcome all involvement in. If you
represent commercial interest, we are developing a special site for you at
biz.jabber.org to answer some of your questions and list the existing
businesses involved.
========
Overview
========
The following sections are broken down into 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. Iin 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 'router' of sorts), and modules (used within jserver to extend
functionality). The 0.8 release of the server side tools was just last
week, and bundled full functionality for deploying instant messaging,
presence, and buddy lists. The current plan is to get a 0.9 version out
before the year end which has a better build system and will work on more
platforms, and release the 1.0 of the server apps in January.
-Clients
The long-time clients include zabber (tcl) and cabbar (gtk), and the
recent new clients are winjab (delphi) and jabba (c++), both for windows.
Clients are also being developed to accompany many of the libraries
described below. A Mozilla based effort is gaining momentum and hopes to
soon provide a fully functionality client within Mozilla, with many
exciting plans after that step.
-Transports
A 'transport' within the Jabber architecture is a server-side special
purpose engine that can interact with the rest of Jabber and has it's own
user 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 openprojects). There
are numerous other transports planned: SMTP, RSS, talk/finger, and more.
=========
Libraries
=========
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++: libjabber++ will be a portable C++ library for Jabber, providing a
comprehensive set of objects for interfacing with Jabber servers. Geared
primarily as a client-side library, libjabber++ will be designed to allow
client writers focus more on the user interface and less on the details of
XML parsing and Jabber server
Perl: There is an XML::Stream module available, and a new Net::Jabber that
works with the latest jserver will be available shortly. 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 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 (AKA AOL's QuickBuddy, or the java version of
Yahoo's client).
Python: pyjabber is nearly ready, and may be used to bring jabber and
real-time XML functionality to a variety of popular python projects
(mailman, zope, etc).
Tcl/Tk: JabberLib was created for zABBER and is available for use by any
Tcl/Tk application.
Smalltalk: Jabber functionality is being integrated into the Squeak system
for easy and fast prototyping of new client UI concepts and protocol
extensions.
=====
Needs
=====
There is always a need for more help in every aspect of any open
development project, but a particular few key areas we could use some
talented help on in Jabber is:
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 favourite 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.
Gtk Client: cabbar is the primary Gtk client but 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.
Documentation: as with any project, we're 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 docs 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/using it. We're 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 GUI apps for any platforms, your help
is needed to develop clients that fit *your* views of an IM client.
==========
Contacting
==========
http://jabber.org/
Administrative: team at jabber.org
General: info at jabber.org
irc.openprojects.net #jabber
More information about the JDev
mailing list