Re: [ietf-dkim] Re: Use of LWSP in ABNF -- consensus call

John C Klensin <> Thu, 17 May 2007 17:35 UTC

Return-path: <>
Received: from [] ( by with esmtp (Exim 4.43) id 1Hojt3-00062T-C3; Thu, 17 May 2007 13:35:37 -0400
Received: from discuss by with local (Exim 4.43) id 1Hojt3-00062O-04 for; Thu, 17 May 2007 13:35:37 -0400
Received: from [] ( by with esmtp (Exim 4.43) id 1Hojt2-00062G-Mh for; Thu, 17 May 2007 13:35:36 -0400
Received: from ([] by with esmtp (Exim 4.43) id 1Hojt2-0002Pj-61 for; Thu, 17 May 2007 13:35:36 -0400
Received: from [] (helo=p3.JCK.COM) by with esmtp (Exim 4.34) id 1Hojsy-00073V-Qn; Thu, 17 May 2007 13:35:33 -0400
Date: Thu, 17 May 2007 13:35:31 -0400
From: John C Klensin <>
To: Sam Hartman <>
Subject: Re: [ietf-dkim] Re: Use of LWSP in ABNF -- consensus call
Message-ID: <E09D6916A9D19A52976E4567@p3.JCK.COM>
In-Reply-To: <>
References: <> <> <> <> <> <1504A69099CF1B62F66FE576@p3.JCK.COM> <>
X-Mailer: Mulberry/4.0.8 (Win32)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-Spam-Score: 0.0 (/)
X-Scan-Signature: b280b4db656c3ca28dd62e5e0b03daa8
Cc:, Apps Discuss <>, Harald Alvestrand <>, Dave Crocker <>, Paul Overell <>, IETF General Discussion Mailing List <>
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: general discussion of application-layer protocols <>
List-Unsubscribe: <>, <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>

--On Thursday, 17 May, 2007 12:42 -0400 Sam Hartman
<> wrote:

> I don't see why the standardized definition is the obvious
> right place to fix things.  I thought we were committed to
> running code.  To me, one implication of that commitment is
> that sometimes the right fix is for the spec to change rather
> than the implementations.
> In a terminology conflict, this often involves moving away
> from the term that has two conflicting uses to terms that are
> more clear.
> Ultimately cases like this should be evaluated based on
> whether the final result is more clear overall.


Two observations; I hope you don't think they are contradictory.

(1) We regularly get ourselves into intellectual and procedural
difficulties by treating specifications about how protocol
specifications are written as if they were protocol
specifications.  When we try to avoid that, we get ourselves
into worse problems.  Using rules that are more or less
arbitrary, we make some of these documents Proposed Standards
and then try to progress them, we make others into BCPs and,
now, we make still others into IONs.

If we are going to standardize a definitional requirement or
method -- whether it is ABNF or IPR boilerplate or something --
we need to get it right as a self-contained definition and then
live with it.  We should certainly revise and replace it if it
turns out to be unworkable (as has happened with IPR work) or if
the definition turns out to be inadequate to permit an
unambiguous interpretation (that issue spills over into my
second observation, below).  But, once other specifications
start to depend on the definitions that are there, and show
those definitions to be adequate, we should not be talking about
deprecating definitions unless we are prepared to "that was
wrong, we need to start over (even though some of the older
material may still be useful)".    Again, please note the
similarity to the IPR work.

(2) If we pretend that the ABNF metalanguage and definitions are
actually a protocol specification, then we need to evaluate it
as one.  Then, we have the following criteria (which we usually
don't state quite this precisely):

	(i) Is the definition good enough that interoperable
	implementations are possible?
	(ii) Do people care enough about the construct to
	actually use it in ways that show it is useful?

Now, neither of those rules prevents non-conforming
"implementations".  We may notice that those exist, but our
concern is only about implementations that appear to conform to
the spec and are (or are not) interoperable.  If non-conforming
implementations happen by accident because the text isn't clear
enough, we try to clarify the text.   But we don't say "well,
there are non-conforming implementations, so the spec is
broken".   That would make no sense at all, at least to me.

The answer to (i) appears to be "yes".  There are lots of
conforming cases.  And the answer to (ii) is, as Dave as pointed
out repeatedly, "about 30 years worth".

Is this construction dangerous if used in inappropriate
contexts?  Sure.  Does that justify a warning note to the
unwary?  Probably.  Is it possible to implement other things and
call them by the same name (i.e., create a non-conforming
implementation)?  Of course.  Should that invalidate the
definition?  Not if we want to have anything left if the
principle were applied broadly.