RFC 6919 EXPERIMENTAL HUMOR · META · REQUIREMENTS

Further Key Words for Use in RFCs to Indicate Requirement Levels

An April 1st spoof that adds nine hedging phrases to the RFC 2119 requirement words.

On rfc-editor.org ↗
PUBLISHED
April 2013
AUTHORS
R. Barnes, S. Kent, E. Rescorla
STREAM
INDEPENDENT
NEW KEY PHRASES
9
CATEGORY
Experimental
DOI
10.17487/RFC6919

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Independent Submission                                         R. Barnes
Request for Comments: 6919                                       S. Kent
Category: Experimental                                               BBN
ISSN: 2070-1721                                              E. Rescorla
                                                              RTFM, Inc.
                                                            1 April 2013


    Further Key Words for Use in RFCs to Indicate Requirement Levels

Abstract

   RFC 2119 defines a standard set of key words for describing
   requirements of a specification.  Many IETF documents have found that
   these words cannot accurately capture the nuanced requirements of
   their specification.  This document defines additional key words that
   can be used to address alternative requirements scenarios.  Authors
   who follow these guidelines should incorporate this phrase near the
   beginning of their document:

   The key words "MUST (BUT WE KNOW YOU WON'T)", "SHOULD CONSIDER",
   "REALLY SHOULD NOT", "OUGHT TO", "WOULD PROBABLY", "MAY WISH TO",
   "COULD", "POSSIBLE", and "MIGHT" in this document are to be
   interpreted as described in RFC 6919.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for examination, experimental implementation, and
   evaluation.

   This document defines an Experimental Protocol for the Internet
   community.  This is a contribution to the RFC Series, independently
   of any other RFC stream.  The RFC Editor has chosen to publish this
   document at its discretion and makes no statement about its value for
   implementation or deployment.  Documents approved for publication by
   the RFC Editor are not a candidate for any level of Internet
   Standard; see Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc6919.

Copyright Notice

   Copyright (c) 2013 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.

Table of Contents

   1.  MUST (BUT WE KNOW YOU WON'T)  . . . . . . . . . . . . . . . . . 3
   2.  SHOULD CONSIDER . . . . . . . . . . . . . . . . . . . . . . . . 3
   3.  REALLY SHOULD NOT . . . . . . . . . . . . . . . . . . . . . . . 3
   4.  OUGHT TO  . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
   5.  WOULD PROBABLY  . . . . . . . . . . . . . . . . . . . . . . . . 4
   6.  MAY WISH TO . . . . . . . . . . . . . . . . . . . . . . . . . . 4
   7.  COULD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
   8.  POSSIBLE  . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
   9.  MIGHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
   10. Security Considerations . . . . . . . . . . . . . . . . . . . . 5
   11. References  . . . . . . . . . . . . . . . . . . . . . . . . . . 5
     11.1.  Normative References . . . . . . . . . . . . . . . . . . . 5
     11.2.  Informative References . . . . . . . . . . . . . . . . . . 5

1.  MUST (BUT WE KNOW YOU WON'T)

   The phrase "MUST (BUT WE KNOW YOU WON'T)" is used to indicate
   requirements that are needed to meet formal review criteria (e.g.,
   mandatory-to-implement security mechanisms), when these mechanisms
   are too inconvenient for implementers to actually implement.

   This phrase is frequently used in a contracted form in which the
   parenthetical is omitted.  The parenthetical may also be moved later
   in the sentence for stylistic reasons.  If the parenthetical is
   present, authors MUST provide a reason why they know implementors
   will not heed this instruction in the parenthetical, as in the
   example (BUT WE KNOW YOU WON'T).  In the below example, we show a
   case from RFC 6120 where the original text omitted the parenthetical,
   and we have indicated an appropriate parenthetical.

   For example: "For authentication only, servers and clients MUST
   support the SASL Salted Challenge Response Authentication Mechanism
   [SCRAM] -- in particular, the SCRAM-SHA-1 and SCRAM-SHA-1-PLUS
   variants [(BUT WE KNOW YOU WON'T, because your TLS library doesn't
   support extracting channel binding information)]."  [RFC6120]

2.  SHOULD CONSIDER

   The phrase "SHOULD CONSIDER" indicates that the authors of the
   specification think that implementations should do something, but
   they're not sure quite what.

   For example: "Applications that take advantage of typed links should
   consider the attack vectors opened by automatically following,
   trusting, or otherwise using links gathered from HTTP headers."
   [RFC5988]

3.  REALLY SHOULD NOT

   The phrase "REALLY SHOULD NOT" is used to indicate dangerous
   behaviors that some important vendor still does and therefore we were
   unable to make MUST NOT.

   For example: "This command really should not be used" [RFC0493]

4.  OUGHT TO

   The phrase "OUGHT TO" conveys an optimistic assertion of an
   implementation behavior that is clearly morally right, and thus does
   not require substantiation.

   For example: "If a decision might affect semantic transparency, the
   implementor ought to err on the side of maintaining transparency
   unless a careful and complete analysis shows significant benefits in
   breaking transparency."  [RFC2616]

5.  WOULD PROBABLY

   The phrase "WOULD PROBABLY" indicates the authors expectation about
   what a reasonable implementation is likely to do in a given case.
   There is no requirement for implementations to be reasonable.

   This phrase is also a good example of an aspect of English grammar
   that is often useful in specification writing, namely the passive-
   aggressive voice, which provides a meaning in between the active and
   the passive voice.

   For example: "A SMTP client would probably only want to authenticate
   an SMTP server whose server certificate has a domain name that is the
   domain name that the client thought it was connecting to."  [RFC3207]

6.  MAY WISH TO

   The phrase "MAY WISH TO" indicates a behavior that might seem
   appealing to some people, but which is regarded as ridiculous or
   unnecessary by others.  This phrase is frequently used to avoid
   further delay in approval of a document.

   For example: "Verifiers MAY wish to track testing mode results to
   assist the Signer."  [RFC6376]

7.  COULD

   The phrase "COULD" provides a way for specification authors to
   articulate existential possibilities, in order to provide a hint that
   might be critical to reliable or secure operation, but without a hard
   requirement.  The lack of a requirement allows for vendor product
   differentiation.

   For example: "An implementation could mitigate this race condition,
   for example, using timers."  [RFC6733]

8.  POSSIBLE

   The phrase "POSSIBLE" describes what some of the working group
   members thought of as an edge case that will never happen, but in
   practice allows the protocol to work at the most fundamental level.

   For example: "It is also possible for the server to send a completion
   response for some other command (if multiple commands are in
   progress), or untagged data."  [RFC3501]

9.  MIGHT

   The phrase "MIGHT" conveys a requirement in an intentionally stealthy
   fashion, to facilitate product differentiation (cf. "COULD" above).

   For example: "In the case of audio and different "m" lines for
   different codecs, an implementation might decide to act as a mixer
   with the different incoming RTP sessions, which is the correct
   behavior."  [RFC5888]

10.  Security Considerations

   Traditionally, security requirements in IETF documents have been
   expressed with a mixture of requirements words from RFC 2119
   [RFC2119] and the phrases used above.  The key words in RFC 2119 are
   principally useful when threats and mitigations are clear and well
   defined.  The key words in this document can be applied when the
   threat model is ambiguous, and mitigations are unclear or
   inconvenient.

11.  References

11.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

11.2.  Informative References

   [RFC0493]  Michener, J., Cotton, I., Kelley, K., Liddle, D., and E.
              Meyer, "GRAPHICS PROTOCOL", RFC 493, April 1973.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC3207]  Hoffman, P., "SMTP Service Extension for Secure SMTP over
              Transport Layer Security", RFC 3207, February 2002.

   [RFC3501]  Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
              4rev1", RFC 3501, March 2003.

   [RFC5888]  Camarillo, G. and H. Schulzrinne, "The Session Description
              Protocol (SDP) Grouping Framework", RFC 5888, June 2010.

   [RFC5988]  Nottingham, M., "Web Linking", RFC 5988, October 2010.

   [RFC6120]  Saint-Andre, P., "Extensible Messaging and Presence
              Protocol (XMPP): Core", RFC 6120, March 2011.

   [RFC6376]  Crocker, D., Hansen, T., and M. Kucherawy, "DomainKeys
              Identified Mail (DKIM) Signatures", RFC 6376,
              September 2011.

   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,
              "Diameter Base Protocol", RFC 6733, October 2012.

Authors' Addresses

   Richard Barnes
   BBN
   1300 N 17th St
   Arlington, VA  22209
   US

   EMail: rlb@ipv.sx


   Stephen Kent
   BBN
   10 Moulton St
   Cambridge, MA  02138
   US

   EMail: kent@bbn.com


   Eric Rescorla
   RTFM, Inc.
   2064 Edgewood Drive
   Palo Alto, CA  94303
   US

   EMail: ekr@rtfm.com

AI ELI5

On this page
PROBLEMRFC 2119 gives authors a standard set of requirement words, but this joke says many documents find they cannot capture the nuance of real specifications.
MECHANISMIt defines nine tongue-in-cheek phrases, from MUST (BUT WE KNOW YOU WON'T) to MIGHT, each with a wry definition and a real quotation from an older RFC.
WHY IT MATTERSIt is an Experimental, Independent Submission published on 1 April 2013 and is not a real requirements vocabulary.

§1An April 1st Parody of RFC 2119

RFC 6919 is an April 1st joke document. It plays on RFC 2119, the document that defines words such as MUST and SHOULD for describing the requirements of a specification. The joke is that many IETF documents find those words cannot accurately capture the nuanced requirements of their specification.

Authors who 'follow these guidelines' are told to add a boilerplate sentence listing nine new key words: "MUST (BUT WE KNOW YOU WON'T)", "SHOULD CONSIDER", "REALLY SHOULD NOT", "OUGHT TO", "WOULD PROBABLY", "MAY WISH TO", "COULD", "POSSIBLE" and "MIGHT".

Grown-ups who write rules use words like 'must' and 'should.' This memo jokes that they need sillier words, like 'might,' for when nobody is really sure.

§2The Strong and Cautious Phrases

MUST (BUT WE KNOW YOU WON'T) marks requirements needed to meet formal review criteria, such as mandatory-to-implement security mechanisms, when implementers find them too inconvenient to implement. If the parenthetical is present, authors MUST give a reason in it. The example rewrites a sentence from RFC 6120 about SCRAM, adding that implementers will not comply because their TLS library does not support extracting channel binding information.

SHOULD CONSIDER means the authors think implementations should do something but are not sure quite what. REALLY SHOULD NOT flags dangerous behavior that some important vendor still does, so the authors could not make it MUST NOT. OUGHT TO is an optimistic assertion of behavior that is clearly morally right and needs no substantiation.

Some of the new words mean 'you have to, but we know you will not,' or 'you should do something, but we are not sure what.' It is like a teacher saying 'please try,' when they know you will not.

§3The Hedging Phrases

WOULD PROBABLY states the authors' expectation of what a reasonable implementation is likely to do. The RFC adds that there is no requirement for implementations to be reasonable, and calls the phrase an example of the 'passive-aggressive voice'.

MAY WISH TO marks a behavior that seems appealing to some and ridiculous or unnecessary to others, often used to avoid further delay in approval. COULD gives a hint that might be critical to reliable or secure operation without a hard requirement, which allows vendor product differentiation. POSSIBLE describes what some working group members thought of as an edge case that will never happen but that in practice lets the protocol work at the most fundamental level. MIGHT conveys a requirement in an intentionally stealthy fashion, to facilitate product differentiation.

Each phrase comes with a real quotation from an earlier RFC, such as RFC 3501, RFC 5888 or RFC 6733, to show the style in use.

The rest are polite maybes. 'Could' and 'might' sound like a gentle suggestion, but they let companies do their own thing and still say they followed the rules.

§4Security Considerations

The joke closes with a straight-faced security section. It says IETF documents have traditionally expressed security requirements with a mixture of RFC 2119 words and the phrases above. The RFC 2119 words are principally useful when threats and mitigations are clear and well defined. The new key words can be applied when the threat model is ambiguous, and mitigations are unclear or inconvenient.

When nobody knows exactly what could go wrong, these made-up words let writers sound serious without promising anything.

§5References