[NNTP] LIST EXTENSIONS (again)

Ken Murchison ken at oceana.com
Tue Nov 2 06:48:31 PST 2004


Clive D.W. Feather wrote:

> Okay, let me have another go, this time assuming that we only want a
> minimal version indication for LIST EXTENSIONS. Here's a proposal:
> 
> (0) Adopt the "restrict characters in command names and extension labels
> proposal".

If this is the proposal to allow upper/lower and numeric chars (with a 
few extras), I agree.


> (1) Make LIST EXTENSIONS mandatory.

Absolutely.


> (2) Require a version entry in the output from LIST EXTENSIONS. However,
> rather than "NNTPv2", I would suggest:
> 
>     _RFC_ 3977

My only problem with tying the capability to a particular document 
revision, is that the document may be updated in the future to fix 
errata, ambiguities, etc without changing the underlying functionality. 
  For example, RFC3977 gets updated by RFC4321 without change of 
functionality, should the server then advertise "_RFC_ 4321" or continue 
to advertise "_RFC_ 3977"?  I don't think either case is optimal.  By 
choosing a somewhat arbitrary string like "NNTPv2", we're RFC 
revision-proof, and still have the intended behavior.


> (this assumes that _ is not a permitted character); 3977 is the number of
> the final RFC for NNTP. [This approach has been used successfully in other
> standards, and allows more flexibility than just an arbitrary string.]

Has RFC3977 actually been reserved for the new NNTP spec (ala 
RFC282[12]), or did you just pick this as an example?  I think reserving 
3977 it is a good idea, but we'd need to move fast if it hasn't already 
been done, since the RFCs are up to at least 3955 already.


> (3) A conforming server MUST NOT advertise any extension label, other
> than one beginning with X, not in the IANA registry.

Agreed.


> (4) Any specification in extensions should be phrased along the lines of:
> 
>     This specification requires that the server conform to [NNTP],
>     indicated by "_RFC_ 3977" or some higher number in the output from
>     LIST EXTENSIONS.
> 
> or:
> 
>     If the server conforms to [NNTP], indicated by "_RFC_ 3977" or some
>     higher number in the output from LIST EXTENSIONS, then ....
>     Otherwise ....

Yes, we would need some sort of language along these lines.


> (5) I'd *like* to see this entry also used to indicate at least some
> of the optional things that are in the core protocol. For example:
> 
>     _RFC_ 3977 MODE_READER         indicates MODE READER is significant
> 
>     _RFC_ 3977 LIST_OPTIONAL       indicates all four optional LIST
>                                    commands (excludes OVERVIEW.FMT) are
>                                    supported

I like the idea of advertising whether MODE READER is required and which 
optional LIST commands are supported, but I don't see where our new 
token needs to be used as part of this.

Is it realistic to assume that if a server supports one of the optional 
LIST commands, that it would support all of them?  I don't know, I'm 
just asking (especially since Cyrus nntpd which I wrote only currently 
supports LIST NEWSGROUPS).  It seems like it would be better to 
enumerate them as part of the extension label, e.g.:

[C] LIST EXTENSIONS
[S] MODE_READER
[S] LIST ACTIVE.TIMES DISTRIBUTIONS DISTRIB.PATS NEWSGROUPS
[S] .

Obviously, any combination of the four LIST arguments is valid.

If we nail down capabilities for these two items, then a client can 
learn everything it needs to from LIST EXTENSIONS and no longer has to 
guess or do a trial-and-error.  This is a "good thing" IMHO.

-- 
Kenneth Murchison     Oceana Matrix Ltd.
Software Engineer     21 Princeton Place
716-662-8973 x26      Orchard Park, NY 14127
--PGP Public Key--    http://www.oceana.com/~ken/ksm.pgp



More information about the ietf-nntp mailing list