You MUST/SHOULD/MAY be Joking
The folks over in IETF land recently had a nice long discussion thread about the use of RFC 2119 requirements terms like "MUST", "SHOULD", and "MAY". Even though I've written a few RFCs myself, I found the discussion illuminating. Here are my lessons learned:
- If you mean must, should, or may in their special requirements sense, capitalize them.
- If you don't mean must, should, or may in their special requirements sense, don't use them (instead, use words like "ought", "might", "can", and other such constructions).
- It's better to say MUST do A unless Y occurs than to say SHOULD do A but without explaining why, so avoid SHOULD.
- Changing SHOULD to MUST may leave older implementations in non-compliance, but that is the fault of the spec writer, so just admit you were wrong, change the SHOULD to MUST, and note that older implementations will follow the old SHOULD so newer implementations MUST accept the old behavior.
I've been updating rfc3920bis along these lines (I finished this evening) and next I'll do the same for rfc3921bis.
Peter Saint-Andre > Journal