> On 07/01/2013 12:42, Stewart Bryant wrote: > > Indeed an interesting additional question. > > > > My view is that you MUST NOT use RFC2119 language, unless you MUST use > > it, for exactly that reason. What is important is "on the wire" (a term > > that from experience is very difficult to define) inter-operation, and > > implementers need to be free to achieve that though any means that suits > > them. > Agreed. Imagine the effect if the TCP standard had said that a particular > congestion control algorithm was mandatory. Oh, wait... > ... RFC 1122 section 4.2.2.15 says that a TCP MUST implement reference [TCP:7] > which is Van's SIGCOMM'88 paper. So apparently any TCP that uses a more recent > congestion control algorithm is non-conformant. Oh, wait... > ... RFC 2001 is a proposed standard defining congestion control algorithms, > but it doesn't update RFC 1122, and it uses lower-case. Oh, wait... > RFC 2001 is obsoleted by RFC 2581 which obsoleted by RFC 5681. These both > use RFC 2119 keywords, but they still don't update RFC 1122. > This is such a rat's nest that it has a guidebook (RFC 5783, "Congestion > Control in the RFC Series") and of course it's still an open research topic. > Attempting to validate TCP implementations on the basis of conformance > with RFC 2119 keywords would be, well, missing the point. > I know this is an extreme case, but I believe it shows the futility of > trying to be either legalistic or mathematical in this area. Exactly. Looking for cases where the use/non-use of capitalized terms caused an interoperability failure is a bit silly, because the use/non-use of such terms doesn't carry that sort of weight. What does happen is that implementation and therefore interoperability quality can suffer when standards emphasize the wrong points of compliance. Things work, but not as well as they should or could. A fairly common case of this in application protocols is an emphasis on low-level limits and restrictions while ignoring higher-level requirements. For example, our email standards talk a fair bit about so-called "minimim maximums" that in practice are rarely an issue, all the while failing to specify a mandatory minimum set of semantics all agents must support. This has led to lack of interoperable functionality in the long term. Capitalized terms are both a blessing and a curse in this regard. They make it easy to point out the really important stuff. But in doing so, they also make it easy to put the emphasis in the wrong places. tl;dr: Capitulized terms are a tool, and like any tool they can be misused. Ned