Update IS&T keytab request form link
[wiki.git] / doc / zephyr.mdwn
index e326e4a8c8b729bec73f2f26427ae554fcecd7a6..6abd38e6eaa84bc73ad3c1f9b92879df1d985ae1 100644 (file)
 
 ## Introduction to Zephyr
 
-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.
-
-The information in this wiki about Barnowl just barely touches the
-surface.  More for in-depth functionality, visit the [Barnowl
-wiki](https://barnowl.scripts.mit.edu:444/wiki).
-
-## Modern Zephyr
-
-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.
-
-### Other Clients
-
-There are other clients besides Barnowl, however their use is not
-nearly as widespread.  Some of these include:
+Zephyr is a general purpose chat system for MIT.
 
-* Owl (unmaintained, Barnowl evolved from this)
-* vt / jervt
-* zwgc (see TraditionalZephyr)
-* Pidgin
-* zephyr-mode for emacs
+People use it to exchange information about classes, how their days are
+going, and talk on Zephyr classes and instances about everything
+from the latest episode of Game of Thrones to the next 18.03
+problem set.
 
-Using Barnowl is recommended, as it is better supported and more
-documentation exists for it.
+Zephyr is an underlying chat system; the built-in tools for exchanging messages via Zephyr are rudimentary. Most people who use Zephyr today take advantage of integrated clients that make the system easy to use.
 
-### Using Barnowl
+Here are [detailed instructions for getting onto Zephyr.](https://sipb.mit.edu/doc/zephyr-quick/)
 
-To start barnowl, run the command `add barnowl; barnowl` at the prompt
-on any Athena machine or dialup, such as linerva.mit.edu.
+## Major clients
 
-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.
+Here are some of the primary clients used at MIT. There's also a listing of [other Zephyr clients](http://zephyr.1ts.org/wiki/ZephyrClients), but their use is generally not recommended.
 
-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-character lines or so; Pressing M-q (Alt-q, or
-Escape then q) will word-wrap the text you've entered for you.
+### BarnOwl
 
-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.
+[BarnOwl](http://barnowl.mit.edu/) is a command-line Zephyr client that supports advanced filtering and customisation. It is probably the most commonly used client, but requires some effort to get started. To use BarnOwl effectively, you should connect to an [Athena dialup](http://web.mit.edu/dialup/www/ssh.html) and run BarnOwl along with a program to renew your Kerberos tickets. The Athena command `athrun sipb pag-screen` will set up ticket renewal, and `athrun barnowl` after that will run BarnOwl itself.
 
-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.
+In addition to primarily supporting Zephyr, BarnOwl also lets you connect to [AIM](http://aim.com), [XMPP/Jabber](http://xmpp.org/) (Google Talk, Facebook, etc.), [Twitter](http://twitter.com), and IRC networks.
 
-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`.
+See [Getting Started with BarnOwl](http://barnowl.mit.edu/wiki/GettingStarted) for more information.
 
-### Classes and Instances
+### Roost
 
-Generally the most interesting discussion on Zephyr, however, happens
-on so-called Zephyr <em>classes</em>. 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.
+[Roost](https://roost.mit.edu/) is a graphical Zephyr client built by [David Benjamin](https://davidben.net/) (MIT '12, SIPB member) as part of his [master's thesis](https://davidben.net/thesis.pdf). It is relatively new and currently considered experimental by its author.
 
-To subscribe to a class, use the subscribe command:
+Roost makes use of [Webathena](https://webathena.mit.edu/) to keep you subscribed to Zephyr. This makes for a much easier setup.
 
-    :subscribe CLASSNAME * *
+### Zulip
 
-To send a zephyr to a class, use the zwrite command with the -c option:
 
-    :zwrite -c CLASSNAME
+[Zulip](https://zulipchat.com/zephyr) ([source code](https://github.com/zulip/zulip)) is a web-based Zephyr client that also provides [mobile apps](https://zephyr.zulipchat.com/apps) for Android and iOS and desktop apps for Linux, Mac, and Windows. Zulip was originally a proprietary product developed by a company composed largely of MIT alums and SIPB members. It was acquired by [Dropbox](https://www.dropbox.com/about) in 2014, and [released as open-source software](https://blogs.dropbox.com/tech/2015/09/open-sourcing-zulip-a-dropbox-hack-week-project/) a year later. The Zulip for Zephyr service is offered by [Tim Abbott](http://web.mit.edu/tabbott/www/) (MIT '06, SIPB member)'s Kandra Labs.
 
-Zephyrs to classes usually have an instance attached. An instance is a
-short &ldquo;topic&rdquo; or &ldquo;subject&rdquo; 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:
+Zulip, like Roost, is easy to set up because it uses Webathena for authentication.
 
-    :zwrite -c CLASSNAME -i INSTANCE
-
-A message without an instance specified will default to the instance
-&ldquo;personal&rdquo;.
-
-Some common classes include:
-
-<strong>help</strong>::
->  -c help is a class for asking (and answering) questions on virtually any topic imaginable. Be sure to use an instance (such as &ldquo;linux&rdquo;, &ldquo;barnowl&rdquo;, &ldquo;campus&rdquo;, or so on) when asking questions, since it's a fairly high-traffic class.
+See [Zulip for MIT setup](http://zulipchat.com/zephyr) for details.
 
-<strong>sipb</strong>::
->  -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.
+<!-- merge to http://zephyr.1ts.org/wiki/ZephyrClients (I would do this, except I can't log in…)
 
-<strong>Personal Classes</strong>::
->  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.
+## Other Clients
 
-<strong>"un" Classes</strong>::
->  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.
-
-### Zephyr Slang
-
-If you spend enough time on Zephyr, you'll begin noticing some strange phrases and words being thrown around.  Some of these include:
+There are other clients besides the above, but their use is not
+nearly as widespread.  Some of these include:
 
-<strong>i,i foo</strong>:
->  picked up from CMU zephyrland and means "I have no point here, I just like saying:".  Sometimes people simply use quotes: `"foo"`.
+* Owl (unmaintained, BarnOwl evolved from this)
+* vt / jervt
+* zwgc (see TraditionalZephyr)
+* Pidgin
+* zephyr-mode for emacs
+* [ZephyrPlus web client](https://zephyrplus.mit.edu)
 
-<strong>mix</strong>:
->  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.
+-->
 
-<strong>.d</strong>:
->  You may see an instance change from `-i foo` to `-i foo.d`.  This indicates a deviation or tangent from the the original topic.
+## Culture
 
-<strong>starking</strong>:
-> 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.
+### Classes and Instances
 
-<strong>ttants</strong>:
->  Literally, "Things That Are Not The Same".
+Generally the most interesting discussion on Zephyr happens
+on so-called Zephyr <em>classes</em>. 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 &mdash; anyone who knows the name of a class can
+subscribe, and there is no way to determine who is subscribed to a
+given class. (For secure or private zephyring, consider [[zcrypt]].)
 
-<strong>prnf</strong>:
->  Literally, "Pseudo-Random Neuron Firings".
+To subscribe to a class, use the subscribe command:
 
-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.
+    :subscribe CLASSNAME * * 
 
-### Startup
+To send a zephyr to a class, use the zwrite command with the -c option:
 
-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:
+    :zwrite -c CLASSNAME
 
-    :startup set foo bar
+Zephyrs to classes usually have an instance attached. An instance is a
+short &ldquo;topic&rdquo; or &ldquo;subject&rdquo; 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:
 
-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.
+    :zwrite -c CLASSNAME -i INSTANCE
 
-### Logging
+A message without an instance specified will default to the instance
+&ldquo;personal&rdquo;.
 
-It is handy to be able to log your conversations so you can refer back to them later.  To log classes, for example:
+You can send zephyrs to individuals (as opposed to classes) with:
 
-    :set classlogging on
+    :zwrite USERNAME
 
-And to log personals:
+It is possible to `zwrite` to multiple individuals at once, by listing the
+usernames separated by spaces:
 
-    :set logging on
+    :zwrite -C USERONE USERTWO USERTHREE
 
-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 command
+The `-C` option automatically puts the line `CC: USERONE USERTWO USERTHREE`
+in the body of the zephyr,
+although this is only a convention and is not required or enforced.
 
-    mkdir -p ~/zlog
-    fs sa ~/zlog system:anyuser none
+### Aside: zephyr triplets
 
-to make this directory completely hidden.
+All messages are actually sent to a "zephyr triplet" &mdash; a class, instance, and recipient. Subscriptions are also made to zephyr triplets. The recipient can be either "*" &mdash; to indicate a broadcast message &mdash; or a specific individual.
 
-### Colors
+When sending, the default class is "message", instance is "personal", and recipient is "*". `zwrite` supports sending to arbitrary triples with `:zwrite -c CLASS -i INSTANCE USERNAME` &mdash; the two examples above use the defaults for the parts that aren't specified.
 
-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))`
+For subscriptions, the class must be specified. You can specify all instances on a class with "\*", or specify just one instance. You can only sub to recipient "\*" or your own personals (indicated by "%me%").)
 
-Colors may vary from machine to machine, as different terminal profiles may have different shades of the seven colors.
+### Common classes
 
-### Filters
+Some common classes include:
 
-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:
+<strong>help</strong>:
+> -c help is a class for asking (and answering) questions on virtually
+> any topic imaginable. Be sure to use an instance (such as
+> &ldquo;linux&rdquo;, &ldquo;barnowl&rdquo;, &ldquo;campus&rdquo;, or
+> so on) when asking questions, since it's a fairly high-traffic
+> class.
+
+<strong>sipb</strong>:
+> -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.
+
+<strong>Personal Classes</strong>:
+> 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.
+
+<strong>hello</strong>:
+> -c hello is for introducing yourself to the Zephyrsphere!
+> Send a zephyr to `-c hello -i YOUR_USERNAME` to let people
+> know you're a Zephyr user! This is a way to find out who else you know
+> uses Zephyr so you can subscribe to their class, and to get to know
+> new people through Zephyr. Also, feel free to invite others to
+> subscribe to your class!
+
+<strong>unclasses</strong>:
+> Most classes have an unclass, formed by prefixing "un" to the name. For
+> example, -c help has the unclass -c unhelp. The unclass is generally used for
+> snarky or unproductive replies; the prototypical example that first inspired
+> their creation was telling somebody with computer issues to run
+> `sudo rm -rf /`. Rarely, un- prefixes are stacked for even snarkier
+> discussion, on -c ununhelp and so on.
+
+<strong>.d classes</strong>:
+> Classes like -c help.d are sometimes used for discussions that deviate from
+> the conversation on the main class. .d instances are more common, though;
+> see below.
 
-    filter personal -c green
+### Zephyr Slang
 
-What if you want to color-code your class, or a friends class?  You can create and color filters with:
+If you spend enough time on Zephyr, you'll begin noticing some strange
+phrases and words being thrown around.  Some of these include:
 
-    filter johndoe class johndoe
-    filter johndoe -c blue
+<strong>i,i foo</strong>:
+> USENET saying picked up from CMU zephyrland that expands to "I have no point here, I
+> just like saying:".  Sometimes people use
+> [scare quotes](https://en.wikipedia.org/wiki/Scare_quotes) (e.g. `"foo"`) 
+> for similar purposes.
 
-You can update your settings and filters without restarting your Barnowl session by:
+<strong>mix</strong>:
+> 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. The specific invocation "unmix"
+> is used when accidentally sending a Zephyr to a class instead of its unclass
+> or vice versa.
+
+<strong>to Stark</strong>:
+> To answer 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.
 
-    :source ~/path/to/config/file
+<strong>.d</strong>:
+> You may see an instance change from `-i foo` to `-i foo.d`.  This
+> indicates a deviation or tangent from the the original topic.
 
-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.
+<strong>.q</strong>:
+> Similarly, `.q` at the end of an instance name indicates a quote.
 
-For more detailed information on filters, visit https://barnowl.scripts.mit.edu:444/wiki/Filters.
+<strong>ttants</strong>:
+> Literally, "Things That Are Not The Same". When the things are people,
+> <strong>pwants</strong> for "People Who Are Not The Same" may be used.
 
-## Running Barnowl in Screen
+<strong>prnf</strong>:
+> Literally, "Pseudo-Random Neuron Firing".
 
-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.
+<strong>eiz</strong> or <strong>eip</strong> or <strong>else</strong>:
+> Instances used to comment on discussions on other classes in Zephyr without
+> linking to the original source for reasons of privacy or discretion. "eiz"
+> means "Elsewhere in Zephyr", "eip" means "Elsewhere in Personals".
 
-A more detailed and extensive explanation of this can be found at http://web.mit.edu/kchen/bin/owl-screen.txt.
+<strong>eiw</strong>:
+> "Elsewhere in Webspace": instance used to comment on events on the Internet beyond Zephyr (like, say, on another messaging service).
 
-### Screen
+<strong>eim</strong>:
+> "Elsewhere in Meatspace": instance used to comment on events not on Zephyr.
 
-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.
+<strong>doxp</strong>:
+> "Do X predicate", from Lisp naming convention. A discussion on whether one
+> should do X.
+> A common variation is "doxory", literally "Do X or Y".
 
-### Quickstart
+Many of the acronyms may be suffixed onto normal instance topics with a period
+to indicate relation. 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. Alternatively, running the
+single command `athrun sipb whats foo` works as well.
 
-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.
-2.  ssh to that machine.
-3.  Run "add kchen".  You may want to add this to your `~/.environment` file.
-4.  Run "owl-screen"
+### Zephyr Etiquette
 
-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
+There are rules that people tend to use on Zephyr.  These include:
 
-    kinit -l7d -54
+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???".
 
-(length 7 days, both Kerberos 5 and Kerberos 4). Press C-a 0 to return back to your Barnowl window.
+You don't need multiple question marks or exclamation points.  Usually.
 
-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`.
+There are a few abbreviations people use, such as YMMV (Your Mileage May
+Vary) or IIRC (If I Remember Correctly), as well as some nerdier ones
+like DTRT (Do The Right Thing, in reference to
+[ The Rise of "Worse Is
+Better"](http://www.jwz.org/doc/worse-is-better.html)). 
+As mentioned above, try running `athrun sipb whats dtrt` to look up an
+abbreviation.
 
-### Kerberos Tickets and AFS Tokens
+Personal classes are by convention considered a little more private than
+non-personal (public) classes. Although most people don't mind people
+they've met subscribing to their personal class and lurking, it's poor
+form to talk loudly on the personal class of someone you don't know.
 
-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:
 
-    add kchen
-    owl-screen
-    C-a C-c
-    kinit -l1d -r7d -54
+## Interaction with Traditional Zephyr
 
-### Attaching and Detaching Sessions
+The default Athena startup scripts launch `zwgc`  on login. `zwgc` displays a popup for each message, so if you are subscribed to many classes and use Zephyr as many do today, `zwgc`'s behavior is not very desirable. To disable `zwgc` startup, add:
 
-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.
+    setenv ZEPHYR_CLIENT false
 
-To reattach a screen session, possibly detaching from wherever it's currently attached, run:
+to your `~/.environment` file if you use `tcsh` or
 
-    screen -dr
+    ZEPHYR_CLIENT=false
 
-`screen` can do a whole lot more.   To find out about it, see [UsingScreen](https://sipb-www.scripts.mit.edu:444/doc/wiki/UsingScreen).
+to your `~/.bash_environment` if you use `bash`. This will cause your
+shell to launch the `false` executable instead of `zwgc`, thereby disabling it ('false' does nothing).