Offline computing: Usenet and netnews If there's one thing that's easy to interact with while offline, it's Usenet (and more generally netnews). Obviously, since the underlying protocol and the type of applications that correspond to it were born in times when Internet access was a rare commodity. The discussion forums accessible via NNTP are places that I particularly like. There is the giant Usenet of course, but I am also thinking of new or older communities where very enriching discussions take place. Accessing usenet generally requires an account with a provider. There are paid ones (mainly to have access to the bin.* hierarchy) but also free ones (which generaly give only access to the textual parts of Usenet) like eternal-september.org or aioe.org. But there is also a large number of "private" servers, often created to meet specific interests (please see the end of this post for a non-exhaustive list). And to visit them I personally use slrn(1) which comes with its companion slrnpull(1). *** A quick howto. slrn(1) is a TUI newsreader. It comes with slrnpull(1), a tool that pull newsfeed for offline reading. The basic workflow is to launch slrnpull(1) to retrieve/send messages from/to wanted newsgroup, then run slrn(1) to read/respond to them. For the example, I'll use the tildeverse.org news server that can be accessed freely without an account. First we need to create the local directory where messages will be stored: $ mkdir -p ~/news/tildeverse Then we'll need to say to slrnpull(1) which newsgroup we want, how many articles to retrieve, how much days after an article is retrieved before it will be eligible for deletion, and if we want just the headers of messages. All take place in a slrnpull.conf file inside our working directory: ---8<--- ~/news/tildeverse/slrnpull.conf default 400 90 0 local.general local.test tilde.meta tilde.services.uucp tilde.art.ascii tilde.art.music tilde.text tilde.food+drink tilde.javascript tilde.meetups tilde.nsfw tilde.php tilde.python tilde.poetry tilde.projects tilde.services tilde.cosmic tilde.club tilde.team tilde.radiofreqs tilde.gopher tilde.pink tilde.black --->8--- We first declare a "default" with default values for each newsgroup. Here I want slrnpull(1) to retrieve 400 messages, and keep them for 90 days before deletion. The last "0" means that I want the whole message, not just the headers. After the "default", we put what newsgroup we want, one per line. I want all the newsgroups that news.tildeverse.org provide so I put them all. Once done, we just need to launch slrnpull(1): $ slrnpull -d ~/news/tildeverse/ -h news.tildeverse.org Which will return something like this: ---8<--- slrnpull(1) output (extract) 08/12/2022 23:11:55 Reading /home/f6k/news/tildeverse/slrnpull.conf 08/12/2022 23:11:55 ***Unable to open /var/log/news/slrnpull.log for logging. 08/12/2022 23:11:55 slrnpull started. 08/12/2022 23:11:55 Reading /home/f6k/news/tildeverse/slrnpull.conf 08/12/2022 23:11:55 Connecting to host news.tildeverse.org ... 08/12/2022 23:11:57 Connected to host. Posting ok. 08/12/2022 23:11:57 Fetching articles for local.general. 08/12/2022 23:11:57 local.general: no new articles available. 08/12/2022 23:11:57 Fetching articles for local.test. 08/12/2022 23:11:58 local.test: Retrieving articles 399-399. 08/12/2022 23:11:58 local.test: 1 articles available. 08/12/2022 23:11:58 local.test: 1/1 (0 killed), Time: 00:00:01, BPS: 1284 08/12/2022 23:11:58 Fetching articles for tilde.meta. 08/12/2022 23:11:59 tilde.meta: no new articles available. (...) --->8--- Note that there's a flag to remove expired messages (according to values in slrnpull.conf file): "--expire". Please see the slrnpull(1) manpage for more details. Now that we have all messages stored on our computer, we need to read them with slrn(1). We start with the configuration in ~/.slrnrc: ---8<--- ~/.slrnrc (extract) set username "f6k" set realname "f6k" set hostname "huld.re" #ifdef tv set spool_inn_root "/home/f6k/news/tildeverse" set spool_root "/home/f6k/news/tildeverse/news" set spool_nov_root "/home/f6k/news/tildeverse/news" set read_active 1 set use_slrnpull 1 server "/home/f6k/news/tildeverse/news" ".jnewsrc.tv" #endif set server_object "spool" % the previous line is optional. --->8--- Note the "tv" for ifdef. You can put anything you want instead of "tv", but I found it easier to remember that way (TildeVerse), and easier to type since we'll use this id to call from slrn(1). By the way, an important thing: the last variable is optional but usefull for me. Because I download all netnews content for offline reading I use it so the command line argument "--spool" is not necessary. If you want to connect directly to some news server, don't use it but append "--spool" to slrn(1) command (see below). Parenthetically, and obviously, slrn(1) leaves room for a number of configuration within that file, but since that's not the subject of this post, I'm leaving that aside. That said, everything is well documented in the man page. We're almost ready. We just need to create the .jnewsrc.tv file: $ slrn -f ~/.jnewsrc.tv --create And then to launch slrn(1) on our local cache of news.tildeverse.org: $ slrn -Dtv slrn(1) is then used quite normally. The first time you'll launch slrn(1) you'll need to subscribe to the newsgroups retrieved by slrnpull(1). And the follow ups we make to newsgroups are saved to be sent by slrnpull(1) the next time it is started. Finally, you should know that you can have as many "ifdef" as you want in ~/.slrnrc for as many servers you want, as long as they have a unique id ("tv" in my example above). Plus, in the case you connect to various servers I recommend using a script to retrieve all the content with slrnpull(1)--either way, it makes life easier. *** A non-exhaustive list of private servers (please visit the domain names on HTTP for details on each one). I particularly like grc for its grc.scifi newsgroup and tildeverse for general/tech discussions. - news.breadpunk.club - news.niel.me - paganini.bofh.team - dodin.fr.nf - news.dizum.net - news.mozilla.org - news.servidellagleba.it - news.killfile.org - news.endofthelinebbs.com - retrobsd.ddns.net - rdnetbbs.com - news.neodome.net - news.mixmin.net - news.cyber23.de - fltk.org - news.digitalmars.com - news.novabbs.org - nntp.idecnet.com - news.grc.com - news.tilde.club - news.tilde.team - news.tildeverse.org - news.bbs.nz *** And for the curious, here are the newsgroups I follow on Usenet: alt.folklore.computers alt.os.linux.slackware alt.os.free-dos alt.pub.coffeehouse.amethyst comp.infosystems.gopher comp.infosystems.gemini comp.sys.raspberry-pi comp.misc fr.comp.os.linux.configuration fr.comp.text.tex fr.rec.arts.sf gnu.emacs.help rec.arts.movies.current-films rec.arts.movies.international rec.arts.sf.tv rec.food.cooking rec.games.backgammon rec.games.chess.misc rec.games.roguelike.nethack rec.games.computer.doom.playing sci.electronics.repair sci.misc sci.space.science