On Sat, 13 Oct 2018, 19:10 Tedd Sterr, <[email protected]> wrote:
> > *2) PR #706 - Update BCP 14 language to comply with RFC 8174* - > https://github.com/xsf/xeps/pull/706 > > I have to wonder whether "an implementation must" could mean anything > different from "an implementation MUST" -- how else could it be > interpreted? Would 'must' mean it's actually not mandatory, but 'MUST' > does? I've always considered the upper-casing as little more than > highlighting/emphasis. > Three things: * Firstly, the easy bit - you must have considered that people may use ordinary English words in their ordinary English meanings. So while one can't say "an implementation must X" and mean anything but "X is mandatory", should other phrasings be used the RFC 2119 interpretations may not apply. This is particularly important with negations and "should", which should always be considered a grey area in English usage. * Secondly, RFC 2119 language is indicative of a requirement for "interoperation or to limit behavior[sic] which has the potential for causing harm". You can't say "An implementation MUST back this data onto a SQL database", for example. * Equally, not all interoperability requirements are spelt out (or indeed should be spelt out) as RFC 2119 language. I personally find it easier to write (and read) "The maximum number of items returned is ten" than the more tortuous "Implementions MUST NOT return more than 10 items" - though I appreciate that non-native English speakers often prefer the second. This does mean that "an implementation must X" doesn't automatically mean that an implementation has an absolute requirement to do X due to interoperability or to limit behaviour which has the potential to cause harm - even though the specification is saying that to conform, the implementation must nonetheless do X. You're more likely to see such usage with "recommended", however. So if some author wrote "implementions must X" and really meant to say "implementations MUST X", all that's missed is the reasoning; but an author who wrote "implementations are recommended to do X", but really meant "implementations SHOULD X" has changed the meaning (since SHOULD/RECOMMENDED really means something much stronger than "recommended" in normal English). All that said it was fashionable a few years back to treat the RFC 2119 keywords as case-insensitive; I personally think this caused much more trouble than it could possibly have solved. > Anyway, one dirty Python program later, and it doesn't look like the most > fun task for anyone (even considering only 'current' XEPs.) But from a > quick look, most usage doesn't appear likely normative. > > > *Dump follows…* > > Format is: > - one section per status (Active, Final, Draft, Proposed, Experimental) > - list of RFC-2119 magic words (upper and lower-case versions), with > total counts for the section > - list of XEPs containing lower-case instances, and counts for each of > those > - (negated-phrase counts are not separated, e.g. "MAY" is for both "MAY" > and "MAY NOT") > > *** Active *** > MAY 102 > MUST 145 > OPTIONAL 4 > RECOMMENDED 21 > REQUIRED 3 > SHALL 3 > SHOULD 251 > may 210 > must 62 > optional 5 > recommended 17 > required 12 > shall 111 > should 48 > XEP-0001 required=1, should=10, must=31, may=43, shall=39, recommended=2 > "it is not recommended for such implementations to be included in the primary release for a software product" - delightful. "Primary releases of a software product SHOULD NOT include such implementations" would be the best RFC 2119 rewrite, but note that you can't use RFC 2119 to tell people what to release. (And yes, we could also use NOT RECOMMENDED, with the same caveat). The uses of "shall" are interesting - they're often used in the same sense of an edict that RFC 2119 intends, but it's not clear that these are RFC 2119 cases. > XEP-0002 must=1, may=4, shall=1 > XEP-0019 should=1, may=2 > XEP-0049 may=1 > XEP-0053 should=1, must=3, may=7, shall=38 > XEP-0054 should=2, must=1, may=3 > XEP-0055 required=1, shall=1 > XEP-0068 should=2, must=8, shall=1, recommended=1 > XEP-0076 may=1, shall=1 > XEP-0082 should=1, shall=1, recommended=1, optional=2 > XEP-0083 should=3 > XEP-0100 required=3, should=1, must=3, may=17, recommended=1 > XEP-0114 may=1 > XEP-0127 may=1 > XEP-0128 must=2, may=4 > XEP-0132 may=7, shall=11, recommended=2, optional=1 > XEP-0133 may=46, shall=2 > XEP-0134 should=1, must=5, may=3, shall=1 > XEP-0143 required=3, should=5, must=1, may=8, recommended=1, optional=1 > XEP-0145 required=1 > XEP-0147 should=1, may=2, recommended=1 > XEP-0148 may=5, shall=1 > XEP-0149 should=1, may=9 > XEP-0153 should=1, may=2, recommended=1 > XEP-0157 required=1, should=1, may=9 > XEP-0160 may=3, shall=1 > XEP-0169 should=1, must=1 > XEP-0170 may=2, shall=1, recommended=1 > XEP-0178 shall=1, recommended=1 > XEP-0182 required=1, may=3 > XEP-0183 may=4, shall=2 > XEP-0185 should=1, recommended=1 > XEP-0201 should=1, shall=3 > XEP-0205 required=1, must=2, may=12, recommended=2 > XEP-0207 should=3, may=2, shall=1 > XEP-0222 must=2, may=1, shall=1 > XEP-0223 must=1, may=1, shall=1 > XEP-0239 may=1, shall=2 > XEP-0245 recommended=1 > XEP-0263 shall=1 > XEP-0286 should=8, must=1, may=3, recommended=1, optional=1 > XEP-0295 should=3, may=3 > > *** Final *** > MAY 75 > MUST 195 > OPTIONAL 8 > RECOMMENDED 10 > REQUIRED 7 > SHOULD 143 > may 41 > must 6 > optional 10 > recommended 10 > required 18 > shall 8 > should 19 > XEP-0004 required=2, should=9, must=1, may=8, shall=1 > XEP-0012 shall=2 > XEP-0030 required=1, should=1, must=3, may=17, optional=1 > XEP-0047 shall=2 > XEP-0077 required=14, should=2, must=2, may=4, shall=2, recommended=1 > XEP-0138 may=5 > XEP-0174 required=1, recommended=7, optional=8 > XEP-0199 should=2, may=2, shall=1 > XEP-0202 should=3, may=5, recommended=1, optional=1 > XEP-0203 should=2, recommended=1 > > *** Draft *** > MAY 544 > MUST 1499 > OPTIONAL 53 > RECOMMENDED 99 > REQUIRED 44 > SHALL 11 > SHOULD 841 > may 284 > must 50 > optional 19 > recommended 25 > required 64 > shall 117 > should 102 > XEP-0013 required=1, should=1, must=1, may=2 > XEP-0033 should=2, must=1, may=1, shall=1 > XEP-0045 required=11, should=3, must=6, may=18, shall=19, > recommended=1, optional=4 > XEP-0048 should=2, may=2, recommended=1 > XEP-0050 required=5, should=7, may=5 > XEP-0059 should=2, may=4, shall=3 > XEP-0060 required=7, should=2, must=4, may=79, shall=14, recommended=1, > optional=1 > XEP-0065 required=2, shall=2, optional=1 > XEP-0066 must=1, recommended=1, optional=2 > XEP-0070 should=1, may=3, shall=3 > XEP-0072 required=8, should=5, must=3, may=17, recommended=2, optional=1 > XEP-0079 should=3, may=5, shall=5 > XEP-0080 may=1, shall=5 > XEP-0084 may=1, shall=1 > XEP-0092 required=1, may=1 > XEP-0106 required=1, should=4, may=14, shall=2, optional=2 > XEP-0107 should=1, may=1, shall=1 > XEP-0108 should=1, may=2, shall=1 > XEP-0115 required=2, should=2, must=9, may=7, shall=2, recommended=1 > XEP-0118 should=2, may=2, shall=1 > XEP-0122 should=5, may=5, shall=6 > XEP-0124 required=3, should=3, must=1, optional=1 > XEP-0131 must=1, may=13 > XEP-0141 required=1, may=4 > XEP-0144 required=2, should=6, may=4, recommended=2 > XEP-0152 shall=1 > XEP-0155 required=6, should=1, must=5, may=26, shall=3 > XEP-0156 shall=1 > XEP-0158 required=3, should=4, must=3, may=8, shall=2 > XEP-0163 must=2, may=4, shall=5 > XEP-0166 shall=7, recommended=10, optional=1 > XEP-0167 shall=8 > XEP-0171 required=3, should=5, must=1, may=1, recommended=2, optional=1 > XEP-0172 may=1, shall=1 > XEP-0176 shall=2, optional=1 > XEP-0177 required=1, shall=1 > XEP-0184 shall=2 > XEP-0191 required=2, should=2, must=1, may=1, shall=6 > XEP-0198 should=1, may=1 > XEP-0206 required=1, should=1, may=1 > XEP-0220 should=2, must=1, shall=1 > XEP-0221 may=1, recommended=1, optional=1 > XEP-0227 should=1, may=5 > XEP-0231 must=1, may=1, optional=1 > XEP-0233 should=3, must=1, may=1, shall=1 > XEP-0249 shall=2 > XEP-0258 should=12, must=1, may=26, optional=1 > XEP-0260 shall=6 > XEP-0288 should=1, may=2 > XEP-0293 required=2, should=1 > XEP-0297 should=10, must=1, may=2 > XEP-0301 required=2, must=2, may=7, shall=1, recommended=3, optional=1 > XEP-0308 should=1, must=1, may=3 > XEP-0319 shall=1 > XEP-0368 should=4, may=1 > XEP-0387 should=1, must=3, may=1 > > *** Proposed *** > MAY 32 > MUST 77 > OPTIONAL 7 > RECOMMENDED 5 > SHOULD 46 > may 8 > must 2 > optional 1 > required 6 > shall 21 > should 6 > XEP-0186 required=1, shall=5 > XEP-0234 required=1, shall=4, optional=1 > XEP-0280 required=2, should=1, must=1, may=3, shall=1 > XEP-0352 required=1, should=1, must=1, may=2 > XEP-0363 required=1, should=1, may=2, shall=1 > XEP-0381 should=3, may=1, shall=10 > > *** Experimental *** > MAY 169 > MUST 374 > OPTIONAL 7 > RECOMMENDED 12 > REQUIRED 9 > SHALL 6 > SHOULD 128 > may 80 > must 27 > optional 8 > recommended 6 > required 14 > shall 3 > should 59 > XEP-0283 should=1, may=2, shall=1 > XEP-0300 should=1, must=1, shall=1, recommended=1 > XEP-0313 required=3, should=10, must=4, may=16, optional=1 > XEP-0335 should=3, must=1 > XEP-0369 should=2, must=1, may=7, recommended=2, optional=4 > XEP-0373 required=3, should=10, must=2, may=8, optional=1 > XEP-0384 may=2 > XEP-0385 should=2, may=3, recommended=1 > XEP-0391 should=1, must=1 > XEP-0392 should=5, must=4, may=4 > XEP-0393 required=2, should=3, may=18 > XEP-0394 may=3 > XEP-0395 shall=1 > XEP-0396 must=1 > XEP-0397 required=2, should=2, must=5, may=1, optional=1 > XEP-0398 should=1 > XEP-0399 may=3 > XEP-0400 required=1, should=3 > XEP-0401 should=6, must=3, may=3 > XEP-0402 should=2 > XEP-0403 required=1, should=1, must=2, may=4 > XEP-0404 may=1 > XEP-0406 required=2, must=1, optional=1 > XEP-0407 should=2, may=2, recommended=2 > XEP-0408 may=1 > XEP-0409 should=1, must=1 > XEP-0410 should=3, may=2 > > _______________________________________________ > Standards mailing list > Info: https://mail.jabber.org/mailman/listinfo/standards > Unsubscribe: [email protected] > _______________________________________________ >
_______________________________________________ Standards mailing list Info: https://mail.jabber.org/mailman/listinfo/standards Unsubscribe: [email protected] _______________________________________________
