We are thinking of certifying community.mysql which will result in its availability on Automation Hub.
What the certification will bring to the community:
Some additional testing and manual checks that will ensure the collection will run on Ansible Automation Platform: even if most of users don’t run it there it’s addition testing which is always good, isn’t it?
Red Hat allocates time of Ansible content team to ensure everything is well tested which will result in better coverage, additional checks, etc. Red Hat’s testing approach is understandably very thorough and good IMO.
If there are critical bugs or security vulnerabilities, Red Hat will allocate resources to fix them ASAP
The collection must be renamed to ansible.mysql or there must be a fork serving as downstream
IMPORTANT: the community maintainers will keep their permissions in the projects whether it’s renamed or if community.mysql stay as upstream.
So I personally don’t see any downsides here. A couple of examples of certified collections: vmware.vmware, ansible.windows, ansible.posix
I see two options here:
Option 1: Two collections exist: community.mysql (upstream), ansible.mysql (downstream)
We fork ansible.mysql (will be downstream) from community.mysql (will be upstream).
In ansible.mysql,
We’ll put it clear in README and contributor docs that contributors / users should go to community.mysql to open issues/PRs.
We’ll backport stuff from community.mysql and release periodically with some delay (we’ll develop
We certify and release ansbile.mysql on AH.
If maintenance upstream → downstream get burdensome, we’ll deprecate community.mysql and move the development fully to ansible.mysql (it’ll work same as in ansbile.windows, ansible.posix, so there’ll be no upstream-downstream).
Pros of this approach:
No need to replace community.mysql with ansible.mysql in the Ansible community package immediately by adding all those redirects and deprecations
ansible.mysql is more stable as it’ll be released with some delay
Potential split brain; potential merge conflicts later
Option 2: Rename community.mysql to ansible.mysql: it’s known process already done in collections many times)
We fork ansible.mysql from community.mysql
We put deprecations and redirects in community.mysql to refer users to run ansible.mysql instead. The work will continue in ansible.mysql. No changes to community.mysql since then. Users who run community.mysql will actually run ansible.mysql transperantly.
Then, in 1 year or so (after two major ansible package releases), community.mysql will be removed from the Ansible community package and possibly archived. The work will continue in ansible.mysql.
I guess there’s also option 3, which some collections use: the repo is for both collections, if you clone it you get community.mysql, and there is some rename tooling that produces ansible.mysql out of it. This is more comparable to option 1, I guess, since it’s also a PITA (I just wanted to list it for completeness.)
Renaming is probably the easiest. Though there are also other options on how to rename it: you could rename the whole repository instead of forking, and then fork it back to the old name. That way all issues are kept with the new repo, and there’s less breakage for everything already happening in the repo. (Like issue and PR numbers keep working - URLs obviously do not, but ones in the current repo can be changed.)
It would be even better if there wouldn’t be a need to fork to the old collection name, and simply release the old collection from some branches, but I don’t think Zuul can handle that. (That would also drastically simplify backports, since they happen in the same repository, so you can simply use the patchback bot.)
@felixfontein do i understand this approach correctly that:
We rename the repo in place to ansible.mysql
We fork community.mysql back out of it
In ansible.mysql: We change community.mysql → ansible.mysql in docs, comments, URLs, and everywhere.
In ansible.mysql: We release it on Galaxy.
In community.mysql: We add deprecations/redirects to the new one as we usually do when renaming collections that are part of the ansible community package.
In community.mysql: we release it, mark as read-only, etc.
Yes, sounds good to me. The new community.mysql release should be a new major release, though.
Also I’d wait with archiving the repo for some time, so that backports and bugfix releases for the current major community.mysql release can still be done.
(The downside of having a separate repo is that these backports are more work. Also the automatic redirect of the community.mysql to the ansible.mysql repo no longer works, and all existing URLs to issues and PRs in the repo are now broken. That’s why I think it would be better if the old collection could live on in a special branch of the new repo, but that likely requires some modifications to the Zuul release process.)
Can both community.mysql and ansible.mysql be installed on the Ansible controller and if both are does it result in one or the other being used depending on the prefix used by a role?