Subject: Arguments to checkgroups control messages

From: Julien ÉLIE <[email-masked]>
Date: Mon, 1 Jun 2009 10:23:07 +0200

Hi,

chkscope = 1*( 1*WSP ["!"] newsgroup-name )

These lines are equivalent:

    Control: checkgroups de !de.alt #2009021301
    Control: checkgroups !de.alt de #2009021301

Maybe it should be highlighted in the text (so that it is not
the last matching entry that prevails for each newsgroup).

By the way, it should also be said that every newsgroup should/must
be listed only *once* in a checkgroups.  I did not find the
information stated clearly.

-- 
Julien ÉLIE

« L'atour est fiel aux Huns valides. »

---

From: Russ Allbery <[email-masked]>
Date: Mon, 01 Jun 2009 14:20:17 -0700

> information stated clearly.

Hm -- I agree with both of these, but it's likely to go through another
round of AD or chair approval since it's beyond what the RFC Editor can
just change.  I'm not sure if the change is worth it, but I can prepare
a diff if people feel like it is.

-- 
Russ Allbery ([email-masked])             <http://www.eyrie.org/~eagle/>

---

From: Julien ÉLIE <[email-masked]>
Date: Tue, 2 Jun 2009 19:10:03 +0200

First of all, thanks, Russ, for your response on the RFC
editor's commit.

> a diff if people feel like it is.

I believe it is worthwhile... because of this mere sentence
on news.software.nntp <news:[email-masked]>:

  >> Besides, the patch totally breaks "checkgroups !hr.admin hr".
  >
  > Which, as I understand it, is incorrect - as exclusion patterns must trail.

Amusing it came up only a few hours after my original post to
ask for a better highlighting of this fact in USEPRO!
I believe it would be useful to future implementors...

-- 
Julien ÉLIE

« Il vaut mieux avoir de l'avenir que du passé. »

---

From: Julien ÉLIE <[email-masked]>
Date: Fri, 5 Jun 2009 07:39:32 +0200

Hi all,

>>> the last matching entry that prevails for each newsgroup).

The problems comes from that, in RFC 3977 (NNTP), when something
is matched, it is always because of the last entry:

  4.2.  Wildmat Semantics

   A wildmat is tested against a string and either matches or does not
   match.  To do this, each constituent <wildmat-pattern> is matched
   against the string, and the rightmost pattern that matches is
   identified.  If that <wildmat-pattern> is not preceded with "!", the
   whole wildmat matches.  If it is preceded by "!", or if no <wildmat-
   pattern> matches, the whole wildmat does not match.

   For example, consider the wildmat "a*,!*b,*c*":

   o  The string "aaa" matches because the rightmost match is with "a*".

   o  The string "abb" does not match because the rightmost match is
      with "*b".

In RFC 5537 (USEPRO), the order does not matter and the semantics
of "de !de.alt" works differently.
That's why this way of parsing should be better highlighted in USEPRO.

-- 
Julien ÉLIE

« Inter pradendum sit saepe parumque bibendum. »

---

From: Harald Alvestrand <[email-masked]>
Date: Mon, 08 Jun 2009 15:53:42 +0200

> That's why this way of parsing should be better highlighted in USEPRO.
It seems to me that since we're incompatible with something people will 
also know about (wildmat), flagging the incompatibility is important.

We can't go on making changes in AUTH48 (it's never going to be 
perfect), but if there's another reason for a delay and a diff, adding a 
sentence pointing out the semantic difference would be good.

               Harald

---

From: Russ Allbery <[email-masked]>
Date: Mon, 08 Jun 2009 11:21:50 -0700

Harald Alvestrand <[email-masked]> writes:

> It seems to me that since we're incompatible with something people
> will also know about (wildmat), flagging the incompatibility is
> important.
>
> perfect), but if there's another reason for a delay and a diff, adding
> a sentence pointing out the semantic difference would be good.

I was thinking that we could just say that all the exclusions should go
after the scope, but I forgot that we explicitly intended to permit
multiple scopes for the same checkgroups.

Here's a diff of the proposed change.  USEPRO is still blocked on
USEFOR, so we're not holding anything up at the moment, although I agree
that we really need to stop making changes at some point soon.  I've not
yet sent it to the RFC Editor pending discussion here.

This patch doesn't point out a difference with wildmat specifically;
instead, it specifies the algorithm that one should use.  That avoids
introducing a concept that isn't already present in USEPRO and I think
is even more precise than a caution.

Index: usepro.xml
===================================================================
--- usepro.xml	(revision 5949)
+++ usepro.xml	(working copy)
@@ -2022,14 +2022,24 @@
           the valid groups in all hierarchies or sub-hierarchies with a
           prefix listed in the &lt;chkscope> argument, excluding any
           sub-hierarchy where the &lt;chkscope> argument is prefixed by
-          "!".  If no &lt;chkscope> argument is given, it applies to all
+          "!".  For complex cases with multiple &lt;chkscope> arguments,
+          start from an empty list of groups, include all groups in the
+          checkgroups control message matching &lt;chkscope> arguments
+          without a "!" prefix, and then exclude all groups matching
+          &lt;chkscope> arguments with a "!" prefix.  Follow this method
+          regardless of the order of the &lt;chkscope> arguments in the
+          Control header field.</t>
+
+          <t>If no &lt;chkscope> argument is given, it applies to all
           hierarchies for which group statements appear in the body of the
-          message.  Since much existing software does not honor the
-          &lt;chkscope> argument, the body of the checkgroups control
-          message MUST NOT contain group statements for newsgroups outside
-          the intended scope and SHOULD contain a correct newsgroup list
-          even for sub-hierarchies excluded with "!" &lt;chkscope> terms.
-          News servers, however, MUST honor &lt;chkscope> as specified
+          message.</t>
+
+          <t>Since much existing software does not honor the &lt;chkscope>
+          argument, the body of the checkgroups control message MUST NOT
+          contain group statements for newsgroups outside the intended
+          scope and SHOULD contain a correct newsgroup list even for
+          sub-hierarchies excluded with "!" &lt;chkscope> terms.  News
+          servers, however, MUST honor &lt;chkscope> as specified
           here.</t>
 
           <t>The &lt;chksernr> argument may be any positive integer.  If

---

From: Julien ÉLIE <[email-masked]>
Date: Mon, 8 Jun 2009 21:08:29 +0200

Hi Russ,

> +          For complex cases with multiple &lt;chkscope> arguments,

That's pretty clear.
This algorithm is fine and easy to follow.  Thanks!

-- 
Julien ÉLIE

« O fortunatos nimium, sua si bona norint, agricolas. » (Virgile)