ABOUT THE ZEPHYR FUNCTIONALITY IN EVERYBUDDY

Sourav K. Mandal <Sourav.Mandal@ikaran.com>
Thu Feb 01 2001


SUMMARY

Zephyr is a UDP, server-mediated messaging system developed by MIT for use on
its Athena network; it is now used by other networks as well.  Zephyr's
strength is providing low-overhead messaging on high-speed networks.  The 
system also supports authenticated messaging using MIT's Kerberos, if the 
functionality is enabled in clients -- this is the usual deployment.

This document provides information about Everybuddy's interface with this 
system.


INSTALLATION

* The Zephyr library is included in the Everybuddy source
  distribution.

* Use "configure --enable-zephyr" to include Zephyr support.

* To enable KerberosIV in Zephyr:
- Obtain Kerberos (libs and devel); KerberosV includes KerberosIV compatibility
  support.
- Use "--with-krb4-dir=dir" to specify top dir of KerberosIV installation.
- The configure script seeks KerberosIV support by default, providing that 
  it knows the correct location (by default or with the specification of the
  directory).  Use "--disable-krb4" to forcibly disable KerberosIV in Zephyr.

* Hesiod is not currently used.  In the future, however, if there is a demand
  for a feature to retrieve the personal info for buddies, Hesiod may be used.


TODO

* Allow user to specify subscriptions.

* AIM-style multi-chat for wildcard Zephyr subscriptions.

* Translate between HTML and Zephyr formatting codes, e.g. "<I>text</I>" ->
  "@i[text]", etc.  The routines in which to implement this already exist
  ("zephyr_msg_decode", "zephyr_msg_encode").
  
* Make the user info HTML layout better with use of tables, if and when 
  Everybuddy moves over to the standard GtkHTML.


CAVEATS

* The Zephyr system is based on UDP and is server, and therefore is optimal
  for high-speed networks such as in a university.  Zephyr can be flaky on slow
  or high-latency connections, such as modem dialup.

* For Zephyr buddies who do not net/realm announce, the client must 
  continuously check the status of buddies, exacerbating performance problems 
  on slow connections.  This is ameliorated greatly in this implementation by 
  the use of asynchronous user location requests in Zephyr.

* One must still have a running Zephyr HM (host manager) on the client 
  machines, as the Zephyr module does not implement the HM functionality.
  It does, however, replace zwgc and zwrite/xzwrite/znol/xzewd.

* The module flushes all locations when logging in and logging off by default, 
  to prevent zombie location entries in the Zephyr server databases.  This 
  can cause annoying problems with forced invisibility if you use Zephyr in 
  multiple places at once, and it can be deactivated in the preferences.

* When specifying Zephyr accounts for contacts, the "@<realm>" must be
  appended, such as "mike@KERBEROS.REALM.ORG" instead of just "mike".  This 
  allows contacts to have accounts in multiple realms.

* While the module is designed to work with Kerberos, it should work without
  it, as determined at compile time.  This is yet to be tested thoroughly.


AUTHOR(S)

* Core implementation

Sourav K. Mandal <Sourav.Mandal@ikaran.com>
http://www.ikaran.com/Sourav.Mandal/

* Advice concerning asynchronous locating

Zachary M. Loafman <zml@zml.net>
http://zml.net/

