Summary
Right now, most 'old' community.collections (i.e. the ones which have been around since The Split and shortly after) support all Ansible/ansible-base/ansible-core versions since 2.9.10.
This is starting to put some strain on CI resources, since this means that tests need to run against stable-2.9
, stable-2.10
, stable-2.11
, stable-2.12
, and devel
. In some collections like community.general, I've already started thinning out the test matrix for older Ansible versions, to avoid the CI matrix to grow too much. But growing the matrix gets harder for every stable-2.x
branch that needs to be added.
Also, for community.general and community.network, we have a lot of symlinks to handle the flatmapping; for ansible-base 2.10 and newer we could use meta/runtime.yml instead, but Ansible 2.9 support requires symlinks. While symlinks aren't a problem in the collection artefact, they are a big problem in the Ansible tarball, since Python's setup.py de-duplicates symlinks. Therefore, all modules from these collections are contained twice in the Ansible tarball.
So for both these reasons, it would be nice to eventually get rid of Ansible 2.9 support, and also ansible-base 2.10 support. Unfortunately 2.9 is (inofficially?) a LTS version, so we have to be cautious when removing support for it.
(This is nothing we should and have to do now, i.e. for the new major releases targetted at Ansible 5, but rather for one of the next major releases, i.e. in 6-12 months.)
So, how long do you think we should still support Ansible 2.9 and ansible-base 2.10? And maybe we can come up with generic rules, like "only support the latest three stable-2.x
branches + devel
"? (Which would mean to drop support for stable-2.9 and stable-2.10 for community.general 5.0.0 and community.network 5.0.0 in Spring 2022.)
(Also individual collections can have different stable branch coverages; this would be more like a guideline for community collections which would mostly be followed by community.general and community.network.)