Getting up and running with iris over NNTP

A guide by ~tjp for

If you're already familiar with iris and want to try an alternative user interface, netnews clients with metanews are worth a shot. In this guide we'll walk through using the tin newsreader to browse iris on

Set up

At this point in a guide we'd typically cover installation instructions, but there's not really anything to install! If you like, you may want to copy all the executable files we'll be using into your own bin or similar, but all the shell commands given in this guide will run them from ~tjp/bin/, which will work without requiring any set up.

# optional: copy to your own bin dir
cp ~tjp/bin/{metanews,with-metanews,mtin} ~/bin/

First run

There is a wrapper script we can use to start tin connected to a server hosting iris threads.

# run tin connected to iris

If this is your first time running tin on you will get a helpful welcome message about the program. Read through that and press <Enter> to get into the normal user interface.

The next screen you'll see is the newsgroup listing. Metanews only exposes two newsgroups: ctrl-c.iris and ctrl-c.slog. The most useful keyboard commands are listed at the bottom of the screen.

There will be a little u on the left end of the ctrl-c.iris line, this denotes that you are unsubscribed to that group. Change that by pressing s and it should go away.

Configure it

Now that we've started tin for the first time, the user configuration has been created. Before we go further in tin itself let's introduce the config file and adjust a few values. Close tin by pressing Q (yes, capital - q will generally bail you out to the parent screen, but Q will fully close tin from anywhere).

Now we can open the config file in our shell.

# edit the tin configuration file (use your preferred editor)
nano ~/.tin/tinrc

This is a well-commented file so we won't go through it here, but there are a few things we should adjust for iris specifically.

Find the line with thread_articles=3 and change it to thread_articles=2. Per the comment directly above it, this tells tin to identify messages as belonging to the same thread purely by the "References" header. The metanews server sets this header correctly so any additional cleverness in tin will just mess things up.

Next change sort_threads_type=1 to sort_threads_type=0. This will deactivate sorting the list of threads in tin, which causes it to just use the order provided by the metanews server. Metanews matches the sorting behavior of the original iris client, so when ctrl-c members are talking about a particular thread number, that will match what you see in the unfiltered thread list in tin.

That's it! Save and close the config file.

Run it

Start mtin back up and we should have our config changes applied:


Now because there is only one newsgroup and we are subscribed to it already, when we open tin it will immediately take us to the thread listing page. As usual commands are listed on the bottom of the screen, but the big ones you'll use most are:

Tin is a nice user-friendly program with an easy learning curve. Explore around some more, maybe open the config file again and adjust settings to your liking, and figure out if this could be for you. I hope you enjoy it!

What is this sorcery

(you know everything you need to know now to make use of mtin, this is just about implementation for anyone interested)

Metanews is an NNTP server that only accepts and handles one client connection. It's purpose is to be a short-lived bridge between iris and the netnews NNTP protocol, to allow browsing iris threads from any news client. It can also receive posts, which it will handle by posting the message to iris as the user it was started under (your user).

The client/server session between tin and metanews is managed by a script called with-metanews. This script starts up the metanews server, sets some environment variables to communicate the server's address, and starts up the rest of it's own command line. So the mtin program is essentially with-metanews tin, though just a little bit more fancy. Once the sub-command completes, with-metanews waits for the metanews server process to close before ending.

The code is on tildegit and includes the metanews server as well as all the wrapper scripts.