Student Information Processing Board @ MIT

Zephyr for the Impatient

This page was migrated from the old website and has not been manually reviewed, or is here for historical purposes. We make no guarantees that the content is up-to-date or reflects SIPB's current views. Contact sipb-www@mit.edu if anything is broken or you have other questions or feedback.

Zephyr for the Impatient

This is a short and efficient guide for quickly getting on Zephyr. It’ll explain everything you need to know to start zephyring as quickly, and reliably, as possible. Zephyr is a fairly old piece of technology, so it can be a little intimidating at first.

This guide assumes only basic understanding of how to use a terminal.

Get mosh

Mosh is like ssh, which lets you securely log into a remote computer, but with the extra functionality of roaming. If you computer moves across networks, the connection won’t drop. This is often useful.

If on Linux, install mosh via package manager; if on macOS, via homebrew or macports; if on Windows or Chrome OS, install Mosh for Chrome.

If on Linux/macOS, the incantation for logging into athena with mosh is:

mosh --ssh="ssh -K" --server="athrun mosh_project mosh-server" user@hostname

The -K part will allow you to use Kerberos tickets on your machine, you have them. From here on out we refer to the above incantation as mosh.

Pick a dialup

Log into one of the Athena dialups with the command mosh user@athena.dialup.mit.edu where user is your Athena username. Log in with your Athena password. Once on a dialup, run echo $HOST to learn the name of the machine (for example, mass-toolpike or biohazard-cafe). You can use the Moira command stella $HOST to learn aliases for the hostname for quicker logins. If you were logged into mass-toolpike.mit.edu, for example, you might log in with mosh user@i90.mit.edu. (If you’re on campus, you can omit the .mit.edu part.)

The reason for doing this ceremony of picking one Athena dialup to use consistently will become clear in the next step.

Prepare a screen session

Log into the dialup you picked above and run athrun sipb pag-screen. screen is a UNIX program that lets you run other programs even when you’re not logged in, which is crucial for being able to receive zephyrgrams. Here are the relevant screen commands (C-a x means pressing and releasing Ctrl-a, then pressing x). You can run man screen to learn more commands.

  • C-a d - detach the screen (you need to do this to log out without killing your programs)
  • C-a c - create a new window (a single screen session can have several windows, each behaving like a separate terminal)
  • C-a n - cycle to the next window
  • C-a p - cycle to the previous window
  • C-a # - cycle to the #th window, indexed from 0
  • C-a a - send a literal C-a to the underlying program, required for nested screens.

Screens either be attached or detached (being attached means that there’s a logged-in user looking at it). To reattach this screen, run

screen -dr pag

The -dr flag will detach the screen (in case a hanging session left it thinking it was attached) and reattach. pag is simply the name of the screen; you can list them with screen -ls. If you only have one screen session, you can omit the name. The important feature of this screen is that it will continuously renew your Kerberos tickets, as long as they are renewable; this way you only need to get new tickets once a week! (This magic is accomplished using the script cont-renew-notify, which is automatically invoked by pag-screen. If you don’t want this feature, you can kill it).

Now, while logging into different dialups will get you the same files (since MIT runs a networked filesystem called AFS), the same is not true for programs that run past a logout, like screen. In order to resume a screen, you must log onto the dialup it was created in. This is why we had to go through the trouble of picking a dialup.

Start a Barnowl

While attached to your screen, run athrun barnowl. This will start barnowl, the premiere zephyr client. Because of how the zephyr protocol works, you must have barnowl running constantly to receive messages; you’ll also need valid tickets to receive personals. This is why we had to go through the process of setting up pag-screen. Some useful things you can do right off the bat:

  • Press h to bring up a simple help dialog (q to quit).
  • Press : to bring up a command prompt (C-c, i.e. Ctrl-c, to cancel without running a command).

Zephyr is divided into “classes” and “instances”. A class corresponds roughly to a chat channel, but they do not belong to any one user, and are unmoderated. An instance of a class is like a “discussion topic”. For example, -c sipb -i food is a discussion on the class sipb about food (probably getting some).

A “personal class” is a class used by one user to discuss things about themselves (in the Twitter sense, perhaps). By convention the class is the person’s username. It is a good idea to subscribe to personal classes of people you know, and don’t be afraid to take part in discussion; however, being loud on someone’s personal class is considered rude, especially if they don’t know you too well.

Other useful classes include -c sipb, which is all about SIPB, and out-of-the-loop, a general ask-question-get-help class.

To receive messages sent to class, you can subscribe using the sub <class>. To see your subscriptions, run show subs.

To actually send a zephyrgram to a class you’re subscribed to, run the command

zwrite -c <class> -i <instance>

which will then let you type your message. You can send your message by pressing return on a line with just a dot, or by sending an end-of-file (C-d, i.e. Ctrl-d). Pressing z will bring a zwrite command, so you can avoid having to type :zwrite to send a command. Pressing r will let you reply to a message, by pre-running the zwrite command with the appropriate -c and -i flags.

You can also send personal zephyrgrams to any user currently logged in, by running zwrite <user>. If you want to send a personal to several users, you can use cc syntax:

zwrite -C <user1> <user2> ...

This will make it easier for them to reply to everyone in the conversation.

Zephyr has been around for much, much longer than most internet communities, and has some etiquette that can seem a bit bizarre to newcomers. A good description of this (and a more in-depth description of how classes/instances work) can be found at here.

To let people know you’re using zephyr (and so you get subscribers!) send a zephyr to -c hello -i <your-username>. Don’t forget to subscribe to hello first! It’s a good idea to greet newcomers yourself, too, so they have personal classes to join! While subbing (and lurking) on others’ personal classes is perfectly fine, be mindful of others; not every zephyr user wants their classes to become full of people they’ve never met.

Get tickets.

Kerberos is an authentication system developed at MIT, which uses “tickets” to prove credentials. Tickets allow you to do privileged actions, like receive personal messages. For security reasons, tickets expire, so you’ll need to get new ones every once in a while. The longest MIT allows this period to be is 7 days. Tickets also need to be renewed, but pag-screen takes care of that for you.

To get tickets for barnowl, make a new window (C-a c) and run the command

kinit -l7d

This means “get me Kerberos tickets with a lifetime of 7 days”. You’ll have to do this every week; pag-screen will zephyr you to remind you the day before. Since your screen will now have two windows, use C-a n and C-a p to navigate between them.

You should now have everything you need to join in on the conversation on Zephyr! Happy zephrying!