added info about mindterm ssh
[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 You will need access to an Athena machine to run barnowl.  The easiest
54 way to do this would be to SSH into linux.mit.edu.
55
56 On a Debian-based linux distro, open up a terminal and type `ssh
57 <username>@linux.mit.edu`.
58
59 On Windows, download a SSH client (such as
60 [PuTTY](http://chiark.greenend.org.uk/~sgtatham/putty/download.html); you will need to [change PuTTY’s character set](http://utf-8.scripts.mit.edu/wiki/PuTTY) to UTF-8 to prevent occasional display glitches.)
61 and install it.  Once you've opened it, type `<username>@linux.mit.edu`
62 into the prompt and hit enter.
63
64 On a Mac, open Terminal from the Utilities Folder in Applications. Type
65 `kinit <username>@ATHENA.MIT.EDU && ssh -K
66 <username>@linux.mit.edu` If this command fails (saying -K is
67 invalid), then just do `ssh <username>@linux.mit.edu`.
68
69 Alternatively, use a Java applet called Mindterm SSH inside any web browser. Use either [http://athena.dialup.mit.edu/ssh.html](one from MIT) or [http://www.netspace.org/ssh/](one from The Netscape Foundation Inc.). For the MIT one, the server is fixed at `athena.mit.edu`, which is  so log in and then ssh again, this time inside athena.dialup.mit.edu, to linux.mit.edu if you want to follow the rest of the instructions exactly (otherwise, you shouldn't need to ssh to linux.mit.edu):
70
71         athena.dialup.mit.edu login: <username>
72         <username>@athena.dialup.mit.edu's password: <password>
73         (wait a while)
74         <username>@<some-server>:~$ ssh <username>@linux.mit.edu
75         <username>@<other-server>:~$
76         
77 For the Netscape one, hit `Settings > New Server...`, then enter the following and hit connect:
78
79         Server: linux.mit.edu
80         Username:<username>
81         Authentication: kbd-interact            
82
83 (In all these cases, don't include the angle brackets, just replace
84 <username> with your MIT username).  You will then be prompted for your
85 password.  Enter it, and then carry on with running barnowl!
86
87 To start barnowl, run the command `add barnowl; barnowl` at the prompt
88 on any Athena machine or dialup, such as linux.mit.edu.
89
90 The simplest use of Zephyr is to send personal zephyrs to other
91 users. To send a zephyr, type `:` to bring up a command line, and run
92 the command `zwrite USERNAME`. You can also start a `zwrite` command
93 by simply typing z.
94
95 You can then enter your message, and then enter a `.` on a line by
96 itself to finish the zephyr. By convention, zephyrs are usually
97 word-wrapped to 70 characters or so per line; barnowl will wrap at about
98 10 characters less than the width of your terminal window, so if you
99 have a large window, you may need to press M-q (Alt-q, or Escape then q)
100 to word-wrap the current paragraph to a smaller width.
101
102 Once you've sent and received zephyrs, you can navigate the message
103 list with the arrow keys. Press `d` to mark a message as deleted, `u`
104 to undelete it, and `x` to expunge all messages that have been marked
105 as deleted.
106
107 Instead of entering a `zwrite` command manually, you can also select a
108 message in the message list with the arrow keys, and reply to it using
109 `r`, which will automatically set up an appropriate `zwrite` command.
110
111 For more documentation on the built-in commands and keybindings, you
112 can press h to bring up barnowl's built-in help screen. For help with
113 a specific command, bring up a command line with `:` and then type
114 `help COMMAND`.
115
116 ### Classes and Instances
117
118 Generally the most interesting discussion on Zephyr, however, happens
119 on so-called Zephyr <em>classes</em>. A class is a bit like a chat
120 room in other IM systems. Anyone can send a zephyr to a class, and
121 anyone who is subscribed to that class will receive it. There is no
122 security on classes -- anyone who knows the name of a class can
123 subscribe, and there is no way to determine who is subscribed to a
124 given class.
125
126 To subscribe to a class, use the subscribe command:
127
128     :subscribe CLASSNAME * * 
129
130 To send a zephyr to a class, use the zwrite command with the -c option:
131
132     :zwrite -c CLASSNAME
133
134 Zephyrs to classes usually have an instance attached. An instance is a
135 short &ldquo;topic&rdquo; or &ldquo;subject&rdquo; that indicates the
136 context of a zephyr.  Different instances are often used to multiplex
137 multiple conversations on a high-traffic class. You can specify an
138 instance with the -i option to zwrite:
139
140     :zwrite -c CLASSNAME -i INSTANCE
141
142 A message without an instance specified will default to the instance
143 &ldquo;personal&rdquo;.
144
145 Some common classes include:
146
147 <strong>help</strong>:
148 > -c help is a class for asking (and answering) questions on virtually
149 > any topic imaginable. Be sure to use an instance (such as
150 > &ldquo;linux&rdquo;, &ldquo;barnowl&rdquo;, &ldquo;campus&rdquo;, or
151 > so on) when asking questions, since it's a fairly high-traffic
152 > class.
153
154 <strong>sipb</strong>:
155 > -c sipb is where most SIPB members hang out. It's a place for
156 > technical discussion, questions, support, and organizing SIPB events
157 > or projects. You should also always use an instance when sending to
158 > -c sipb.
159
160 <strong>Personal Classes</strong>:
161 > By convention, nearly every Zephyr user has a "personal" class that
162 > is the same as their username. How this class is used varies from
163 > person to person, but it's often a sort of mini-blog, a place to
164 > report what one is working on or up to, or ask friends questions, or
165 > just rant about something.
166
167 ### Zephyr Slang
168
169 If you spend enough time on Zephyr, you'll begin noticing some strange
170 phrases and words being thrown around.  Some of these include:
171
172 <strong>i,i foo</strong>:
173 > picked up from CMU zephyrland and means "I have no point here, I
174 > just like saying:".  Sometimes people simply use quotes: `"foo"`.
175
176 <strong>mix</strong>:
177 > If somebody accidentally sends a Zephyr to the wrong class or
178 > person, they will send another Zephyr to that wrong/class person
179 > simply saying "mix".  This basically just means, "oops, sorry, I
180 > didn't mean to send that Zephyr here".  You might also see "-i mix",
181 > which is the same thing, only with instances.
182
183 <strong>.d</strong>:
184 > You may see an instance change from `-i foo` to `-i foo.d`.  This
185 > indicates a deviation or tangent from the the original topic.
186
187 <strong>starking</strong>:
188 > Answering a question or replying to a topic to a topic several hours
189 > (or days, occasionally) later. The term originates from Greg Stark,
190 > who would often reply to zephyrs hours or occasionally days later
191 > without seeing if anyone had answered yet, or worse, if the instance
192 > had moved on to an entirely different topic.
193
194 <strong>ttants</strong>:
195 >  Literally, "Things That Are Not The Same".
196
197 <strong>prnf</strong>:
198 >  Literally, "Pseudo-Random Neuron Firings".
199
200 There are many other acronyms that are used; if you don't know what it
201 means, try using the `whats foo` command at an Athena terminal. If you
202 don't have the command, run `add sipb` first.
203
204 ### Zephyr Etiquette
205
206 There are rules that people tend to use on Zephyr.  These include:
207
208 Good grammar, spelling, and punctuation.  Not everybody uses
209 capitalization, but they will still use good English.  Please do not say
210 things such as "hey wut r u up to???".  It makes you look like an idiot.
211 Really.
212
213 You don't need multiple question marks or exclamation points.  Usually.
214
215 There are a few abbreviations people use, such as YMMV (Your Mileage May
216 Vary) or IIRC (If I Remember Correctly), as well as some nerdier ones
217 like DTRT (Do The Right Thing, in reference to
218 [ The Rise of "Worse Is
219 Better"](http://www.jwz.org/doc/worse-is-better.html)).  Try running `add sipb; whats dtrt` to look up an
220 abbreviation.  Common abbreviations that you might find on AIM, however,
221 are not often used.  People tend to look down upon "lol", "rofl", and
222 such.
223
224 Personal classes are by convention considered a little more private than
225 non-personal (public) classes. Although most people don't mind people
226 they've met subscribing to their personal class and lurking, it's poor
227 form to talk loudly on the personal class of someone you don't know.
228
229 ### Startup
230
231 There might be some options that you want to be consistent from
232 session to session; you don't want to have to set the same variables
233 each time.  You can fix this by adding the commands to your "startup"
234 file, for example, `.owl/startup`.  This can be done from within
235 Barnowl, by using the `startup` command:
236
237     :startup set foo bar
238
239 Where `foo` is the variable you want to set, and `bar` is the value.
240 You do not necessarily have to use the `set` command, either, any
241 command you can type in Barnowl can be added to the startup file.
242
243 ### Logging
244
245 It is handy to be able to log your conversations so you can refer back
246 to them later.  To log classes, for example:
247
248     :set classlogging on
249
250 And to log personals:
251
252     :set logging on
253
254 This will log to the "zlog" directory in your locker. You probably
255 don't want people to see what classes you're on or what people you
256 talk to, so you can run the Athena commands
257
258     mkdir -p ~/zlog
259     fs sa ~/zlog system:anyuser none
260     mkdir -p ~/zlog/people
261     mkdir -p ~/zlog/class
262
263 to create the necessary directories and make them completely hidden.
264
265 ### Colors
266
267 By default, there are seven colors you may use in the terminal: red,
268 green, yellow, blue, magenta, cyan, and white.  In order to use color
269 in Zephyr, you can use the following notation: `@(@color(red)This is
270 some red text)`
271
272 Colors may vary from machine to machine, as different terminal
273 profiles may have different shades of the seven colors.
274
275 ### Filters
276
277 Some people like to customize their Barnowl by color-coding classes.
278 This makes it easier to tell different classes apart (and minimize
279 mixing).  Barnowl has some already existing filters, for example,
280 `personal` (for incoming personals), `out` (for outgoing personals),
281 and `ping` (for pings).  To assign a color to a filter, add the
282 following to your startup file:
283
284     filter personal -c green
285
286 What if you want to color-code your class, or a friends class?  You
287 can create and color filters with:
288
289     filter johndoe class johndoe
290     filter johndoe -c blue
291
292 You can update your settings and filters without restarting your
293 Barnowl session by:
294
295     :source ~/path/to/config/file
296
297 You can see all the filters by using `:show filters`, and narrow to a
298 particular filter with, e.g., `:view personal`. You can use `:view
299 all` or the keyboard shortcut `V` to see all messages again.
300
301 For more detailed information on filters, visit
302 [https://barnowl.scripts.mit.edu:444/wiki/Filters](https://barnowl.scripts.mit.edu:444/wiki/Filters).
303
304 ## Running Barnowl in Screen
305
306 It can be very annoying to have to close Barnowl when you turn off
307 your computer.  During the time your computer is off, you're missing
308 many (possibly important) zephyrs.  It can be aggravating to be using
309 zephyr via an unreliable network connection.  It can also be
310 frustrating if you leave your computer on with Zephyr up, but go to a
311 different computer and want to check your zephyrs - how do you do
312 this?  These problems can be solved with the magic of screen.
313
314 A more detailed and extensive explanation of this can be found at
315 [http://web.mit.edu/kchen/arch/common/bin/owl-screen.txt](http://web.mit.edu/kchen/arch/common/bin/owl-screen.txt). Basic commands are [Ctrl-a] followed by [c] to open a new window (like a tab), [Ctrl-a][w] to see a list of open windows, and [Ctrl-a] followed by a number to go to that window.
316
317 Do note that running `owl-screen` as apposed to just runnning `screen` and then a barnowl instance provides niceties such as reminders to renew your tickets (the process `/mit/kchen/arch/i386_rhel4/bin/cont-renew-notify`). Also, Barnowl will always be located on the `0` tab of an `owl-screen` instance, so [Ctrl-a][0] will always take you back to Barnowl.
318
319 ### Screen
320
321 You should find a computer or server on which to run your screen
322 session(s) that is up all the time, for example, linux.mit.edu.
323 Screen allows you to run programs inside of it on one computer, and to
324 access those same programs from other computers via ssh.
325
326 ### Quickstart
327
328 1.  Pick a machine to host your screen session on.
329     If you don't know of any options, linux.mit.edu (Linerva) is a good choice.
330 2.  ssh to that machine.
331 3.  Run "add kchen".  You may want to add this to your `~/.environment` file.
332 4.  Run "owl-screen"
333
334 Your screen session is now ready.  Once you start the screen session,
335 you'll need to get renewable Kerberos tickets in order to run it for
336 any extended period of time.  Press C-a C-c to open a new screen
337 window, and run
338
339     kinit -l7d -54
340
341 (length 7 days, both Kerberos 5 and Kerberos 4). Press C-a 0 to return
342 back to your Barnowl window.
343
344 When you're ready to log out, press C-a d to "detach" your screen, and
345 then type `exit` or `logout` to log out.  Later, when you want to
346 "reattach" your screen, ssh to the machine again, and run `screen -r`.
347
348 ### Kerberos Tickets and AFS Tokens
349
350 In order to keep your screen session authenticated, you'll need to
351 keep your Kerberos tickets and AFS tokens up-to-date.  There is a
352 script that will do this for you, located in the `kchen` locker.
353 After you ssh into the machine that hosts your screen sessions, run
354 the following commands:
355
356     add kchen
357     owl-screen
358     C-a C-c
359     kinit -l1d -r7d -54
360
361 ### Attaching and Detaching Sessions
362
363 To detach a screen session (for example, if you want to log out),
364 press C-a d (Control-A, then D).  Screen continues to run, but is no
365 longer active.
366
367 To reattach a screen session, possibly detaching from wherever it's
368 currently attached, run:
369
370     screen -dr
371
372 `screen` can do a whole lot more.  To find out about it, see
373 [UsingScreen](https://sipb-www.scripts.mit.edu:444/doc/wiki/UsingScreen).
374
375 ### Interaction with Traditional Zephyr
376
377 The default athena startup scripts launch zwgc on login. If you are
378 subscribed to many classes and use Zephyr as many do today, zwgc's
379 behavior is not very desirable. To disable zwgc startup, add:
380
381     setenv ZEPHYR_CLIENT false
382
383 to your `~/.environment` file if you use `tcsh` or
384
385     ZEPHYR_CLIENT=false
386
387 to your `~/.bash_environment` if you use `bash`. This will cause your
388 shell to launch the `false` executable instead of zwgc which does
389 nothing.