[JDEV] Announcing Jabber Server 1.0
Jeremie
jeremie at jabber.org
Wed May 10 13:56:24 CDT 2000
Announcing Jabber Server 1.0
After two years in development, the Jabber Server has reached the 1.0
milestone. This release supports all of the functionality for an
Instant Messaging and "Buddy List" server. The server is only one
component of Jabber, an open-source, XML-based, real-time messaging
and presence architecture being developed by an Internet community of
users and developers worldwide.
Jabber's open and extensible architecture enables any organization or
individual to operate a Jabber server and provide instant messaging
(IM) service to its users. Users within Jabber are identified by their
Jabber ID, in an email-like format: user at server. Each server is
capable of communicating with other servers via a variety of
protocols. Discover more about the Jabber architecture at jabber.org,
and look for a project-wide status update in the coming weeks.
Usability / User Features
The Jabber Development Team has striven to integrate features that
serve the needs of the modern Internet user. Because Jabber is open
development project, the team has adopted a model that enables any
developer to add commonly requested features. If you feel there are
important areas that have not yet been addressed in Jabber, you or
your company are welcome to become involved in the development
community at http://jabber.org; since Jabber is being continually
improved, it is quite possible that the desired features are under
development.
Choice / Control
Everything within the Jabber architecture and server is
designed to put the user in control of the conversation. Thus
Jabber provides users with multiple clients for common
computing platforms, the option of multiple connections,
different visual cues for messages (pop-up/chat styles), an
opt-in user directory, and control over how and to whom their
presence is distributed.
Security / Privacy
The Jabber server takes several steps to protect sensitive
information. Presence information about each user is delivered
only to those that the client specifically allows and is never
made available to anyone else. The Internet address (IP) of
each connected user is not accessible or used anywhere outside
the server, helping to protect the client computer from various
common network attacks and abuse. By default the server will
use digest authentication, which helps keep the user's password
from being exposed on the network. If enabled during the server
install, SSL can be used by clients to encrypt *all* traffic
between the client and server.
Services
Services enable the server operator to add new features and
applications externally to the server, and are developed as
seperate projects. Some services allow a user to specify their
account on a third party IM network and communicate with users
on that network transparently, while others provide unique and
new features specially for Jabber. Many services are in
development and available in beta form to server operators:
AIM, ICQ, MSN, Yahoo!, SMTP, IRC, language translation, private
chatrooms, and more. To learn more about any of these services
or how to develop your own service, please visit
http://jabber.org.
vCard / Directory
Each user can optionally store their public vCard information
on the server to the benefit of others. This vCard infomation
is stored and available in the vCard XML format (see
http://protocol.jabber.org/vcard-temp/). A small subset of this
information is made searchable in the Jabber User Directory.
Presence
Presence within Jabber is subscription-based. If a user would
like to see the presence of another user (online, offline,
away, etc.), they must send a subscription request to that
user. This request is often automated by the client as part of
adding a user to your roster. The recipient must then return an
approval or denial of that subscription request for the sender
to receive their presence. This subscription process is
enforced by the server, so that a user's presence will not be
available unless the subscription has been allowed. At any time
any user may remove an existing subscription, or send alternate
or offline presence to any particular user.
Offline Messages
While a user is offline, the server will timestamp and store
any incoming messages on their behalf. As soon as the user is
available, the server delivers any waiting offline messages.
Contact List
The server stores and maintains each user's roster (contact
list). Each item in the roster can have a custom name assigned
to it, and roster items can be arranged into groups by the
user.
Multiple Logins
Any user may connect to the server multiple times with one
account, thus maintaining one identity for work, home, and
mobile use. Each connection is a unique resource that can have
separate conversations and individual presence, and the user
can specify one resource as the default connection.
Administrative Features
The main architects of the server have many years of experience in the
Operations departments of ISPs and IT organizations. This background
has led to a server designed with ease of administration built in.
Flexible Configuration
The server configuration file allows for full dynamic control
over almost every aspect of the server operation and the
features available to that server's users. The file can be used
to override most of the default text and information sent to
clients about the server. It is also used to present the
official list of local services available to users. The
configuration file can be reloaded on the fly similiar to other
Unix servers, with a kill HUP signal. Administrator accounts
(listed in the config file) are allowed to remote-edit the
config file on the fly as well, using administrative protocol
extensions.
Connected Users
The list of connected users is available via the administrative
protocol extensions. In the future, full editorial and kicking
features will be added for managing users in finer granularity.
Announce
The server includes a module to allow administrators to send
out an announcement to all available users. In the future this
module will be extended to allow groups of recipients and
create system messages to be sent or displayed when users log
in.
Registration
The server contains optional integrated support to allow users
to register directly and create accounts on the server,
removing the need for a special alternate registration process.
Rate Limits
Various rate limits are in place within the server to deter
denial of service and other flooding attacks. These are
implemented at both the networking level and user/protocol
level.
DSO/Static
Modules can be compiled as either static or dynamic. Dynamic
modules can be configurably loaded at startup, and
installed/upgraded independent of the server.
Extensibility Features
Yes, extensibility is our core motto, prevalent throughout the entire
architecture. Nearly every aspect of Jabber is extensible.
XML
Everything within Jabber is based on XML: the transport layer
(XML Streams: http://etherx.jabber.org/streams/) , the protocol
(DTD), authentication, presence, messages, roster, vCard, the
configuration file, and more. Each one of these is itself
extensible by allowing additional third-party XML to be
included within it in another namespace. XML is not a
technology that Jabber "utilizes", but more a technology that
Jabber is "designed on top of" from the bottom up.
Services
Services (also known as agents and transports) can expose
almost any new functionality to any Jabber server. These
typically run as a seperate process (same physical server or
remotely) and attach to the server. In fact, services are
identical to any remote Jabber server except for the fact that
they implement new functionality. Transports act as a gateway
to a third-party messaging network, and translate between the
XML and that network. Many transports are in development and
available: ICQ, AIM, IRC, Yahoo, MSN, SMTP. Other server-side
"agents" might provide new functionality such as a directory
service, translation engine, reminders, news/headline tickers,
etc. Anyone can operate a service and make it available to any
Jabber server or user anywhere, it is simply recognized by the
hostname assigned to it.
Modularized Server API
The server is designed around a very flexible, modular API. In
fact, 80% of the server is written as modules! A module can
hook into certian phases within the server and intercept data
as it passes through that phase, either transparently acting
upon the data and letting it pass, or handling the data
directly.
Alternate Client Access
One layer of the server's module API allows for alternate
protocols to be directly supported, beyond the native XML
protocol used by Jabber clients, such as IRC, HTTP, and plain
telnet. While these alternate access methods are still in
development and exist only as beta, they are only optionally
enabled within the server. IRC access can be used with any
normal IRC client (/server host.net) to map Jabber client
functionality into a typical IRC service. HTTP access exposes
the Jabber functionality via HTTP, for public presence
"buttons" showing a user's current availability, allowing
stateless polling-based clients (e.g., CGI, PHP, JavaScript),
public message posting, and a variety of other HTTP tools.
Telnet access is in the early stages of development, and
exposes a minimal client interface via telnet.
Authentication
The server does not directly authenticate users, but relies
upon the modules to do so. This allows for authentication
modules to be written for PAM, LDAP, custom databases, and so
on.
Data Storage
All data that needs to be stored or retrieved within the server
is in XML. Each different type of data is within its own
namespace. This XML is handled by a special XML Database (XDB)
API, which actually performs the storage. A simple file-based
XDB is included in 1.0 to handle all namespaces, with MySQL and
LDAP APIs in development. Additional custom functionality can
be written and maintained via the XDB API to handle any
particular type of data.
Private Data
Each user/client has the ability to store and retrieve
independent XML data within its own namespace. This could be
used by client software to store preferences on the server. It
can also be used to store other information such as bookmarks,
notes, state, etc.
Clients / Libraries
A wide variety of clients and libraries are being continually
developed worldwide. Always check for the latest infomation on such
developments and locations of the clients mentioned below at
JabberCentral and jabber.org.
Windows
JabberIM is a typical contact list interface, designed with
ease of use and simplicity in mind. WinJab is a full-featured
client with a developer style interface. Jabba is an older
alternate client, which may not be up to date with the latest
features. Wijits are stripped down simplistic clients, with
extremely limited functionality. A JabberCOM component is also
available (used by JabberIM and WinJab) to ease the development
of Jabber functionality within Win32 development environments
(DevStudio, Delphi, Visual Basic).
Linux/Unix
Gabber is a Gnome GUI client in development and already has
nearly full functionality. Josh is a full featured system for
utilizing Jabber from the command line and within shell
scripts.
IRC
As mentioned above, the IRC server is available if enabled on
the server. Simply take any standard IRC client and connect to
the Jabber server on port 6667, then follow the instructions to
create an account or log in.
Libraries
Net::Jabber is a suite of full-featured Perl modules for
interacting with Jabber as a Client or Transport, available
from CPAN. PyJabber is a set of Python modules in development.
Various other development efforts exist for Java, C, and C++
libraries.
Web
If enabled, the Jabber HTTP server contains some early beta
functionality. This allows HTTP based stateless client
development.
Early Developments
The Macintosh development team is progressing on creating a
native Macintosh client, development mailing list at
http://mailman.jabber.org/pipermail/mac-dev and site at
http://macjlib.sourceforge.net. As mentioned above, a telnet
gateway is in development that will allow simple client access
via telnet, similiar to a MUD/MOO. An alternate-style interface
client is in development for UNIX and Windows, named jbulb.
This style client is designed to simply expressing the presence
of one individual and allow simple messaging, via a small bulb
graphic floating on the desktop. A variety of java clients are
in development... Jabber functionality is being integrated with
the Mozilla project, to enable Mozilla to send and receive
real-time streaming XML. This will be visible within Mozilla as
a standalone client, sidebar-based client, and other real-time
XML functionality.
Where can I get it, and how do I install it?
The server is written in C and has been developed on the GNU platform.
The sources have been tested and are known to operate on Linux (all
distributions), *BSD, Solaris 2.6 and newer (with GNU packages
installed), and Digital Unix.
There are two external required libraries, pth and adns. Pth is a
portable threading library written by Ralf S. Engleschall, available
from http://www.gnu.org/software/pth/. ADNS is an asychronous DNS
lookup library, written by Ian Jackson at
http://www.gnu.org/software/adns/.
After installing pth and adns, the server libraries will need to be
installed. The server sources are available at
http://download.jabber.org/dists/1.0/, with pre-built RPMs and DEBs
and other packages to follow soon. In order of installation, the
server packages are installed as libxode, libjabber, libetherx, and
jabber-transport. Then jabber-transport can be started as "jserver",
be sure to check your configuration if any difficulties are
encountered.
How can I use it?
The server sources are released under the Gnu Public License (GPL). It
is frequently thought that this restricts the *use* of the server,
which is completely false. The GPL restricts the redistribution of the
server sources, but the Jabber Server can be used for any purpose:
non-profit, commercial, internal, classified, whatever.
There are three popular categories of usages of the Jabber Server.
First, many companies are installing and using the server internally
as a way to reduce the amount of employee-employee conversations that
are leaving the company network via a third-party IM network. By using
the Jabber Server and the various services, employees are able to
upgrade to Jabber without loosing the connectivity with their friends
on the third-party networks and without running two clients on their
desktop.
The second popular category of usage is by ISPs and service providers,
as a way to instantly launch their own branded local IM service that
interoperates with other major networks.
The third usage of the Jabber Server is by portals and other sites,
services, and communities existing on the web. Often this includes a
custom client that is either integrated with the portal or existing
community tools, and also includes other new real-time streaming
features enabled by the Jabber architecture.
Where can I get help?
For development, technical, and server installation/operation
assistance please visit http://jabber.org/, send email to
info at jabber.org or bugs at jabber.org, or visit the development team in
#jabber on irc.openprojects.net.
There is also now a commercial entity available for consulting in
integrating Jabber and developing custom or branded clients and
services based on Jabber. More information can be found at
http://jabber.com/.
How can I help?
You want to help? Great! Jabber is developed by a friendly and diverse
team of individuals from all over the world. We welcome all newcomers
and are even willing to help you learn how to program (we've
"converted" quite a few individuals so far :) ). It's an exciting
project and there is lots to do! Some of the popular TODO items
include assistance with client development across all platforms and
environments, documentation and the Jabber.org web site (including
translation into languages other than English), server-side services
and features (bots, translators, news, interactive and real-time data
sources), progressing the language libraries like python, tcl, and any
other programming language, and much much more!
A Sincere Thanks
A warm and genuine thank you to everyone reading this announcement.
Two years of intense development have been invested into this project
by a large number of individuals across the world, and while we
realize that much more remains to be done, we are proud to have
reached this milestone and look forward to working with users and
developers alike in continuing to build and extend the Jabber
platform.
More information about the JDev
mailing list