Re: I'm struggling with 2219 language again

ned+ietf@mauve.mrochek.com Sat, 05 January 2013 01:16 UTC

Return-Path: <ned+ietf@mauve.mrochek.com>
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 A149F21F88E6 for <ietf@ietfa.amsl.com>; Fri, 4 Jan 2013 17:16:38 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 87NuRx+dwCuA for <ietf@ietfa.amsl.com>; Fri, 4 Jan 2013 17:16:38 -0800 (PST)
Received: from mauve.mrochek.com (mauve.mrochek.com [66.59.230.40]) by ietfa.amsl.com (Postfix) with ESMTP id 161CA21F872C for <ietf@ietf.org>; Fri, 4 Jan 2013 17:16:38 -0800 (PST)
Received: from dkim-sign.mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01OOLLQ7DW1S004K1U@mauve.mrochek.com> for ietf@ietf.org; Fri, 4 Jan 2013 17:11:33 -0800 (PST)
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id <01OOJ8U2Q2U800008S@mauve.mrochek.com> (original mail from NED@mauve.mrochek.com) for ietf@ietf.org; Fri, 4 Jan 2013 17:11:28 -0800 (PST)
From: ned+ietf@mauve.mrochek.com
Message-id: <01OOLLQ4P2AE00008S@mauve.mrochek.com>
Date: Fri, 04 Jan 2013 17:05:16 -0800
Subject: Re: I'm struggling with 2219 language again
In-reply-to: "Your message dated Fri, 04 Jan 2013 17:23:42 -0500" <201301042223.r04MNgRA020196@cichlid.raleigh.ibm.com>
MIME-version: 1.0
References: <7ED55FF1-3E1A-4DF7-918E-07790517B848@softarmor.com> <50E68CB5.4010107@gmail.com> <201301042223.r04MNgRA020196@cichlid.raleigh.ibm.com>
To: Thomas Narten <narten@us.ibm.com>
Cc: Dean Willis <dean.willis@softarmor.com>, ietf@ietf.org
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: Sat, 05 Jan 2013 01:16:38 -0000

> +1 to Brian and others saying upper case should be used sparingly, and
> only where it really matters. If even then.

That's the entire point: The terms provide additional information as to 
what the authors consider the important points of compliance to be.

> The notion (that some have) that MUST means you have to do something
> to be compliant and that a "must" (lower case) is optional is just
> nuts.

In some ways I find the use of SHOULD and SHOULD NOT be to be more useful
than MUST and MUST NOT. MUST and MUST NOT are usually obvious. SHOULD and
SHOULD NOT are things on the boundary, and how boundary cases are handled
is often what separated a good implementation from a mediocre or even poor
one.

> If the ARP spec were to say, "upon receipt of an ARP request, the
> recipient sends back an ARP response," does the lack of a MUST there
> mean the response is optional? Surely not. And if we make it only a
> SHOULD (e.g., to allow rate limiting of responses - a very reasonable
> thing to do), does lack of MUST now make the feature optional from a
> compliance/interoperability perspective?

> The idea that upper case language can be used to identify all the
> required parts of a specificition from a
> compliance/conformance/interoperability perspective is just
> wrong. This has never been the case (and would be exceeding painful to
> do), though (again) some people seem to think this would be useful and
> thus like lots of upper case language.

At most it provides the basis for a compliance checklist. But such checklists
never cover all the points involved in compliance. Heck, most specifications in
toto don't do that. Some amount of common sense is always required.

> Where you want to use MUST is where an implementation might be tempted
> to take a short cut -- to the detriment of the Internet -- but could
> do so without actually breaking interoperability. A good example is
> with retransmissions and exponential backoff. You can implement those
> incorrectly (or not at all), and still get "interoperability". I.e.,
> two machines can talk to each other. Maybe you don't get "good"
> intereoperability and maybe not great performance under some
> conditions, but you can still build an interoperabile implementation.

> IMO, too many specs seriously overuse/misuse 2119 language, to the
> detriment of readability, common sense, and reserving the terms to
> bring attention to those cases where it really is important to
> highlight an important point that may not be obvious to a casual
> reader/implementor.

Sadly true.

				Ned