[standards-jig] Protocol support in the upcoming jabberd 2.0 server

Robert Norris rob at cataclysm.cx
Thu Oct 10 11:34:39 UTC 2002

[ crossposted to jabberd at js.o, but replies to standards-jig please ]

I'm not sure of what the "official" relationship between the JSF and the
Jabberd project is, but I think its fair to say that most see it as the
reference implementation for the protocols. As such, its important to
get the mix of supported protocols correct, because support in jabberd
is enough to make or break a protocol.

I'm currently in the process of determining the IQ namespaces that
should be supported in the upcoming jabberd 2.0 release. I've gone
through the protocol support that exists in 1.4.2, as well as new
namespaces that have appeared since, and I've put together this summary
of the various protocol pieces, and what I think.

I'd appreciate any and all feedback you might have on this. If I've
missed something, please reply and let me/us know. If you have a comment
about support of some other part of the protocol (message/presence), let
the list know.

The following namespaces are supported by 1.4.2.

jabber:iq:admin (includes jabber:mod_admin:who) (not documented)

  A mixed bag of administrative functions. It has options "who",
  "monitor", "user" and "config". mod_admin implements "who" (returns a
  list of online sessions), partially implements "config" (retrieves the
  current server config), and has stubs for "monitor" and "user".

  (mod_admin als handles admin messages (ie messages to the SM) - these
  will stay).

  I'd prefer to drop this namespace in favour of a more "correct" approach
  using browse/disco for user browsing, and x:data and JEP-0050 for
  configuration (maybe for 2.2).

jabber:iq:agents (http://www.jabber.org/protocol/agents.html)

  Used to get information about the services offered by the SM. This was
  the precursor to browse.

  It's still used by many clients, and its part of the standard
  protocol, so it stays.

jabber:iq:browse (http://www.jabber.org/jeps/jep-0011.html)

  Used to browse services (like jabber:iq:agents) and users on the
  Service browsing is probably required, and user browsing is a useful
  feature, however I'm not sure which is the best choice given the
  current debate between browse and disco.

  I'd like to not to implement this until either browse or disco (or
  something else) are ratified by the Council, but I may not be able to
  get away with that (especially since JEP-0011 is active).

jabber:iq:filter (misc docs on oid.jabber.org)

  Providers powerful message filtering options based on rules set by the

  The 1.4 implementation is flaky, and there's no definitive
  documentation. I don't want to implement something this big without a
  real document ratified by the council, but there are clients out there
  that support it, so I'll go either way.

  It should be noted that mod_filter makes use of jabber:x:envelope.
  JEP-0033 is the obvious choice to replace this, but it hasn't been
  ratified either.

jabber:iq:last (http://www.jabber.org/jeps/jep-0012.html)

  Primarily concerned with finding out the last time the user did
  something. This is usually either the last time they interacted with
  the system, or the last time they logged out.

  Although the protocol is informational, the 1.4 implementation is
  trivial and benign, so it stays.

jabber:iq:register (http://www.jabber.org/protocol/registration.html)

  Used for self-registration of new users.

  I personally hate it, but its part of the standard protocol, and its
  widely used, so it stays.

jabber:iq:roster (http://www.jabber.org/protocol/rosters.html)

  Used for managing the user roster (lists of JIDs that we send or
  receive presence to or from, and associated information).

  Of course its supported :)

jabber:iq:time (http://www.jabber.org/protocol/time.html)

  Used to find the current time on the server.

  In the standard protocol, and trivial to implement, so it stays.

jabber:iq:private (http://www.jabber.org/jeps/jep-0049.html)

  Used to store arbitrary per-user XML on the server (such as client
  preferences, bookmarks, etc).

  In fairly wide use already, with a new informational JEP about its
  use. Trivial to implement, so it will stay.

vcard-temp (http://www.jabber.org/protocol/vcard-xml/)

  A storage format for a variety of information about a user.

  The 1.4.2 server also allows for automatically populating a JUD.
  If we chose not to implement that feature, then support for this
  namespace is simply get or set to the database. At the very least,
  that will be supported.

The 1.4.2 server also allows for public XML storage - an IQ set in any
unknown namespace will cause the enclosing data to be stored. A get in
that namespace (by any user) for the user will return the stored data.
This feature is undocumented, but is the exact same semantics as

I'd be interested to hear if this feature has widespread use.

There's also this IQ namespace which possibly should be implemented:

jabber:iq:privacy (http://www.jabber.org/jeps/jep-0016.html)

  Implements server-side black/white lists.

  This implements some of things that are possible with
  jabber:iq:filter, arguably in a more rounded way. I imagine that there
  will be quite a bit of demand for this, but it has not yet been
  ratified by the Council.


Robert Norris                                       GPG: 1024D/FC18E6C2
Email+Jabber: rob at cataclysm.cx                Web: http://cataclysm.cx/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.jabber.org/pipermail/standards/attachments/20021010/0e0e2d73/attachment.sig>

More information about the Standards mailing list