c9ebaac5c22d24f028f2e75d077b7c10011a5a01
[wiki.git] / doc / UsingZephyr
1 = 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 important messages to users in an easily noticeable format. It was meant to have a low volume of traffic and be used only for official notices. This is obviously not what Zephyr is today. It can still be used in the way it was intended: notice that you get official zephyrgrams as you log in, with important information about Athena services and planned outages. However, the most common usage is by average users exchanging information about classes, how their days are going, and talking on Zephyr classes and instances about everything from the latest episode of Battlestar Galactica to the next 18.03 problem set. The usage of Zephyr has far exceeded original expectations. Over time, people have also created programs that give Zephyr a graphical interface, and programs that give zephyr a purely textual interface, that can be used entirely within a ssh terminal. Some of these zephyr clients have become so widely used that there are users who do not know that there are other ways to send (and receive) zephyrgrams. This wiki will cover the traditional commands, typed at the athena% prompt, as well as the more common modern zephyr client Barnowl.
8
9 The information in this wiki about Barnowl just barely touches the surface.  More for in-depth functionality, visit the Barnowl wiki at https://barnowl.scripts.mit.edu:444/wiki.
10
11 == Modern Zephyr ==
12
13 Today the majority of Zephyr users use the barnowl client.  There are other clients as well (for example, Pidgin supports Zephyr).  The following sections will go into detail about how to install, use, and customize barnowl.
14
15 === Other Clients ===
16
17 There are other clients besides Barnowl, however their use is not nearly as widespread.  Some of these include:
18
19 * Owl (unmaintained, Barnowl evolved from this)[[BR]]
20 * vt / jervt[[BR]]
21 * zwgc (see TraditionalZephyr)[[BR]]
22 * Pidgin[[BR]]
23 * zephyr-mode for emacs[[BR]]
24
25 Using Barnowl is recommended, as it is better supported and more documentation exists for it.
26
27 === Using Barnowl ===
28
29 You will need access to an Athena machine to run barnowl.  The easiest way to do this would be to SSH into linerva.mit.edu.  On a Debian-based linux distro, open up a terminal and type {{{ssh <username>@linerva.mit.edu}}}.  On Windows, download a SSH client (such as PuTTY, at http://chiark.greenend.org.uk/~sgtatham/putty/download.html) and install it.  Once you've opened it, type {{{<username>@linerva.mit.edu}}} into the prompt and hit enter.  On a Mac, open Terminal from the Utilities Folder in Applications. Type {{{kinit <username>ATHENA.MIT.EDU && ssh -K <username>@linerva.mit.edu}}} (In all these cases, don't include the angle brackets, just replace <username> with your MIT username).  You will then be prompted for your password.  Enter it, and then carry on with running barnowl!
30
31 To start barnowl, run the command {{{add barnowl; barnowl}}} at the prompt on any Athena machine or dialup, such as linerva.mit.edu.
32
33 The simplest use of Zephyr is to send personal zephyrs to other users. To send a zephyr, type : to bring up a command line, and run the command {{{zwrite USERNAME}}}. You can also start a {{{zwrite}}} command by simply typing z.
34
35 You can then enter your message, and then enter a {{{.}}} on a line by itself to finish the zephyr. By convention, zephyrs are usually word-wrapped to 70 characters or so per line; barnowl will wrap at about 10 characters less than the width of your terminal window, so if you have a large window, you may need to press M-q (Alt-q, or Escape then q) to word-wrap the current paragraph to a smaller width.
36
37 Once you've sent and received zephyrs, you can navigate the message list with the arrow keys. Press {{{d}}} to mark a message as deleted, {{{u}}} to undelete it, and {{{x}}} to expunge all messages that have been marked as deleted.
38
39 Instead of entering a {{{zwrite}}} command manually, you can also select a message in the message list with the arrow keys, and reply to it using {{{r}}}, which will automatically set up an appropriate {{{zwrite}}} command.
40
41 For more documentation on the built-in commands and keybindings, you can press h to bring up barnowl's built-in help screen. For help with a specific command, bring up a command line with {{{:}}} and then type {{{help COMMAND}}}.
42
43 === Classes and Instances ===
44
45 Generally the most interesting discussion on Zephyr, however, happens on so-called Zephyr ''classes''. A class is a bit like a chat room in other IM systems. Anyone can send a zephyr to a class, and anyone who is subscribed to that class will receive it. There is no security on classes -- anyone who knows the name of a class can subscribe, and there is no way to determine who is subscribed to a given class.
46
47 To subscribe to a class, use the subscribe command:
48
49 {{{
50 :subscribe CLASSNAME * *
51 }}}
52
53 To send a zephyr to a class, use the zwrite command with the -c option:
54
55 {{{
56 :zwrite -c CLASSNAME
57 }}}
58
59 Zephyrs to classes usually have an instance attached. An instance is a short \93topic\94 or \93subject\94 that indicates the context of a zephyr. Different instances are often used to multiplex multiple conversations on a high-traffic class. You can specify an instance with the -i option to zwrite:
60
61 {{{
62 :zwrite -c CLASSNAME -i INSTANCE
63 }}}
64
65 A message without an instance specified will default to the instance \93personal\94
66
67 Some common classes include:
68
69 '''help'''::
70  -c help is a class for asking (and answering) questions on virtually any topic imaginable. Be sure to use an instance (such as \93linux\94\93barnowl\94\93campus\94, or so on) when asking questions, since it's a fairly high-traffic class. 
71
72 '''sipb'''::
73  -c sipb is where most SIPB members hang out. It's a place for technical discussion, questions, support, and organizing SIPB events or projects. You should also always use an instance when sending to -c sipb. 
74
75 '''Personal Classes'''::
76  By convention, nearly every Zephyr user has a "personal" class that is the same as their username. How this class is used varies from person to person, but it's often a sort of mini-blog, a place to report what one is working on or up to, or ask friends questions, or just rant about something.
77
78 '''"un" Classes'''::
79  Many people use "un" classes in addition to their personal class, for example {{{johndoe}}} might use {{{-c unjohndoe}}}.  Sometimes there are nested un-classes as well, such as {{{-c ununjohndoe}}} or {{{-c unununjohndoe}}}.  It is extremely rare to see anything more than three "un"s.  Un-classes are generally used for snarking about a conversation going on in the next class up ({{{-c unjohndoe}}} snarking about {{{-c johndoe}}}), or for more intense ranting.  The more "un"s, the more intense the snarking/ranting generally becomes.
80
81 === Zephyr Slang ===
82
83 If you spend enough time on Zephyr, you'll begin noticing some strange phrases and words being thrown around.  Some of these include:
84
85 '''i,i foo''':  picked up from CMU zephyrland and means "I have no point here, I just like saying:".  Sometimes people simply use quotes: {{{"foo"}}}.
86
87 '''mix''':  If somebody accidentally sends a Zephyr to the wrong class or person, they will send another Zephyr to that wrong/class person simply saying "mix".  This basically just means, "oops, sorry, I didn't mean to send that Zephyr here".  You might also see "-i mix", which is the same thing, only with instances.
88
89 '''.d''':  You may see an instance change from {{{-i foo}}} to {{{-i foo.d}}}.  This indicates a deviation or tangent from the the original topic.
90
91 '''starking''': Answering a question or replying to a topic to a topic several hours (or days, occasionally) later. The term originates from Greg Stark, who would often reply to zephyrs hours or occasionally days later without seeing if anyone had answered yet, or worse, if the instance had moved on to an entirely different topic.
92
93 '''ttants''':  Literally, "Things That Are Not The Same".
94
95 '''prnf''':  Literally, "Pseudo-Random Neuron Firings".
96
97 There are many other acronyms that are used; if you don't know what it means, try using the {{{whats foo}}} command at an Athena terminal. If you don't have the command, run {{{add sipb}}} first.
98
99 === Zephyr Etiquette ===
100
101 There are rules that people tend to use on Zephyr.  These include:
102
103 Good grammar, spelling, and punctuation.  Not everybody uses capitalization, but they will still use good English.  Please do not say things such as "hey wut r u up to???".  It makes you look like an idiot.  Really.
104
105 You don't need multiple question marks or exclamation points.  Usually.
106
107 There are a few abbreviations people use, such as YMMV (Your Mileage May Vary) or IIRC (If I Remember Correctly).  Common abbreviations that you might find on AIM, however, are not.  People tend to look down upon "lol", "rofl", and other overly-used abbreviations.
108
109 Don't sub randomly to someone's class who you just met on zephyr.  It is usually considered good form to wait until you've met the person in real life, or at least have had lengthy conversations with them in personals.
110
111 === Startup ===
112
113 There might be some options that you want to be consistent from session to session; you don't want to have to set the same variables each time.  You can fix this by adding the commands to your "startup" file, for example, {{{.owl/startup}}}.  This can be done from within Barnowl, by using the {{{startup}}} command:
114
115 {{{
116 :startup set foo bar
117 }}}
118
119 Where {{{foo}}} is the variable you want to set, and {{{bar}}} is the value.  You do not necessarily have to use the {{{set}}} command, either, any command you can type in Barnowl can be added to the startup file.
120
121 === Logging ===
122
123 It is handy to be able to log your conversations so you can refer back to them later.  To log classes, for example:
124
125 {{{
126 :set classlogging on
127 }}}
128
129 And to log personals:
130
131 {{{
132 :set logging on
133 }}}
134
135 This will log to the "zlog" directory in your locker. You probably don't want people to see what classes you're on or what people you talk to, so you can run the Athena commands
136
137 {{{
138 mkdir -p ~/zlog
139 fs sa ~/zlog system:anyuser none
140 mkdir -p ~/zlog/people
141 mkdir -p ~/zlog/class
142 }}}
143
144 to create the necessary directories and make them completely hidden.
145
146 === Colors ===
147
148 By default, there are seven colors you may use in the terminal:  red, green, yellow, blue, magenta, cyan, and white.  In order to use color in Zephyr, you can use the following notation:  {{{@(@color(red)This is some red text))}}}
149
150 Colors may vary from machine to machine, as different terminal profiles may have different shades of the seven colors.
151
152 === Filters ===
153
154 Some people like to customize their Barnowl by color-coding classes.  This makes it easier to tell different classes apart (and minimize mixing).  Barnowl has some already existing filters, for example, {{{personal}}} (for incoming personals), {{{out}}} (for outgoing personals), and {{{ping}}} (for pings).  To assign a color to a filter, add the following to your startup file:
155
156 {{{
157 filter personal -c green
158 }}}
159
160 What if you want to color-code your class, or a friends class?  You can create and color filters with:
161
162 {{{
163 filter johndoe class johndoe
164 filter johndoe -c blue
165 }}}
166
167 You can update your settings and filters without restarting your Barnowl session by:
168
169 {{{
170 :source ~/path/to/config/file
171 }}}
172
173 You can see all the filters by using {{{:show filters}}}, and narrow to a particular filter with, e.g., {{{:view personal}}}. You can use {{{:view all}}} or the keyboard shortcut {{{V}}} to see all messages again.
174
175 For more detailed information on filters, visit https://barnowl.scripts.mit.edu:444/wiki/Filters.
176
177 == Running Barnowl in Screen ==
178
179 It can be very annoying to have to close Barnowl when you turn off your computer.  During the time your computer is off, you're missing many (possibly important) zephyrs.  It can be aggravating to be using zephyr via an unreliable network connection.  It can also be frustrating if you leave your computer on with Zephyr up, but go to a different computer and want to check your zephyrs - how do you do this?  These problems can be solved with the magic of screen.
180
181 A more detailed and extensive explanation of this can be found at http://web.mit.edu/kchen/bin/owl-screen.txt.
182
183 === Screen ===
184
185 You should find a computer or server on which to run your screen session(s) that is up all the time, for example, linerva.mit.edu.  Screen allows you to run programs inside of it on one computer, and to access those same programs from other computers via ssh.
186
187 === Quickstart ===
188
189 1.  Pick a machine to host your screen session on.  If you don't know of any options, linux.mit.edu (Linerva) is a good choice.
190 2.  ssh to that machine.
191 3.  Run "add kchen".  You may want to add this to your {{{~/.environment}}} file.
192 4.  Run "owl-screen"
193
194 Your screen session is now ready.  Once you start the screen session, you'll need to get renewable Kerberos tickets in order to run it for any extended period of time.  Press C-a C-c to open a new screen window, and run
195
196 {{{
197 kinit -l7d -54
198 }}}
199
200 (length 7 days, both Kerberos 5 and Kerberos 4). Press C-a 0 to return back to your Barnowl window.
201
202 When you're ready to log out, press C-a d to "detach" your screen, and then type {{{exit}}} or {{{logout}}} to log out.  Later, when you want to "reattach" your screen, ssh to the machine again, and run {{{screen -r}}}.
203
204 === Kerberos Tickets and AFS Tokens ===
205
206 In order to keep your screen session authenticated, you'll need to keep your Kerberos tickets and AFS tokens up-to-date.  There is a script that will do this for you, located in the {{{kchen}}} locker.  After you ssh into the machine that hosts your screen sessions, run the following commands:
207
208 {{{
209 add kchen
210 owl-screen
211 C-a C-c
212 kinit -l1d -r7d -54
213 }}}
214
215 === Attaching and Detaching Sessions ===
216
217 To detach a screen session (for example, if you want to log out), press C-a d (Control-A, then D).  Screen continues to run, but is no longer active.
218
219 To reattach a screen session, possibly detaching from wherever it's currently attached, run:
220
221 {{{
222 screen -dr
223 }}}
224
225 {{{screen}}} can do a whole lot more.   To find out about it, see UsingScreen.