In March of 1997, Scott Bradner penned a short memo titled “Key Words For Use in RFCs to Indicate Requirement Levels”. It is more commonly referred to as simply RFC 2119. The entire document fits comfortably on two pages of paper.
That memo would go on to become the single most referenced document of the Internet Engineering Task Force (IETF).
Some things may be allowed, some things may not. Some things should be accommodated, other things should not. Some things are required and simply must be present in a certain form, other things must never be present.
Scott Bradner and his 500-word memo (RFC 2119) gave us a way to succinctly specify all of the above, without ambiguity, by defining these five imperatives: MUST, MUST NOT, SHOULD, SHOULD NOT, MAY.
Nearly every RFC written in the past 25 years has referenced RFC 2119 and used these imperatives to be explicit about what is mandatory, what is advisable, and what is allowed but not required.
Interestingly, RFC 2119 itself has only ever been updated once, to clarify that when these imperatives are not capitalized, they have their normal English meanings.
A longer version of this was posted to The unlikely trio MUST, SHOULD, and MAY in internet standards.