[NNTP] Future-proofing for including capabilities in responses

Matthias Andree matthias.andree at gmx.de
Mon Apr 4 01:12:05 PDT 2005


"Clive D.W. Feather" <clive at demon.net> writes:

> Is there really a need for this? Is the initial CAPABILITIES command really
> a problem? If you do it this way, you've still got the parsing problem,
> in that the line has to be parsed in a totally different manner to the
> normal CAPABILITIES response, and you've also got the question of what to
> do if the capabilities list is too long to fit into the initial
> greeting.

Right. The fewer parsers required, the better to implement.

> Oh, and we haven't reserved a character that can be used to replace the
> CRLF between capabilities. Finally, you're dumping a significant amount of
> extra data on the client when it hasn't even asked for it.

This is moot - as long as the client wasn't previously allowed to make
sense of what it is given, so that NNTP-1 clients can still cope with
the data, fine.

> I can see lots of mess building up and I just don't see the benefits.

Good point.

> That's not what I'm suggesting (I agree it's far too late). I'm suggesting
> a "multi-line response" extension, or - if you prefer - a "response can
> include capability information" extension. But it's an *extension* that
> only gets invoked when the client asks for it (and so expects it).

OK, this is an important point I'd support.

> Having said all that (yet again), let me point out that if you really do
> want to put data in the free text, then using a delimiter like [] is a bad
> idea for at least two reasons:
> - it's not unlikely that it's been used already (having semantics in
>   natural languages);
> - it leads to more questions, such as whether you can have multiple []
>   clauses and, if so, which ones have meaning.

These same arguments can also be used against using ANY "very unlikely"
statements. These don't hold in the real world, and whenever I hear
someone who appears to have grown up with English as native language
talk about character sets, I'm alarmed - nothing good comes of it,
usually.

> A better approach is to define a character sequence WHICH IS VERY UNLIKELY
> TO OCCUR IN THE WILD as an "end of free text" delimiter.

No. In the first place, the sequence must be readable without special
equipment. Hence, only printable (non-blank) ASCII characters are
eligible.

> Alternatively, say that the sequence only has special meaning at the
> *start* of the free text, and then indicates that the "free text"
> isn't.

Which overloads "free-text" fields and makes the responses likely to
appear in places where the user looks.

> I would suggest that suitable choices for the delimiter would be:
> - %x1C (the "field separator" control character);

not printable, unlike the rest of NNTP.

> - %xC0.9C (which is the same thing encoded in an invalid UFT-8 way; this
>   technically violates the existing syntax rules, which may or may not be
>   a good idea);

illegal and hence not an option. The client would have to have two UTF-8
decoders, one regular, and one - along with the whole set of library
functions or string operations - that treat broken data.
No-one will follow suit, IOW this is going to be a still birth.

> - a rare control code, such as %xC2.95 (Unicode U+0095 "Message Waiting")
>   or %xE2.81.A3 (U+2063 "Invisible Separator");

not printable ASCII, hence not an option.

> - %xCD.B3.CE.87 (U+0373 U+0387 "erotimatiko" followed by "ano teleia",
>   which I picked because these characters are unlikely to occur in that
>   order, are only two octets in UTF-8, *and* are not preserved by any of
>   the four Unicode normalisation forms);

Looks ugly. Probably is. And it's not printable ASCII...

> - if you really feel it has to be ASCII printable text, then something
>   like "~fReE!" or something equally unreadable.

Urgh. :-)

> But I repeat that I feel it's a bad idea, and you've not justified the
> need.

OK.

-- 
Matthias Andree



More information about the ietf-nntp mailing list