Subject: [usefor] [Errata Verified] RFC5536 (5116)

From: RFC Errata System <[email-masked]>
Date: Wed, 27 Sep 2017 10:23:23 -0700 (PDT)

The following errata report has been verified for RFC5536,
"Netnews Article Format". 

--------------------------------------
You may review the report below and at:
http://www.rfc-editor.org/errata/eid5116

--------------------------------------
Status: Verified
Type: Technical

Reported by: Paul Kyzivat <[email-masked]>
Date Reported: 2017-09-14
Verified by: Alexey Melnikov (IESG)

Section: 3

Original Text
-------------
   fields          =/ *( approved /
                         archive /
                         control /
                         distribution /
                         expires /
                         followup-to /
                         injection-date /
                         injection-info /
                         lines /
                         newsgroups /
                         organization /
                         path /
                         summary /
                         supersedes /
                         user-agent /
                         xref )

Corrected Text
--------------
   optional-field  = <see RFC 5322 Section 3.6.8>

   news-fields     =  approved /
                      archive /
                      control /
                      distribution /
                      expires /
                      followup-to /
                      injection-date /
                      injection-info /
                      lines /
                      newsgroups /
                      organization /
                      path /
                      summary /
                      supersedes /
                      user-agent /
                      xref

   optional-field  =/    news-fields

Notes
-----
In Section 3 of RFC5536, the ABNF syntax provided does not do what is clearly intended. What is specified is:

    fields          =/ *( approved /
                          archive /
                          control /
                          distribution /
                          expires /
                          followup-to /
                          injection-date /
                          injection-info /
                          lines /
                          newsgroups /
                          organization /
                          path /
                          summary /
                          supersedes /
                          user-agent /
                          xref )

and that extends RFC5322:

    fields          =   *(trace
                          *optional-field /
                          *(resent-date /
                           resent-from /
                           resent-sender /
                           resent-to /
                           resent-cc /
                           resent-bcc /
                           resent-msg-id))
                        *(orig-date /
                        from /
                        sender /
                        reply-to /
                        to /
                        cc /
                        bcc /
                        message-id /
                        in-reply-to /
                        references /
                        subject /
                        comments /
                        keywords /
                        optional-field)

    message         =   (fields / obs-fields)
                        [CRLF body]

The problem is with the way things are grouped. Let me give a simpler example:

    foo = *("a" / "b") / *("c" / "d")

This means the following are valid: ab aabb bab cd ccdd dcd
But the following are not: abcd ac

I think it is clear that the latter is intended to be valid, for which the syntax would be:

    foo = *("a" / "b" / "c" / "d")

It isn't easy to do a valid syntax extension that achieves this effect 
because of way the ABNF of RFC5322 is structured. However, after offline 
discussion, we realized that RFC5322 already has an extension point for 
new headers via the <optional-field> rule. Along with that, RFC3864 
established a process for registering header fields with IANA.

The above fix is based on discussion with Pete Resnick (editor of RFC 5322), Julien ÉLIE, Alexey Melnikov and Paul Kyzivat.

An alternative fix from Paul Kyzuvat is:

So, my recommendation is that to fix this, remove from section 3 the 
extension of the <fields> rule:

    fields          =/ *( approved / ...
                          xref )

Instead, simply rely on the text to specify the newly defined header 
fields, and the IANA registration to link them to RFC5322.

--------------------------------------
RFC5536 (draft-ietf-usefor-usefor-12)
--------------------------------------
Title               : Netnews Article Format
Publication Date    : November 2009
Author(s)           : K. Murchison, Ed., C. Lindsey, D. Kohn
Category            : PROPOSED STANDARD
Source              : Usenet Article Standard Update
Area                : Applications
Stream              : IETF
Verifying Party     : IESG