On Tue, Jun 25, 2013 at 1:33 AM, Phillip Hallam-Baker <hallam@xxxxxxxxx> wrote:
RECOMMENDED is a strong suggestion that the implementation may override at the discretion of the implementer. SHOULD is normative.
Of course, they both mean the same, because the author has (one assumes) explicitly said that it means what it says in RFC 2119. Applying your own meanings to words used in specifications is never going to work, because otherwise I could start waxing lyrical on what exactly a credential meant (and in traditional spoken English, it relates to authorization rather than authentication as here).
In ordinary English, without specific guidance as RFC 2119 gives, I'd consider "should" and "must" as having virtually the same strength, and "recommended" being far lower. "Should", however, is used for third parties and also when a requirement has exceptions, conditions, and so on - it's also used for general conditional statements, too, such as "I'd like that", which really expands to "I should like that" rather than "I would like that". Another case is that if I say "Phillip must have read RFC 2119", I've made an incorrect statement if he hasn't, whereas if I say "Phillip should have read RFC 2119", then it's clear Phillip would be the one at fault.
Much of the problem with actual English in specifications comes from the fact that specifications are written to tell people what something else should do, and English as a language is more adept at telling you what you must do, and ideally by using the imperative form instead.
So while I can write, "You must read RFC 2119. Do not attempt to derive implied meaning not present in RFC 2119", I can only express a desire that Phillip should do the same.
Dave.