For details about the following points, refer to the Collection Requirements.
Every comment should say whether the reviewer expects it to be addressed, or whether it's optional.
Note for reviewers: If you don't know how to check any of the points below, please ask maintainers of the collection you're reviewing or a Steering Committee member for clarifications in comments of corresponding inclusion discussion.
Public availability and communication:
- published on Ansible Galaxy with version 1.0.0 or later
- has a policy of releasing, versioning and deprecation announced to contributors and users in some way
- have a Code of Conduct (CoC) compatible with the Ansible Code of Conduct (CoC)
- have a publicly available issue tracker that does not require a paid level of service to create an account or view issues
- have a public git repository, releases of the collection are tagged in this repository
Standards and documentation:
- adheres to semantic versioning
- follows licensing rules
- follows the Ansible documentation standards and the style guide
- follows development conventions; as well as these other requirements:
- modules satisfy the concept of idempotency
- modules that only gather information are named
<something>_info
- modules that return
ansible_facts
are named<something>_facts
and do not return non-facts - other modules must not allow querying information using specific
state
option values, or similar mechanisms (likestate=get
orstate=query
). These features should be moved to<something>_info
or<something>_fact
modules. -
check_mode
is supported in all_info
and_facts
modules
- supports Python 2.6 or greater and Python 3.5 or greater. If it does not, read the full guidelines to see if you qualify for an exception and document the unsupported Python versions in the collection
README.md
and in every module and plugin (or in doc fragments) - only uses the allowed plugin types in the
plugins/
directory - has
README.md
- documentation, examples, and return sections use FQCNs for the
M(..)
format macros when referring to modules - modules (or plugins) from ansible-core use
ansible.builtin.
as a FQCN prefix - documentation and return sections use
version_added:
containing the collection version for which an option, module or plugin was added (except cases when they were added in the very first release of the collection) - FQCNs are used for
extends_documentation_fragment:
, unless you are referring to doc_fragments from ansible-core - public plugins, roles and playbooks do not use files outside of
meta/
,plugins/
,roles/
, andplaybooks/
Collection management:
-
galaxy.yml
havingtags
field set - collection dependencies must have a lower bound on the version which is at least 1.0.0, and are all part of the
ansible
package -
meta/runtime.yml
defines the minimal version of Ansible which the collection works with - has changelog, preferably with
changelogs/changelog.yaml
- collection repository should not contain any large objects (binaries) comparatively to the current Galaxy tarball size limit of 20 MB. For example, package installers for testing purposes shouldn't be added.
- collection repository should not contain any unnecessary files like, for example, temporary files. Temporary files should be added to
.gitignore
.
Tests:
Note for reviewers: If you don't know how to check the points below, please ask maintainers of the collection you're reviewing how you can do it.
- In most cases, CI is set up via GitHub Actions.
- Check
.yml
files in the.github/workflows
directory. There must be at least thesanity
section underjobs
containing theansible-test sanity
command running against all supported ansible-core versions that must be also listed there, for example,- stable-2.11, - stable-2.12, - stable-2.13
. - Check workflow runs by clicking the
Actions
tab in the repository's page - you're interested inScheduled
runs, runs against release commits and runs against pull requests. - If there are no workflows in the
Actions
tab, ask the collection maintainers how CI is implemented.
- passed
ansible-test sanity
- if
test/sanity/ignore*.txt
exists, it MUST not contain error codes listed in the list of errors that must not be ignored - has CI tests up and running against each of the "major versions" of
ansible-base
/ansible-core
that the collection supports - all CI tests MUST run against every pull request
- all CI tests MUST run regularly (nightly, or at least once per week)
- sanity tests MUST run against a commit that releases the collection; if they don't pass, the collection won't be released