cplusplus / nbballot

Handling of NB comments in response to ballots
14 stars 4 forks source link

**-037 Review "must" #579

Open jensmaurer opened 9 months ago

jensmaurer commented 9 months ago

Review the use of “must” (used 74 times in the document). If the intention is to convey a requirement please use “shall”. ISO/IEC Directives Part 2, 7.6: Do not use “must” as an alternative for “shall”. This avoids confusion between the requirements of a document and external constraints (see 7.2).

jensmaurer commented 9 months ago

We use "must" quite a bit in notes and footnotes to refer to requirements imposed elsewhere.

ISO Directives, Part 2, says in subclause 7.6 that "must" is to be used for "external constraints", e.g. legal provisions or laws of nature. It seems "must" is forbidden for references to requirements established elsewhere in the standard itself ("this document").

External constraints are not requirements of the document.

Note that "is required to" is an alternative way of expressing "shall" and thus is forbidden in notes.

jensmaurer commented 9 months ago

@tkoeppe , @zygoloid , any idea what to do here?

jensmaurer commented 9 months ago

Instead of (e.g.) "must ... (xref)", we could say "Subclause xref requires that ..." This narrowly misses "is required to". Would that help?

tkoeppe commented 8 months ago

Last time: "we reviewed all the musts and none of them are establishing requirements"

tkoeppe commented 8 months ago

I asked ISO about this, and their response is:

This use of must and cannot will likely create some confusion in the users. We would recommend that the notes which explain the requirements be made normal text, because "the document shall be usable without the notes." (DP2, 24.1). This would remove any constraints of language.

I'd say this gives us enough reason to reject the associated comments and say that "[w]e reviewed all the uses, and their use in explanatory notes is as intended. The document is usable without the notes, and the notes, while helpful, would not make for good non-note text.

Alternatively, we could consider their proposal to move the notes to not be notes on a case-by-case basis?

jensmaurer commented 8 months ago

Surely there must be a way to explain non-normatively around some rule in section X that some other section Y has introduced a requirement, and thus section X doesn't have to deal with certain cases?

We absolutely need this facility in the C++ standard, and even if we might be able to convert some of our notes into normative text, the contents of those notes is absolutely not normative, and is not intended to be normative. For example, we skip some fine print that is given in the normative rule, or use vague language such as "some" if we don't want to repeat a normative rule in its entirety, risking confusion if the two end up deviating.

tkoeppe commented 8 months ago

I think as far as ISO is concerned, there's no such thing as "normative text". "Normative" is something that says "shall", otherwise it's just plain text. I think our view of whole "normative sections" vs "informative sections" is not how ISO sees this. But I think coming from our perspective we should retain the notes, because we rely on this section-wide distinction to some extent.

jensmaurer commented 8 months ago

Ah, right. Oh well, then.