[net.news.group] New newgroup suggestion--Re: Permanent Postings

wmartin@brl-tgr.ARPA (Will Martin ) (12/19/84)

> 
> I feel that there is a need for a newsgroup which can be used by those
> who wish to ask questions and give answers, ESPECIALLY recurrant
> questions and answers.  Perhaps there is a need for a net.audio nettiquette
> document that lists the 25 most common questions (or something like that)
> that is always put at the beginning of the net.audio articles, and that 
> doesn't expire, thus providing a set of answers for the newcomer.  (Query to
> nettrash hackers--It that possible?  I know that there are some
> newuser announcements, but I don't know if we can put one in net.audio.)
> 
This request brings up a concept I have long felt is needed in many news 
groups -- permanent postings. There are things that occur recurringly in
practically every group, which should sit on each host as postings numbered
1 through 10 or something, never expire, and be viewed by each newcomer
when they start reading news and when they subscribe to or begin reading that 
particular group.

For example, the "net.announce.newusers" messages shouldn't have to be sent
out anew each month; they should be postings #1-4 in that group and never
expire, but only be replaced by a new edition when changes are made.

In net.music.classical, the "list of composers" posting should remain as #1,
and always be there, perhaps being edited and expanded but replaced in place.

In net.jokes, the "canonical light-bulb joke" list, and similar collections,
should remain unexpired as the low-numbered items. In every group, each 
recurring topic should produce a posting with the definitive collection
of contributions/answers/explanations, which should always be there.

Also, we often see suggestions that each group should have a "statement
of purpose" or definition of limitations, which new users will see when
they first see the group. What better candidate for permanent posting #1
in each group?

I realize that implementing this will require software changes. Not only
will the concept of "permanence" be needed, so the expire process will
ignore these items, but a methodology for replacement-in-place will be
needed, so a revised "statement of purpose" will go in as the new #1
instead of just being added as the next latest posting (though it wouldn't
be a bad idea for this sort of thing to go in BOTH places -- as the
replaced permanent #1 and also as an ordinary eventually-expired new
posting; thus both new readers and old readers will see it).

Also, a software change to override the automatic assignment of new numbers
for items which are edited versions of permanent postings will be
needed. It would be nice if this was universal net-wide; that is,
net.audio #4 is the same notice on every machine that gets net.audio.

Of course, this does mean that someone has to have the authority to generate
these special articles and also be the reviewer of submitted revisions
or suggested enhancements or additions. Maybe the moderators can do this
for the "net" groups related to their fields of expertise? This still
leaves a number of groups with no current moderator affiliation; perhaps
the longest-lived major participant in each group could be the one
who would maintain such permanent postings for that group? It shouldn't
be difficult; after the initial set-up, there would be little revision
or additions, I would think. Unfortunately, I doubt that we could leave
such permanent postings alterable by anyone; there is too much potential
for abuse there (someone making a 2000-line posting permanent, eating up
space all over the net, for example).

This appears to be worthwhile to me, but, since I'm no software type,
I wouldn't be doing the work, so I leave it to the net wizards to 
assign a value to this. It looks like it would solve a few problems and
eliminate a number of recurring complaints, though. Discussion?

Will Martin

USENET: seismo!brl-bmd!wmartin     or   ARPA/MILNET: wmartin@almsa-1.ARPA

dmmartindale@watcgl.UUCP (Dave Martindale) (12/20/84)

In article <6662@brl-tgr.ARPA> wmartin@brl-tgr.ARPA (Will Martin ) writes:
>This request brings up a concept I have long felt is needed in many news 
>groups -- permanent postings. There are things that occur recurringly in
>practically every group, which should sit on each host as postings numbered
>1 through 10 or something, never expire, and be viewed by each newcomer
>when they start reading news and when they subscribe to or begin reading that 
>particular group.
>
Will then lists a set of potential problems with this.  There is another one,
though, that he didn't mention.  Older versions of news used a fixed-size
bitmap to keep track of unread articles, limiting the maximum possible article
number to some value.  2.10.2 news has changed the algorithm so that the
first bit in the bitmap corresponds to the first unexpired article, meaning
that there is only a limit on the difference between the smallest and
largest article number.  As long as all articles expire on a regular basis,
this works fine.  But if you have a low-numbered article that never expires,
readnews will eventually overflow the bitmap and blow up.  When I installed
2.10.2 on machines at Waterloo, I had to remove several such articles.
Fixing this will require a change in the bitmap algorithms.

msc@qubix.UUCP (Mark Callow) (12/21/84)

> This request brings up a concept I have long felt is needed in many news 
> groups -- permanent postings. There are things that occur recurringly in
> practically every group, which should sit on each host as postings numbered
> 1 through 10 or something, never expire, and be viewed by each newcomer
> when they start reading news and when they subscribe to or begin reading that 
> particular group.
> 
> For example, the "net.announce.newusers" messages shouldn't have to be sent
> out anew each month; they should be postings #1-4 in that group and never
> expire, but only be replaced by a new edition when changes are made.

This is a good idea indeed.  The hardest part of implementation seems to
be the replacement in place.  I think we should do it.
-- 
From the TARDIS of Mark Callow
msc@qubix.UUCP,  qubix!msc@decwrl.ARPA
...{decvax,ucbvax}!decwrl!qubix!msc, ...{amd,ihnp4,ittvax}!qubix!msc

gregbo@houxm.UUCP (Greg Skinner) (12/21/84)

If you use cron jobs to expire news, you can always have the first few files
ignored.
-- 
			Baby tie your hair back in a long white bow ...
			Meet me in the field, behind the dynamo ...

Greg Skinner (gregbo)
{allegra,cbosgd,ihnp4}!houxm!gregbo

dmmartindale@watcgl.UUCP (Dave Martindale) (12/23/84)

In article <1039@houxm.UUCP> gregbo@houxm.UUCP (Greg Skinner) writes:
>If you use cron jobs to expire news, you can always have the first few files
>ignored.

I don't understand this comment at all.  The article I wrote (to which
Greg is referring) was trying to point out that if you have articles that
never expire, eventually readnews will die of a "bitmap too small" error
while trying to look at that group.  The problem is that the span in
article numbers between the oldest unexpired article and the most recently
arrived one is limited to a fixed manifest constant.  If you leave the
old articles around forever, and have the "least article number"
field of the active file remain at its small value, you will eventually
exceed this constant and readnews will simply quit, without even allowing
you to go on to another group.  If, on the other hand, you have expire
update the active file as if the ancient articles did not exist, then
readnews will never find them (even for new users) and so they might as
well have been deleted.

mark@cbosgd.UUCP (Mark Horton) (12/23/84)

It's an interesting idea, but in effect, posting an article with an
expiration date 5 years in the future has the same result using
today's software.

The following two problems are not dealt with by the current scheme,
and probably not with any reasonably simple scheme for permanent postings:

(1) People who use "find . -mtime +14" to remove old news.  If expire
didn't have any bugs I would never do this, but in practice I seem to
have to do it every once in a while.

(2) New sites that were not on Usenet when the articles were posted.

Statements of charter for a newsgroup, commonly asked questions, and
rules usually need to be updated regularly anyway.  It's not hard to
set a medium term expiration date and repost an updated version at a
regular interval.  Of course, we have to be sure that these regular
postings don't significantly increase the amount of traffic on the net.

	Mark Horton

chip@t4test.UUCP (12/26/84)

> From: wmartin@brl-tgr.ARPA (Will Martin )
> Date: 19 Dec 84 16:48:19 GMT
> 
> This request brings up a concept I have long felt is needed in many news
> groups -- permanent postings.

Our experience tells us it is a nice idea, but tough to implement.  Locally
we have two kinds of newsgroups:  one type (loc.all) is exipred regularly,
and another (info.all) is never expired.  The info newsgroups are moderated
locally and contain reference information and documentation.  However, this
presumes that the information does not require revision.  That assumption
is a good and reasonable one--for a few weeks :-)  Maintanance of such is
non-trivial.

Even though I see problems with administering a permanent-article system,
the hooks are already there.  Rather than creating magic article numbers
which aren't removed (as Will suggested), an absurdly long expiration time
creates the same effect.  After a few weeks all other articles will expire
normally, and the unexpired articles would be the first ones a new user would
see.

-- 

Chip Rosenthal, Intel/Santa Clara
{cbosgd,idi,intelca,icalqa,kremvax,qubix,ucscc} ! {t4test,t12tst} ! {chip,news}

gregbo@houxm.UUCP (Greg Skinner) (12/26/84)

> From: dmmartindale@watcgl.UUCP (Dave Martindale)

> In article <1039@houxm.UUCP> gregbo@houxm.UUCP (Greg Skinner) writes:

>>If you use cron jobs to expire news, you can always have the first few files
>>ignored.

> I don't understand this comment at all.  

Let me clarify.

If you want to have articles that *never* expire, you can use cron to keep them
around.  We do nightly expires of netnews.  The lines in crontab are something
like:

touch /usr/spool/news/net/announce/newusers/* 
cd /usr/spool/news
find . -mtime +14 -exec rm {} \;

Before executing these two lines, the desired files which can be kept are just
touched, thereby the find ignores them.  I've seen it posted by Mark Horton
that the find(1) method of expiring news articles is nonstandard, but it seems
to work for us pretty well.  We are pretty much forced to do this, otherwise
/usr tends to run out of space on our machines.
-- 
			Baby tie your hair back in a long white bow ...
			Meet me in the field, behind the dynamo ...

Greg Skinner (gregbo)
{allegra,cbosgd,ihnp4}!houxm!gregbo

dmmartindale@watcgl.UUCP (Dave Martindale) (12/27/84)

In article <1043@houxm.UUCP> gregbo@houxm.UUCP (Greg Skinner) writes:

>Let me clarify.
>
>If you want to have articles that *never* expire, you can use cron to keep them
>around.  We do nightly expires of netnews.  The lines in crontab are something
>like:
>
>touch /usr/spool/news/net/announce/newusers/* 
>cd /usr/spool/news
>find . -mtime +14 -exec rm {} \;
>
>Before executing these two lines, the desired files which can be kept are just
>touched, thereby the find ignores them.  I've seen it posted by Mark Horton
>that the find(1) method of expiring news articles is nonstandard, but it seems
>to work for us pretty well.  We are pretty much forced to do this, otherwise
>/usr tends to run out of space on our machines.

Ok, now I see that you didn't understand what I was talking about, so I'll
expand a bit:
With older versions of news (before 2.10.2) there was an "expire"
program that most sites used to delete old news articles.  If an
article lacked an "Expires:" header line, it was deleted after a
certain default expiry period; if the Expires header was present, that
date was used instead.  This is generally a useful feature, since it
allows you to have articles that expire when they are really no longer
useful (the announcement about the birthday tomorrow can expire
tomorrow night, while the film schedule for the local repertory cinema
can remain around for the whole month it covers).  And expire performs
a housekeeping task too - it cleans up the "history" file, deleting
entries for articles that have expired.

The method of using "find" as you have certainly does delete old news,
and probably runs faster than expire since it doesn't need to open
every article looking for an Expires: line, but you lose the housekeeping
functions.

In 2.10.2 news, you simply must use "expire".  As well as housecleaning
the history file, it also updates the active file, which has been
expanded to include a field which is the article-number of the lowest-
numbered unexpired article in the newsgroup.  If you don't run
expire, (or if you do run it and some article never expires, which is
what my original article was about) the numerical distance between this
lowest-article-number and the number of the most recently-received article
eventually reaches the point where "readnews" will become upset and quit
if you ever try to read that group.

The reason for the difference in behaviour is that older versions of news
used a large bitmap (8K bits) with an origin of 0 or 1 to keep track of
articles that have been read, and thus couldn't handle article-numbers
greater than 8192 at all.  2.10.2 news uses a smaller bitmap (2K bits I
think) but with an origin of the first unread article present in
the group, which is obtained from the active file.  So, it can handle
almost arbitrarily-large article numbers, but only if the difference
between the oldest and newest unexpired article numbers is under 2K.

Does this make sense now?

By the way, our crontab entry for expiring news looks like:
30 6 * * * su news -c "exec /usr/lib/news/expire -e 14 -v >! /usr/tmp/expire" >/dev/console 2>&1
where the useful part is the "expire", "-e 14" sets the default expiry
for this machine to 14 days rather than the campus-wide compiled-in value
of 28, and the -v just produces a listing of what it did in /usr/tmp/expire
so I can look at it later if I want.  The other stuff makes sure it is run
as a non-root process and sends any error messages to a place where they
may be seen.