John C Klensin <> Wed, 25 June 2008 17:37 UTC

Return-Path: <>
Received: from [] (localhost []) by (Postfix) with ESMTP id 2511A3A6A09; Wed, 25 Jun 2008 10:37:41 -0700 (PDT)
Received: from localhost (localhost []) by (Postfix) with ESMTP id 071773A6961 for <>; Wed, 25 Jun 2008 10:37:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: 1.168
X-Spam-Level: *
X-Spam-Status: No, score=1.168 tagged_above=-999 required=5 tests=[AWL=3.767, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id XRYgOhSQATIl for <>; Wed, 25 Jun 2008 10:37:39 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id D98723A6876 for <>; Wed, 25 Jun 2008 10:37:38 -0700 (PDT)
Received: from [] (helo=p3.JCK.COM) by with esmtp (Exim 4.34) id 1KBYw7-0008zb-FW; Wed, 25 Jun 2008 13:37:39 -0400
Date: Wed, 25 Jun 2008 13:37:38 -0400
From: John C Klensin <>
To: Scott Brim <>
Subject: Re: SHOULD vs MUST
Message-ID: <4FB4C3E1F32D9BE108374D5D@p3.JCK.COM>
In-Reply-To: <>
References: <> <> <> <> <> <g3ror8$2b9$> <> <> <2D990430F5F5D3C7984BDFDF@p3.JCK.COM> <>
X-Mailer: Mulberry/4.0.8 (Win32)
MIME-Version: 1.0
Content-Disposition: inline
Cc: IETF Discussion <>
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: IETF Discussion <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

--On Wednesday, 25 June, 2008 13:02 -0400 Scott Brim
<> wrote:

> On 6/25/08 8:24 AM, John C Klensin allegedly wrote:
>> --On Wednesday, 25 June, 2008 07:59 -0400 Scott Brim
>> <> wrote:
>>> ... and draft authors should include explanations in their
>>> drafts of the reasons an implementor might legitimately have
>>> for not implementing the "should".  For example, an older
>>> operating system that does not support a new capability.
>> Do you really mean, e.g., 
>> 	... where feasible and, in the author's judgment,
>> 	appropriate, it is desirable to include explanations or
>> 	illustrations of the exception cases in drafts that use
>> ???
>> I've run into a number of situations over the years in which
>> there are known edge cases that prevent a MUST but where those
>> edge cases are rare and obscure enough that describing them
>> would require extensive text.
> My rule of thumb is: when you're writing the draft if
> something is not a MUST, ask yourself "why not?" and write
> down your answer.  You can be brief but make it clear that the
> SHOULD is a MUST with exceptions.
> There's no way we should have strict process rules about this.
> The IETF has enough rules as it is.  However, explanations of
> SHOULDs do make better standards.  The point is to give
> guidance to implementors.  I did an informal survey last year
> and found that some implementors treat every SHOULD as a MUST,
> but more of them just treat a SHOULD as a MAY, essentially to
> be ignored.  An explanation of the circumstances surrounding a
> SHOULD will lead to a lot more consistency in implementation.
> Many SHOULDs in RFCs are because there are old implementations
> that need to be taken into account, or because some capability
> isn't widely possible yet but will be within the lifetime of
> the standard.  If a MUST becomes a SHOULD to take that into
> account, and you explain it, your chances of getting rid of
> non-MUST-capable implementations eventually goes up
> tremendously.  So, to reiterate, when you're writing the draft
> if something is not a MUST, ask yourself "why not?" and write
> down your answer.

Certainly we are in complete agreement about the principles
here.  We probably also agree about Fred's slightly different
take, which is thinking about whether a proposed MUST really
might have exception cases that we would prefer to keep within
the bounds of the standard.  My concern is about anything that
might get turned into another rule while various of us are
trying to concentrate on technical work and not, e.g., watching
every entry in the IESG's tracker logs.

More generally, thinking carefully about these conformance
statements is A Good Thing and should be encouraged whenever



IETF mailing list