[rfc-i] Drafting issue... use of MAY

Barry Leiba barryleiba at computer.org
Wed May 2 12:25:44 PDT 2018


I think Phill has this exactly right.  I *really* hate "MAY" most of
the time; it's way overused, and overused confusingly.

Almost every time, when a spec says "MAY do x or y," it really means
"MUST choose between x and y, and do one of them."  But what it says,
according to the letter of 2119, is that it can do anything it likes,
and that x and y are what the spec suggests.

I'll really challenge people to show me a case where a spec needs to
use MAY -- really needs to use it, rather than just something like
this:

AS WRITTEN
   When <this happens> the server MAY close the client session."

BETTER
   When <this happens>, the server is likely to close the client
   session, and clients MUST be able to handle that situation.

(No one asked here, but I also mostly hate "SHOULD".  Mostly, not
entirely.  Most of the time, "when <this happens> the server SHOULD
<do that>" is useless -- perhaps one might say dangerous -- without an
explanation of when/why it might not do that.  And that's most often
better written as "the server MUST <do that> unless <explanation>."
IMO, we use too many unexplained SHOULDs, leaving implementors
uncertain.

But no one asked here.)

Barry

On Tue, May 1, 2018 at 8:16 PM, Phillip Hallam-Baker
<phill at hallambaker.com> wrote:
>
>
> On Tue, May 1, 2018 at 1:03 PM, John Levine <johnl at taugh.com> wrote:
>>
>> In article
>> <CAMm+LwgBFWW2GoemjDG3nVEO2=RLSH9XO3+uwRaQdi75oq=tyg at mail.gmail.com> you
>> write:
>> >Quite often in a spec, I find myself writing something like this:
>> >
>> >A Frame MAY be either buffered or unbuffered...
>> >
>> >Frames are either buffered or unbuffered...
>>
>> >Which is correct? I am thinking the second because it is not actually
>> >normative, it is by definition which is not the same thing.
>>
>> I agree.  It is a good idea to reread RFC 2119 every once in a while
>> to remember what the words mean.
>>
>> MUST doesn't mean "do this or die", it means "do this if you want to
>> interoperate."  MAY means there are different ways to do something all
>> of which will interoperate.
>>
>> I find relatively few uses for MAY, but one of them would be "letters
>> in domain names MAY be in uppper or lower case."
>
>
> No. I thought that but actually it is wrong. You should have a MUST there.
>
> Applications MUST accept letters in domain names in either upper or lower
> case and treat these as equivalent.
>
> This only occurred to me earlier today. A MAY for a generating party turns
> into a MUST for the interpreter.
>
>
> _______________________________________________
> rfc-interest mailing list
> rfc-interest at rfc-editor.org
> https://www.rfc-editor.org/mailman/listinfo/rfc-interest
>


More information about the rfc-interest mailing list