move more links from Doc Project front page
[wiki.git] / doc / zephyr.mdwn
1 [[!meta title="Using Zephyr (a.k.a. Zephyr For Dummies)"]]
2
3 <!-- For information on the archaic way of using Zephyr, see TraditionalZephyr.-->
4
5 ## Introduction to Zephyr
6
7 Zephyr was a system designed to let system administrators send
8 important messages to users in an easily noticeable format. It was
9 meant to have a low volume of traffic and be used only for official
10 notices. This is obviously not what Zephyr is today. It can still be
11 used in the way it was intended: notice that you get official
12 zephyrgrams as you log in, with important information about Athena
13 services and planned outages. However, the most common usage is by
14 average users exchanging information about classes, how their days are
15 going, and talking on Zephyr classes and instances about everything
16 from the latest episode of Battlestar Galactica to the next 18.03
17 problem set. The usage of Zephyr has far exceeded original
18 expectations. Over time, people have also created programs that give
19 Zephyr a graphical interface, and programs that give zephyr a purely
20 textual interface, that can be used entirely within a ssh
21 terminal. Some of these zephyr clients have become so widely used that
22 there are users who do not know that there are other ways to send (and
23 receive) zephyrgrams. This wiki will cover the traditional commands,
24 typed at the athena% prompt, as well as the more common modern zephyr
25 client Barnowl.
26
27 The information in this wiki about Barnowl just barely touches the
28 surface.  More for in-depth functionality, visit the [Barnowl
29 wiki](https://barnowl.scripts.mit.edu:444/wiki).
30
31 ## Modern Zephyr
32
33 Today the majority of Zephyr users use the barnowl client.  There are
34 other clients as well (for example, Pidgin supports Zephyr).  The
35 following sections will go into detail about how to install, use, and
36 customize barnowl.
37
38 ### Other Clients
39
40 There are other clients besides Barnowl, however their use is not
41 nearly as widespread.  Some of these include:
42
43 * Owl (unmaintained, Barnowl evolved from this)
44 * vt / jervt
45 * zwgc (see TraditionalZephyr)
46 * Pidgin
47 * zephyr-mode for emacs
48
49 Using Barnowl is recommended, as it is better supported and more
50 documentation exists for it.
51
52 ### Using Barnowl
53
54 To start barnowl, run the command `add barnowl; barnowl` at the prompt
55 on any Athena machine or dialup, such as linerva.mit.edu.
56
57 The simplest use of Zephyr is to send personal zephyrs to other
58 users. To send a zephyr, type `:` to bring up a command line, and run
59 the command `zwrite USERNAME`. You can also start a `zwrite` command
60 by simply typing z.
61
62 You can then enter your message, and then enter a `.` on a line by
63 itself to finish the zephyr. By convention, zephyrs are usually
64 word-wrapped to 70-character lines or so; Pressing M-q (Alt-q, or
65 Escape then q) will word-wrap the text you've entered for you.
66
67 Once you've sent and received zephyrs, you can navigate the message
68 list with the arrow keys. Press `d` to mark a message as deleted, `u`
69 to undelete it, and `x` to expunge all messages that have been marked
70 as deleted.
71
72 Instead of entering a `zwrite` command manually, you can also select a
73 message in the message list with the arrow keys, and reply to it using
74 `r`, which will automatically set up an appropriate `zwrite` command.
75
76 For more documentation on the built-in commands and keybindings, you
77 can press h to bring up barnowl's built-in help screen. For help with
78 a specific command, bring up a command line with `:` and then type
79 `help COMMAND`.
80
81 ### Classes and Instances
82
83 Generally the most interesting discussion on Zephyr, however, happens
84 on so-called Zephyr <em>classes</em>. A class is a bit like a chat
85 room in other IM systems. Anyone can send a zephyr to a class, and
86 anyone who is subscribed to that class will receive it. There is no
87 security on classes -- anyone who knows the name of a class can
88 subscribe, and there is no way to determine who is subscribed to a
89 given class.
90
91 To subscribe to a class, use the subscribe command:
92
93     :subscribe CLASSNAME * *
94
95 To send a zephyr to a class, use the zwrite command with the -c option:
96
97     :zwrite -c CLASSNAME
98
99 Zephyrs to classes usually have an instance attached. An instance is a
100 short &ldquo;topic&rdquo; or &ldquo;subject&rdquo; that indicates the
101 context of a zephyr.  Different instances are often used to multiplex
102 multiple conversations on a high-traffic class. You can specify an
103 instance with the -i option to zwrite:
104
105     :zwrite -c CLASSNAME -i INSTANCE
106
107 A message without an instance specified will default to the instance
108 &ldquo;personal&rdquo;.
109
110 Some common classes include:
111
112 <strong>help</strong>:
113 > -c help is a class for asking (and answering) questions on virtually
114 > any topic imaginable. Be sure to use an instance (such as
115 > &ldquo;linux&rdquo;, &ldquo;barnowl&rdquo;, &ldquo;campus&rdquo;, or
116 > so on) when asking questions, since it's a fairly high-traffic
117 > class.
118
119 <strong>sipb</strong>:
120 > -c sipb is where most SIPB members hang out. It's a place for
121 > technical discussion, questions, support, and organizing SIPB events
122 > or projects. You should also always use an instance when sending to
123 > -c sipb.
124
125 <strong>Personal Classes</strong>:
126 > By convention, nearly every Zephyr user has a "personal" class that
127 > is the same as their username. How this class is used varies from
128 > person to person, but it's often a sort of mini-blog, a place to
129 > report what one is working on or up to, or ask friends questions, or
130 > just rant about something.
131
132 <strong>"un" Classes</strong>:
133 > Many people use "un" classes in addition to their personal class,
134 > for example `johndoe` might use `-c unjohndoe`.  Sometimes there are
135 > nested un-classes as well, such as `-c ununjohndoe` or `-c
136 > unununjohndoe`.  It is extremely rare to see anything more than
137 > three "un"s.  Un-classes are generally used for snarking about a
138 > conversation going on in the next class up (`-c unjohndoe` snarking
139 > about `-c johndoe`), or for more intense ranting.  The more "un"s,
140 > the more intense the snarking/ranting generally becomes.
141
142 ### Zephyr Slang
143
144 If you spend enough time on Zephyr, you'll begin noticing some strange
145 phrases and words being thrown around.  Some of these include:
146
147 <strong>i,i foo</strong>:
148 > picked up from CMU zephyrland and means "I have no point here, I
149 > just like saying:".  Sometimes people simply use quotes: `"foo"`.
150
151 <strong>mix</strong>:
152 > If somebody accidentally sends a Zephyr to the wrong class or
153 > person, they will send another Zephyr to that wrong/class person
154 > simply saying "mix".  This basically just means, "oops, sorry, I
155 > didn't mean to send that Zephyr here".  You might also see "-i mix",
156 > which is the same thing, only with instances.
157
158 <strong>.d</strong>:
159 > You may see an instance change from `-i foo` to `-i foo.d`.  This
160 > indicates a deviation or tangent from the the original topic.
161
162 <strong>starking</strong>:
163 > Answering a question or replying to a topic to a topic several hours
164 > (or days, occasionally) later. The term originates from Greg Stark,
165 > who would often reply to zephyrs hours or occasionally days later
166 > without seeing if anyone had answered yet, or worse, if the instance
167 > had moved on to an entirely different topic.
168
169 <strong>ttants</strong>:
170 >  Literally, "Things That Are Not The Same".
171
172 <strong>prnf</strong>:
173 >  Literally, "Pseudo-Random Neuron Firings".
174
175 There are many other acronyms that are used; if you don't know what it
176 means, try using the `whats foo` command at an Athena terminal. If you
177 don't have the command, run `add sipb` first.
178
179 ### Startup
180
181 There might be some options that you want to be consistent from
182 session to session; you don't want to have to set the same variables
183 each time.  You can fix this by adding the commands to your "startup"
184 file, for example, `.owl/startup`.  This can be done from within
185 Barnowl, by using the `startup` command:
186
187     :startup set foo bar
188
189 Where `foo` is the variable you want to set, and `bar` is the value.
190 You do not necessarily have to use the `set` command, either, any
191 command you can type in Barnowl can be added to the startup file.
192
193 ### Logging
194
195 It is handy to be able to log your conversations so you can refer back
196 to them later.  To log classes, for example:
197
198     :set classlogging on
199
200 And to log personals:
201
202     :set logging on
203
204 This will log to the "zlog" directory in your locker. You probably
205 don't want people to see what classes you're on or what people you
206 talk to, so you can run the Athena command
207
208     mkdir -p ~/zlog
209     fs sa ~/zlog system:anyuser none
210
211 to make this directory completely hidden.
212
213 ### Colors
214
215 By default, there are seven colors you may use in the terminal: red,
216 green, yellow, blue, magenta, cyan, and white.  In order to use color
217 in Zephyr, you can use the following notation: `@(@color(red)This is
218 some red text))`
219
220 Colors may vary from machine to machine, as different terminal
221 profiles may have different shades of the seven colors.
222
223 ### Filters
224
225 Some people like to customize their Barnowl by color-coding classes.
226 This makes it easier to tell different classes apart (and minimize
227 mixing).  Barnowl has some already existing filters, for example,
228 `personal` (for incoming personals), `out` (for outgoing personals),
229 and `ping` (for pings).  To assign a color to a filter, add the
230 following to your startup file:
231
232     filter personal -c green
233
234 What if you want to color-code your class, or a friends class?  You
235 can create and color filters with:
236
237     filter johndoe class johndoe
238     filter johndoe -c blue
239
240 You can update your settings and filters without restarting your
241 Barnowl session by:
242
243     :source ~/path/to/config/file
244
245 You can see all the filters by using `:show filters`, and narrow to a
246 particular filter with, e.g., `:view personal`. You can use `:view
247 all` or the keyboard shortcut `V` to see all messages again.
248
249 For more detailed information on filters, visit
250 https://barnowl.scripts.mit.edu:444/wiki/Filters.
251
252 ## Running Barnowl in Screen
253
254 It can be very annoying to have to close Barnowl when you turn off
255 your computer.  During the time your computer is off, you're missing
256 many (possibly important) zephyrs.  It can be aggravating to be using
257 zephyr via an unreliable network connection.  It can also be
258 frustrating if you leave your computer on with Zephyr up, but go to a
259 different computer and want to check your zephyrs - how do you do
260 this?  These problems can be solved with the magic of screen.
261
262 A more detailed and extensive explanation of this can be found at
263 http://web.mit.edu/kchen/bin/owl-screen.txt.
264
265 ### Screen
266
267 You should find a computer or server on which to run your screen
268 session(s) that is up all the time, for example, linerva.mit.edu.
269 Screen allows you to run programs inside of it on one computer, and to
270 access those same programs from other computers via ssh.
271
272 ### Quickstart
273
274 1.  Pick a machine to host your screen session on.
275     If you don't know of any options, linux.mit.edu (Linerva) is a good choice.
276 2.  ssh to that machine.
277 3.  Run "add kchen".  You may want to add this to your `~/.environment` file.
278 4.  Run "owl-screen"
279
280 Your screen session is now ready.  Once you start the screen session,
281 you'll need to get renewable Kerberos tickets in order to run it for
282 any extended period of time.  Press C-a C-c to open a new screen
283 window, and run
284
285     kinit -l7d -54
286
287 (length 7 days, both Kerberos 5 and Kerberos 4). Press C-a 0 to return
288 back to your Barnowl window.
289
290 When you're ready to log out, press C-a d to "detach" your screen, and
291 then type `exit` or `logout` to log out.  Later, when you want to
292 "reattach" your screen, ssh to the machine again, and run `screen -r`.
293
294 ### Kerberos Tickets and AFS Tokens
295
296 In order to keep your screen session authenticated, you'll need to
297 keep your Kerberos tickets and AFS tokens up-to-date.  There is a
298 script that will do this for you, located in the `kchen` locker.
299 After you ssh into the machine that hosts your screen sessions, run
300 the following commands:
301
302     add kchen
303     owl-screen
304     C-a C-c
305     kinit -l1d -r7d -54
306
307 ### Attaching and Detaching Sessions
308
309 To detach a screen session (for example, if you want to log out),
310 press C-a d (Control-A, then D).  Screen continues to run, but is no
311 longer active.
312
313 To reattach a screen session, possibly detaching from wherever it's
314 currently attached, run:
315
316     screen -dr
317
318 `screen` can do a whole lot more.  To find out about it, see
319 [UsingScreen](https://sipb-www.scripts.mit.edu:444/doc/wiki/UsingScreen).