From 3aa9fd562205b33380deb81e009dbc093103bd9f Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Wed, 2 Oct 2024 22:16:02 +0300 Subject: [PATCH 1/4] Add rules on moving content to collections outside of Ansible. --- .../collection_requirements.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/docsite/rst/community/collection_contributors/collection_requirements.rst b/docs/docsite/rst/community/collection_contributors/collection_requirements.rst index 1784b702dd..3f0011f10a 100644 --- a/docs/docsite/rst/community/collection_contributors/collection_requirements.rst +++ b/docs/docsite/rst/community/collection_contributors/collection_requirements.rst @@ -472,6 +472,17 @@ When moving modules between collections See :ref:`Migrating content to a different collection ` for complete details. +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 by redirects is only a minor change if the destination collection is the dependency of the source collection of the move. (See :ref:`coll_dependencies` for adding new dependencies to collections included in Ansible.) + +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: + +1. The new collection is appropriately licensed and does not require a CLA to contribute. +2. None of the contributors who contributed to the content in the last 6 months objects in a four-weeks period after the plan to deprecate the module has been announced. +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. +4. If community members or contributors bring up good reasons in these 6 months to not do the move, the Steering Committee will discuss these and vote on them before the content is removed. + +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. + .. _coll_development_conventions: Development conventions From 01e1bd68816343c93ce28af1ed0220b65c98412f Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Wed, 16 Oct 2024 21:28:21 +0200 Subject: [PATCH 2/4] Apply suggestions from code review. Co-authored-by: Maxwell G --- .../collection_contributors/collection_requirements.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docsite/rst/community/collection_contributors/collection_requirements.rst b/docs/docsite/rst/community/collection_contributors/collection_requirements.rst index 3f0011f10a..b0f1bb1854 100644 --- a/docs/docsite/rst/community/collection_contributors/collection_requirements.rst +++ b/docs/docsite/rst/community/collection_contributors/collection_requirements.rst @@ -477,9 +477,9 @@ Generally we do not object to moving content between collections, or moving cont 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: 1. The new collection is appropriately licensed and does not require a CLA to contribute. -2. None of the contributors who contributed to the content in the last 6 months objects in a four-weeks period after the plan to deprecate the module has been announced. -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. -4. If community members or contributors bring up good reasons in these 6 months to not do the move, the Steering Committee will discuss these and vote on them before the content is removed. +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. +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. +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. 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. From 16173818a44328cac94ff127611c0eae7ca43da2 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Wed, 16 Oct 2024 21:31:02 +0200 Subject: [PATCH 3/4] One more from gotmax23. --- .../collection_contributors/collection_requirements.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docsite/rst/community/collection_contributors/collection_requirements.rst b/docs/docsite/rst/community/collection_contributors/collection_requirements.rst index b0f1bb1854..1c6f555d10 100644 --- a/docs/docsite/rst/community/collection_contributors/collection_requirements.rst +++ b/docs/docsite/rst/community/collection_contributors/collection_requirements.rst @@ -472,7 +472,7 @@ When moving modules between collections See :ref:`Migrating content to a different collection ` for complete details. -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 by redirects is only a minor change if the destination collection is the dependency of the source collection of the move. (See :ref:`coll_dependencies` for adding new dependencies to collections included in Ansible.) +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.) 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: From fe077bba8471c3eae5d8949545fe47ee2682019d Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Wed, 16 Oct 2024 21:33:07 +0200 Subject: [PATCH 4/4] Reference section on CLAs. --- .../collection_contributors/collection_requirements.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/docsite/rst/community/collection_contributors/collection_requirements.rst b/docs/docsite/rst/community/collection_contributors/collection_requirements.rst index 1c6f555d10..5034927e42 100644 --- a/docs/docsite/rst/community/collection_contributors/collection_requirements.rst +++ b/docs/docsite/rst/community/collection_contributors/collection_requirements.rst @@ -358,12 +358,14 @@ There are several types of content in collections which licensing has to address * 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``. +.. _coll_cla: + Contributor License Agreements ============================== Collections MUST NOT require community contributors to sign any type of contributor license agreement (CLA) other than the -`Developer Certificate of Origin `_ +`Developer Certificate of Origin (DCO) `_ or similar agreements that only require confirming the provenance of contributions. This requirement seeks to preserve the community's ownership over its contributions, prevent unwelcome licensing changes that can occur when one entity @@ -476,7 +478,7 @@ Generally, we do not object to moving content between collections or moving cont 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: -1. The new collection is appropriately licensed and does not require a CLA to contribute. +1. The new collection is appropriately licensed and follows the :ref:`Contributor License Agreements ` policy. 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. 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. 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.