Skip to content

Common understanding

Saluki is a large software project with a growing number of contributors. In order to ensure everyone is on the same page, we need to make sure we're all using the same terminology and have a common understanding on the various areas of the project and the tools and processes for developing it.

Requirement levels

For those of you that have ever read an IETF RFC, you may be familiar with the sight of words like "MUST" and "SHOULD NOT". RFC 2119 defines these as "requirement levels", where the use of these terms indicates whether or not something is required, or is a suggestion, or if the behavior is purely optional.

These requirement levels are used throughout the documentation to help clarify the expectations around certain processes. You're encouraged to read the RFC, but here's a quick rundown:

  • MUST/SHALL: this is an absolute requirement
  • MUST NOT/SHALL NOT: this is an absolute prohibition
  • SHOULD/RECOMMENDED: you really should do this, but there may be valid reasons not to
  • SHOULD NOT/NOT RECOMMENDED: you really should not do this, but there may be valid reasons to do so
  • MAY/OPTIONAL: this is legitimately optional ("dealer's choice")

Like RFC 2119 mentions, these should be used sparingly and only when necessary to clarify expectations... so if you see them, pay attention!