RFC про фразы MUST, MUST NOT, RECOMMENDED, NOT RECOMMENDED, OPTIONAL
blog

RFC про фразы MUST, MUST NOT, RECOMMENDED, NOT RECOMMENDED, OPTIONAL

Во всяких интернетовских документах очень часто используются слова MUST, SHOULD, MAY и подобные. Например, в спецификации протокола PSGI, или в спецификации языка описания REST API Swagger.

Слова эти написаны большими буквами, и часто в начале документа есть абзац текста:

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119.

В этом абзаце перечислены 10 фраз:

Понятно, что эти фразы означают разные уровни требований, но что конкретно означает каждая фраза — не ясно. Точное объяснение содержится именно в RFC 2119.

После чтения RFC становится понятно, что эти 10 фраз означают не 10 разных уровней, а всего 5. Вот что написано в RFC:

Забавно, но в описании RFC встречается фраза, которой нет в абзаце из 10 фраз — "NOT RECOMMENDED".

Еще одну забавность я увидел в спецификации PSGI, версия 1.102 этой спецификации использует фразу "NOT REQUIRED", которая не была упомянута в RFC.

Мне очень нравятся стандарты (всегда проще следовать инструкции, чем изобретать свое), но, на мой взгляд, этот стандарт несколько сложен. Я считаю, что для описания 5 состояний нужно использовать 5 фраз, а не 11. Если я буду что-то писать с использованием этих слов, написанных большими буквами, то я буду использовать:

Такой способ описания никак не конфликтует с правилами, которые описаны в RFC 2119, но, на мой взгляд, такое использование все упрощает.

Иван Бессарабов
ivan@bessarabov.ru

11 ноября 2015

Edit this post on GitHub