Skip to content

Commit efb2c67

Browse files
Add rules on moving content to collections outside of Ansible (#1971)
* Add rules on moving content to collections outside of Ansible. * Apply suggestions from code review. Co-authored-by: Maxwell G <[email protected]> * One more from gotmax23. * Reference section on CLAs. --------- Co-authored-by: Maxwell G <[email protected]>
1 parent fac09ca commit efb2c67

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

docs/docsite/rst/community/collection_contributors/collection_requirements.rst

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,12 +358,14 @@ There are several types of content in collections which licensing has to address
358358
* Code outside ``plugins/``: if it imports any other code that is licensed under ``GPL-3.0-or-later``. Note that this applies in particular to unit tests that often import code from ansible-core, ``plugins/``, ``module_utils/``, or ``modules/``, and such code is often licensed under ``GPL-3.0-or-later``.
359359

360360

361+
.. _coll_cla:
362+
361363
Contributor License Agreements
362364
==============================
363365

364366
Collections MUST NOT require community contributors to sign any type of
365367
contributor license agreement (CLA) other than the
366-
`Developer Certificate of Origin <https://developercertificate.org/>`_
368+
`Developer Certificate of Origin (DCO) <https://developercertificate.org/>`_
367369
or similar agreements that only require confirming the provenance of contributions.
368370
This requirement seeks to preserve the community's ownership over its contributions,
369371
prevent unwelcome licensing changes that can occur when one entity
@@ -472,6 +474,17 @@ When moving modules between collections
472474

473475
See :ref:`Migrating content to a different collection <migrate_to_collection>` for complete details.
474476

477+
Generally, we do not object to moving content between collections or moving content from collections included in Ansible to collections outside the Ansible package, as long as semantic versioning is not violated. More precisely, replacing content with redirects is only a minor change if the destination collection is the dependency of the original collection. (See :ref:`coll_dependencies` for more information about adding new dependencies to collections included in Ansible.)
478+
479+
For the community "catch all" collections, we have slightly different rules. We allow to move content out of community.general and community.network to other collections outside of Ansible under the following conditions:
480+
481+
1. The new collection is appropriately licensed and follows the :ref:`Contributor License Agreements <coll_cla>` policy.
482+
2. None of the contributors who contributed to the content in the last 6 months object in a four-week period after the plan to deprecate the module has been announced.
483+
3. There is a deprecation period of at least 6 months during which deprecation warnings are shown. The deprecation notice must mention that the content is moved to a collection outside the Ansible community package and that users need to install that collection separately.
484+
4. If community members or contributors bring up good reasons in these 6 months to cancel the migration, the Steering Committee will discuss these and vote on them before the content is removed.
485+
486+
Redirects are only added if full backwards compatibility can be ensured. If they are not used, tombstoning has to be used, and the tombstone message needs to explicitly mention the new collection and that the content in the new collection is not fully backwards compatible.
487+
475488
.. _coll_development_conventions:
476489

477490
Development conventions

0 commit comments

Comments
 (0)