Re: [coremob/level-0] df3f70: Replace incorrect use of "MUST [...] if available"...

Hi Tobie,

Allow me to express my disagreement with respect to that change, and 
such kind of change in general.

I share your interpretation of RFC 2119. "MUST" is an unconditionally 
requirement while "SHOULD" is a conditional requirement (i.e. "there may 
exists valid reasons [...] to ignore [...]"). Replacing "MUST if" by 
"SHOULD" is formally correct. However, in practice, "MUST if" is far 
superior to "SHOULD", the former should be preferred. Let me explain why.

Basically, the "MUST if" clause comes with text which details the 
circumstances under which the requirement does apply, while "SHOULD" 
does not. In our case, we absolutely do not want a device which has a 
SMS app and the agent is *not* capable to trigger that SMS app using the 
sms: scheme. That must be avoided. We really want the URI scheme to be 
dispatched always, unless sending SMS is not possible. This was captured 
by "MUST ... (if available)", it is no longer by "SHOULD".

 From test implementation perspective, the "MUST if" is easily turned 
into a real conditional statement, in contrast, it is impossible to 
decide, at test execution time, whether failing to comply with a 
"SHOULD" is actually valid or not.

In practice, "SHOULD" and "MAY" are the same. "MAY" is good for options. 
When "MUST" has valid exceptions, positive cases should be detailed in 
"MUST if" sentences. "SHOULD" MUST be avoided ;-)

Cheers.

https://github.com/coremob/level-0/commit/df3f70c21256bac250e3d5c7b14d9811968266af

Received on Wednesday, 18 April 2012 12:04:03 UTC