Lucy - Newsreader for the console

Lucy

Lucy is the chief architect.

For years I had wondered why perl, a language that was originally designed to work with internet news systems, didn't have a news reader of its own. Although there are some other perl based usenet programs available, these seemed designed primarily for binary downloads or web based gateways. So, I started working on a termcap based reader.

The advantage of having a newsreader written in perl is that you can extend it or customize it with relative ease.

Target audience

Lucy is for power users already familiar with usenet. It won't hold your hand or nag you about proper etiquette. In fact, you are free to edit all the headers of your posts, if you want. (You can even violate the RFC protocols for usenet, and Lucy won't complain unless you ask it to) This may seem like a bug, but I don't consider it as such, it's designed for people who are already familiar with usenet.

This newsreader is ideally suited to perl programmers. The examples include a skeleton outline for adding text-to-speech capabilities (for blind users, it works on a mac through the osascript command) as well as a built in regular expression calculator.

Lucy has many of the features you would expect from a contemporary news reader, and even a few you wouldn't. It uses a command mode (similar in concept to the vi series of editors, but without the modes) All the keys are bind-able, that is, you can bind key(s) to the various commands.

Some of the other things it supports are subject and newsgroup filtering, lets suppose you wanted to narrow down your list of newsgroups to those containing "perl" in their names, Lucy lets you do this.

The command interface

One of the frustrating things about newsreaders (or any software programs for that matter) is remembering the keystroke to perform an action you seldom use. This is where a command interface comes in handy, commands are easier to remember than keystrokes.

When Term::ReadLine::Gnu is installed (highly recommended) command completion is available, so you only have to type a portion of the command to get a list of them. Lucy also has online help.

Swift - Like a rabbit

At first, one would be tempted to believe a perl newsreader would be slow, this is not the case with Lucy, its startup time is much faster than most other newsreaders because it will not contact the server until you've selected a group.

To minimize the startup time, it will load its perl modules dynamically. To improve loading time of your newsrc it uses its own variant of News::Newsrc (With dynamic creation of Set::IntSpan objects)

Currently, it requires the news server to support the XOVER command, most servers already do this (It was developed with the leafnode news server). You will find that using XOVER is much faster than downloading headers.

The UNIX way

Whenever possible, it will use external programs. This was one of the things I didn't care for about other newsreaders, I wanted to use my favorite pager (less) to page articles, and I wanted to use my favorite mail program (mutt) for email. I don't like having different pagers for different programs. Furthermore, you've probably configured your email program to your settings, why should a news reader implement its own mail interface?

To make the pager work better within the newsreader, you can configure it to use the program exit code as a keystroke. This is very handy with the lesskey utility. With this approach, jumping from 'less' straight into a followup is possible.

Usenet Binaries

Lucy now has better support for usenet binaries, with background downloading. (Select files to download, it figures out which parts are needed and then downloads them)

It has several new commands to help in binary readings, such as a binary thread model.

To install, unpack it wherever you want, run perl install.pl and it'll check for modules it thinks it needs, offering to run CPAN for you. It'll then create a simple shell script for running Lucy.

Screen Shots

News Groups
Familiar newsgroup listing. Use :show-list to fetch a list of newsgroups to subscribe to.
Articles
Articles view.
Threads
Threads, regular text newsgroup.
"binary thread"
Threads, in binary mode. (Same as regular threads, except the threading is by part/total, (nnn/nnn))
Posts
Posting a followup has a menu as well.

IMPORTANT Lucy is a huge package and it has its warts and other bugs. I seldom hear from anyone who actually uses it other then myself. While I do have an updated version, I haven't uploaded it simply for lack of interest (and frankly, it's a hassle to package it up for downloading when no one uses it.) Please let me know if this interests you and I'll send you my copy straight out of CVS.

Download

Download gzipped tar, version 004
This is the current version.
Download gzipped tar version 003
Installation is fairly simple, basically unpack into /usr/local/.

Questions, comments or requests? Contact us