Re: RFC 2119 terms, ALL CAPS vs lower case

Dave Cridland <dave@cridland.net> Wed, 16 May 2012 20:29 UTC

Return-Path: <dave@cridland.net>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6855021F8702 for <ietf@ietfa.amsl.com>; Wed, 16 May 2012 13:29:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.587
X-Spam-Level:
X-Spam-Status: No, score=-2.587 tagged_above=-999 required=5 tests=[AWL=0.012, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sg8UGuG5ul5M for <ietf@ietfa.amsl.com>; Wed, 16 May 2012 13:29:50 -0700 (PDT)
Received: from peirce.dave.cridland.net (peirce.dave.cridland.net [IPv6:2001:470:1f09:882:2e0:81ff:fe29:d16a]) by ietfa.amsl.com (Postfix) with ESMTP id 933B021F86FA for <ietf@ietf.org>; Wed, 16 May 2012 13:29:50 -0700 (PDT)
Received: from localhost (peirce.dave.cridland.net [127.0.0.1]) by peirce.dave.cridland.net (Postfix) with ESMTP id 0947E116808F; Wed, 16 May 2012 21:29:44 +0100 (BST)
X-Virus-Scanned: Debian amavisd-new at peirce.dave.cridland.net
Received: from peirce.dave.cridland.net ([127.0.0.1]) by localhost (peirce.dave.cridland.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JDrq8nlZClB1; Wed, 16 May 2012 21:29:40 +0100 (BST)
Received: from puncture (puncture.dave.cridland.net [IPv6:2001:470:1f09:882:221:85ff:fe3f:1696]) by peirce.dave.cridland.net (Postfix) with ESMTPA id 868B4116808D; Wed, 16 May 2012 21:29:40 +0100 (BST)
Subject: Re: RFC 2119 terms, ALL CAPS vs lower case
References: <562A61B995B24BD854A4D154@[192.168.0.2]> <m262bwchr9.wl%randy@psg.com> <08ab01cd3372$65934110$30b9c330$@olddog.co.uk> <tslaa18w21n.fsf@mit.edu> <4FB3E99D.1040606@stpeter.im> <4FB3EDB8.60809@gmail.com> <m2mx57c2g5.wl%randy@psg.com>
In-Reply-To: <m2mx57c2g5.wl%randy@psg.com>
MIME-Version: 1.0
Message-Id: <22965.1337200180.525898@puncture>
Date: Wed, 16 May 2012 21:29:40 +0100
From: Dave Cridland <dave@cridland.net>
To: Randy Bush <randy@psg.com>, IETF-Discussion <ietf@ietf.org>, Brian E Carpenter <brian.e.carpenter@gmail.com>
Content-Type: text/plain; delsp="yes"; charset="iso-8859-1"; format="flowed"
Content-Transfer-Encoding: 8bit
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ietf>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 May 2012 20:29:51 -0000

On Wed May 16 21:10:02 2012, Randy Bush wrote:
> > Authors must be fastidious about this.
> 
> s/this/documents/

RFC 2119 §6 says:

   Imperatives of the type defined in this memo must be used with care
   and sparingly.  In particular, they MUST only be used where it is
   actually required for interoperation or to limit behavior which has
   potential for causing harm (e.g., limiting retransmisssions).  For
   example, they must not be used to try to impose a particular method
   on implementors where the method is not required for
   interoperability.

I note two things:

1) RFC 2119 also uses lower-case "must" and "may" throughout.

2) RFC 2119 also clearly states that using the terms too much will  
harm interoperability.

The second is the one I feel we have violated much more, and caused  
much more damage, than any possible problem with the first.

Consider:

"An octet may contain 0-255".

This is most certainly not going to be helped if we say:

"An octet MAY contain 0-255".

We could either rephrase:

"An octet contains 0-255".

Or use a different awkward word - although up with this I will not  
put:

"An octet might contain 0-255" - or it might not?

But many requirements can be re-cast as statements of fact about  
valid protocol:

"The Foo octet MUST lie between 0 and 127 inclusive; that is, the  
highest bit MUST NOT be set."

As Pete Resnick, I think, once said, these terms are not just a stick  
to beat people with.

"A valid Foo octet lies between 0 and 127 inclusive; that is, the  
highest bit is never set."

That's just as clear, to me, and allows me to concentrate the MUST  
stick where I actually do want to stress a real problem, perhaps:

"Receivers of an invalid Foo octet - that is, one with the highest  
bit set - MUST emit the 'Invalid Foo' error, and therefore terminate  
the session immediately."

Overuse of RFC 2119 language reduces its utility.

Dave.
-- 
Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net
  - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
  - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade