So, there’s many reasons.
Some of them are just UX related, such as providing a good end-user design rather than one that is more aimed at admins and people who have implementation knowledge of their cloud. Things like the naming of os_image and having that be able to do nova or glance commands as appropriate, or security groups targeting either nova or neutron as appropriate are good examples.
That could be worked around though. The REAL reason is that in order to get the existing modules up to being broadly usable, there’s just a ton of work. Since the current modules are 100% untested and also don’t have a detailed usage guide, and since breaking backwards compatibility in a project like ansible is pretty evil, it seems to me that a clean break with a deprecation of the old modules and produce new ones with clear and understood semantics as well as verifiable integration tests would be a good choice.
I did a compatible pass:
https://github.com/ansible/ansible/pull/8924
(which also, btw, pulled in your cinder changes) - but the amount of compat code to support something that was of dubious operational quality in the first place - but which needs to be assumed is in use somewhere - it just too high of a cost to me.
There are also things, like some of the default values, that I have zero interest in maintaining compatibility with. Defaulting auth_url to http://127.0.0.1:35357/v2.0/, for instance, means that it’s quite impossible to do what you really want to do - which is to give the user an early warning if they have produced a crazy attempt at a config - and the number of people for whom that value is valid are, hopefully, far outweighed by the number of people for whom it is not. So while it makes it easier for someone hacking on a devstack install - or a product install - it makes it harder to do parameter validation for actual end users.
Finally, with config processing improvements like os-client-config being adopted by python-openstackclient and others upstream, having custom local config reading and auth processing logic that is different from and doesn’t consume similar artifacts is nothing but confusing. That the old system was less flexible AND more verbose as well means that attempting to maintain config semantics with the nova.ini files while adding it AND maintaining the compatibility with the set of currently expected default values becomes un-intelligible.
This plan is largely dependent on the recent work to be able to mark modules as deprecated - without that, I agree that having two sets of active modules will be very confusing.