Intro to Zephyr

zephyr?

Zephyr is a loosely structured broadcast message system. People use zephyr to:

Public messages are tagged with an instance. In theory, the instance indicates the subject of the message. In general use, sometimes it does and sometimes not.

This document is about how to get started using zephyr via emacs. More about local zephyr usage, culture and other things can be found in the FZQ: frequently zephyred questions, which you might want to look over after this document.

When correctly configured, emacs zephyr mode provides a quicker and more robust interface to zephyr than the standard Athena tools (i.e. don't bother to follow the link. :-) This is good and bad. It's good because it makes zephyr easier to use. It's bad because it makes zephyr easier to use.

Getting started

The easiest way to get started with zephyr mode in emacs is to load the library "zephyr-setup". This library can be found in /usr/local/lib/xemacs/lisp/local-pkgs/sample-setups.
You would add this line to your .emacs file:

(load "sample-setups/zephyr-setup")

The "zephyr-setup" file defines 3 types of zephyr-windows under XEmacs. The setups defined also work under gnu-emacs version 18, although they won't show up in frames (emacspeak for "X windows") of their own. The 3 functions defined are:

zephyr-personal:
Creates a zephyr buffer that receives only personal zgrams. It beeps whenever a zgram comes in, and under xemacs, it deiconifies and raises itself too.
zephyr-nonpersonal:
Creates a buffer receiving everything but personal zgrams. It doesn't beep, deiconify, or raise itself when a zgram comes in. Good if you want to be subscribed to * (that is, subscribe to every possible instance), but don't want to bother reading it unless you have a moment to spare. It is pretty easy to customize this mode to only show zephyrs from a small set of instances using filtering. More on this later.
zephyr-all:
Creates a single buffer receiving everything out there (basically a combination of "personal" and "nonpersonal".) Beeps only when personal zgrams come in. Never deiconifies itself.

You can copy this file to customize things like where the windows show up on your screen, how big they are and what fonts they use. Or you can just call one or more of these functions as-is: either

M-x zephyr-personal
M-x zephyr-nonpersonal
or add these lines to your .emacs file:
(zephyr-personal)
(zephyr-nonpersonal)

What you'll see

All of the windows that zephyr mode creates have the same basic interface. We'll use the zephyr-nonpersonal window as an example.

The contents of the window are split into two kinds of text: messages and message "headers". In this case, a message "header" is a specification of either where a particular message came from, or where a particular new message should go to. For example, after firing up zephyr mode, you might see the following appear in the zephyr-nonpersonal window:

bovik(graffiti)::
HI there ALL, I'm a graffiti posting FREAK

The first line of this text contains the header "bovik(graffiti)" and the separator string "::". The "::" separates the header from the message itself, which is "HI there ALL, I'm a graffiti posting FREAK"

The header, in turn, specifies two things. First, the userid of the person who sent the message, which in this case is "bovik". Second, the instance to which the message was posted, which in this case is "graffiti".

How not to waste time

By default, the zephyr-nonpersonal window displays all public zephyrs sent by anyone to any instance. Some people like this and use zephyr in this mode most of the time. To ignore all instances, you can type the following:

M-x zephyr-ignore-instance-<Tab> <return>
* <return>
Then, add back the instances that you are interested in using, e.g. "help":
M-x zephyr-listen-instance-<Tab> <return>
help <return>

More advanced users can learn how to manipulate the instance filters using elisp. Read the code in "zephyr-setup.el" for how to do that.

Sending a zephyr

To send a zephyr, you type "C-c C-s". You will be prompted for a destination, which is specified using the same form as the destination in the message header above. So, to send a message to graffiti, you type:

C-c C-s (graffiti) <return>
Zephyr mode will insert
(graffiti)::
into your buffer. Type the message underneath the header line, and type "C-j" to send. Note: when prompted for the message destination, you can use emacs completion to send to any destination that has appeared in the header of any message that you have received. You can also cycle back through recent destinations by using the M-n and M-p keys. This makes it easy to respond quickly to the instance of the most recently received message. (If you prefer, clicking the right mouse button in the buffer will also bring up a menu of commonly used zephyr commands.)

To send a private message, you do this:

C-c C-s bovik <return>
Note the lack of parentheses! You can also send a private message with an instance tag:
C-c C-s bovik(graffiti) <return>
This can be useful in some circumstances which are beyond the scope of this document.

Instance use

Within SCS, instances are used in a fairly unstructured way. SCS Zephyr is pretty much a "stream" of semi-related messages. The instances are little more than separators, and do not always correlate with the content of the discussion. Sometimes the content of a message is contained more in its instance than in its body:

bovik(dinner)::
?

Local conventions

There are a few standard conventions with regard to instance use within SCS zephyr.

(chat.*)
for discussion, e.g. (chat.music) for talking about music
(<instance>.d)
for discussions that are tangential to whatever was being discussed on <instance>. Tends to be applied recursively to obtain infinitely long chains of .d's
(*.bait)
this is like ".d", except what it really means is that the (bored) sender is issuing purposely inflamatory material in a pathetic attempt for attention, and to start a flame war. Zephyr flame wars tend to be short, personal, obscene, and totally meaningless. Never take zephyr flames personally, never take undue offense.
(*.tangent)
for really tangential stuff
(help.*)
for help. E.g. (help.linux) for linux help.
(facilities.announce)
not for you. Consider it read-only.
(facilities.discussion)
when you hope that facilities might listen in on the discussion (you should use Official Channels, such as the phone, if you want more than "hope" and "might".)
(sddd)
for things that do [suck d. d. d.]
(<place-name>)
for praising people for non-zephyr-related things.
(graffiti.*)
for random postings, see below
(dinner), (movies)
obvious. also (food) and (lunch).
(test)
also obvious.
(newsbites)
for bits of news articles, with a URL to the rest (at cnn.com, news.bbc.co.uk, or some such.)
Note: dkindred has written software that logs all zephyrs posted to all instances except graffiti. (Graffiti is only kept for a week.) This log is searchable from the web page at http://zarchive.srv.cs.cmu.edu. This means that you can look up old discussions, e.g. about banks or cellphones if you're trying to make an opinionated (not to say informed) decision. More importantly, this also means that if you want to say something that you'd rather not be recorded for posterity --- or your advisor, or whoever --- to read later, use the graffiti instance.
Written by psu, sprite, et al.
Bridget Spitznagel
Last modified: Fri Aug 21 19:12:39 EDT 1998