FWIW, I was being glib in trying to toss out MUST/MAY/SHOULD (I should
have used a smiley :-)).
Both adverbs and adjectives are need because protocols include both
actions and state:
Adverbs indicate constraints on action (of the protocol, implementer, or
operator).
Adjectives indicate constraints on state.
It's equally awkward to use either one for both types of constraints, IMO.
Joe
On 8/12/2016 5:20 PM, Pete Resnick wrote:
On 12 Aug 2016, at 19:04, Joe Touch wrote:
It's inefficient to repeat the phrase "X MUST be supported by any
implementation that complies with this specification".
Perfect example. That passive construction is just as bad as "X is
REQUIRED". That's a compliance statement, not an interoperability
statement as required by 2119. When "X" is a feature (not a protocol
operation) what does "X MUST be supported" even mean? Why MUST it be
supported? What interoperability problem does it cause if I choose to
do otherwise? 99 times out of 100, when I've see "X is REQUIRED" or "X
MUST be supported", it's a completely bogus use.
The phrase "X is REQUIRED", RECOMMENDED, or OPTIONAL corresponds
to the
incorrect English of "X is a MUST".
And I would say don't use any of them. ("X is a MUST" is an abomination.)
I.e., these are reasonable adjective forms of the adverbs
MUST/MAY/SHOULD. Omitting these adjectives then requires authors to
select their own adjective forms or to have to rewrite everything
as an
adverb.
Rewriting things to use an adverb is good because it requires you to
have a verb. If the verbs are "support" or "comply", it's a pretty
good sign that you're making the spec less clear.
IMO, if you want to drop anything, drop the MUST/MAY/SHOULD -
directives
of protocol specs should describe the spec, not the actions of the
implementer.
Violent agreement on that one.
pr
On 8/12/2016 4:13 PM, Pete Resnick wrote:
On 11 Aug 2016, at 6:44, Stewart Bryant wrote:
|Optional is useful in a requirements RFC. Feature x is
REQUIRED Feature y is OPTIONAL |
One last (and perhaps fruitless) attempt to keep this section and
deprecate the adjectives:
Using REQUIRED and OPTIONAL results in exactly the problem of
using
passive voice anywhere: REQUIRED by whom? OPTIONAL for whom?
If you
say, "A MUST do X and B MAY do Y", it is perfectly clear which
actor
is responsible (and in network protocols there are inevitably
at least
2). If you say "X is REQUIRED and Y is OPTIONAL", you'll end up
needing more text to explain the actors and their roles.
Using REQUIRED and OPTIONAL is lazy. It makes specs less
clear. They
ought to be dropped.
pr
--
Pete Resnick http://www.qualcomm.com/~presnick/
<http://www.qualcomm.com/%7Epresnick/>
Qualcomm Technologies, Inc. - +1 (858)651-4478