Notes from the Usenet distribution of the news software.


Notes for 2.10.1:

This distribution is an interim distribution, fixing some serious bugs
found in 2.10, but providing no user enhancements.  It is provided since
2.11 will not be out for a few months.

Preview of 2.11:
2.11 will incorporate
	A large number of less serious bug fixes and improvements.
	Several enhancements that have been posted to the net,
		such as the recursive expire options.
	A considerably revamped user interface which sorts newsgroups
		to put discussions together (as much as possible,
		given the nature of how people follow things up).
		The msgs and mail interfaces are more cleanly integrated.
		Turning off discussions is a possibility.
	Some kind of screen oriented interface will probably be
		included as an alternative to readnews.
	Possible improved batching software, as it develops.
	No significant enhancements to the inews portion are planned for 2.11.

Notes for 2.10:

There are some incompatiblities between 2.9 and 2.10.  None of them
should cause a problem, but you should be aware of them.  Some conversion
is needed.

The file storage format has been changed.  Rather than storing news in
$SPOOL/net.games.rogue/123, an article now goes in $SPOOL/net/games/rogue/123.
This permits newsgroup names to be longer than 14 characters and still
have subgroups.  It also makes directories smaller, resulting in faster
performance.  The dot files are gone, rather than saving the next
article number in $SPOOL/.net.games.rogue as the length of the file,
it goes in the active file on the same line as net.games.rogue.
Thus, your active file contains lines like
	net.games.rogue 00123
where the newsgroup name and the max article number are separated by
a space.  The article numbers are ALWAYS 5 digits long and include
the leading digits to do this (this is so they can be updated in place
without growing the active file).  The old active file has been saved
as $LIB/oactive in case of emergency.

This conversion of directory tree formats has an extra benefit.  You'll
find that readnews is now considerably faster than version 2.9.  The
movement of the dot files accounts for much of this, since it is no
longer necessary to "stat" every dot file.  Additionally, a routine to
find a newsgroup in your .newsrc has been modified to keep the
file sorted in the same order as active, and a "last found" pointer
is used to reduce the find time algorithm from quadratic complexity
(on the number of newsgroups) to linear complexity.  This makes the
total number of newsgroups less of a factor in determining speed,
and also keeps everyone's .newsrc cleaned out.  It is important
that people not store extra junk in their .newsrc, because it will
be deleted when they run readnews.

Before you do the conversion, you are urged to check your LIB/active
file and clean out any duplicates and old newsgroups.

Overall recommended conversion order:
	restore your /usr/spool/news hierarchy and the following
	    files from /usr/lib/news: active, sys, history
	make the new spool directories:
		sh cvt.mkdirs.sh /usr/lib/news /usr/spool/news
	convert the history file
		cc cvt.hist.c -ldbm
		a.out /usr/lib/news
	convert the active file:
		sh cvt.active.sh /usr/lib/news /usr/spool/news
	make links to spooled articles (this takes awhile):
		sh cvt.links.sh /usr/lib/news /usr/spool/news
		(see below)
	test everything to make sure it all works
	clean out the old spool hierarchy:
		sh cvt.clean.sh /usr/spool/news


Several shell scripts and C programs are provided to help with this
conversion.  The above scripts will convert active and create the new
directory tree.  

When you are satisfied that everything is working OK, run
	cvt.clean.sh $SPOOL
and it will remove the old dot files and directories.

The method used to determine if an incoming article has already been
seen locally has been changed.  On V7 systems, profiling showed that
rnews spent about 1/2 of its time in fgets reading the history file.
It now uses the dbm(3) library to hash the message ID of each article.
To avoid incompatibilities between 2.9 and 2.10, if you have more than
one incoming news feed, run the provided cvt.hist program, which will
enter all the message ID's from your 2.9 format history file into
the hashed database.  The text history file is maintained as
it was in 2.9, for human use.
	cc cvt.hist.c -ldbm
	a.out $LIB

Other incompatibilities:

The headers now meet the USENET format standard and RFC822.  Headers
stored will look verbose, and contain much more information.  Headers
transmitted to other systems will work with old B news systems or new
ones.  The format of dates has been changed to conform to RFC822.

The user interface is roughly compatible, but the users will notice
a few differences, and there are a few extensions.  There are two
major differences in the interface.  The first is that postnews
now prompts for a "Distribution".  This defaults to the same as
the newsgroup (and will be omitted in this case), but allows the
user to conveniently enter a Distribution header line.  It also
makes them think about where their message is going to be sent
out to.  Any newsgroup(s) can be typed here, but normally you
just type either nothing, or a class distribution (e.g. "net",
"btl", "nj", "world"), restricting the distribution to that
class of sites.

Some less immediate interface changes:  Headers are displayed
in a format which is more compact but more information is displayed
than before.  If you want to see the article ID or full path,
or the date or newsgroups, the "h" command will show them.
The "H" command can be used for a full, verbose header dump.

Control messages are slightly different.  In particular, 2.10 now
requires that a newsgroup be created with a "newgroup" control message
(e.g. inews -C) before it can be used.  If an incoming article is in
some newsgroup that is not in the local active file, the article will
be locally stored in newsgroup "junk" and not forwarded to other systems.
This will prevent the accidental creation of typographical errors
by systems running older versions of news.  Also, the rmgroup control
message has been made less dangerous.  When an rmgroup message comes
around, you will be sent mail asking you to remove the group, but the
group will not actually be removed.  This prevents someone from
accidently or deliberately removing an important newsgroup such as
net.general.

Expire used to automatically archive news in /usr/spool/oldnews if
that directory existed.  Now it won't archive it unless you give
it the -a option.

When you ship your news software to a new site, you must now send
a copy of your active file, so that the appropriate newsgroup
directories and active file can be built.  This was not necessary
in 2.9 because unrecognized incoming newsgroups were automatically
created, but they are thrown away in 2.10.

After the conversion, you should create two new newsgroups: junk
and control.  The first is for messages that are in an invalid
newsgroup (so you can see what's getting thrown away).  The second
is for control messages.  Ordinary users probably won't want to
read either, but as administrator you might want to.  To create
them, mkdir $SPOOL/junk $SPOOL/control, and add
	junk 00000
	control 00000
to the end of $LIB/active.

Note the addition of some new programs to $LIB.  These include
recmail (a program which takes a mail message on stdin, figures
out who the To: and Cc: lines refer to, and invokes /bin/mail
with those arguments [not changed] and with the file on stdin;
recmail is used by the reply command) and caesar (a program used
to decode rotated jokes; it can also be used to create rotated jokes).

Version 2.10 has some experimental batching provisions in it.
See the batch and unbatch programs, and the F and U options in
the sys file, for more details.  
All this is very new, and while it appears to run
OK, caution is advised in installing batching software.  You must
also make sure your neighbor is prepared to receive batched news;
this is normally true if the neighbor is running at least 2.10.
