I operate many Openstack installation. I’m deeply unhappy by it internals and ‘devstack syndrome’, but I had worked on ‘pre-openstack clouds’ some time ago, and I knew, that Openstack is way above all other opensource alternatives. Main feature of Openstack which is crucial and mandatory in cloud environment: multi-tenancy. Openstack has it at it’s core; all other projects I saw, lack essential functionality or have breaches in multi-tenant model.
I would dare to say that Openstack helped to narrow gap between operators and developers due to the Python usage. I routinely patch it for our needs without asking programmers to do anything. This is great. At the same time it has too much horrific code with AbstractClass, `super(super())` usage, etc. Occasionally I want to change something but I have no idea how to unroll all those ‘abstract classes’ dependencies within module, or, worse, between two pieces of code linked by MQ.
My second concern is short support cycle. Developers think that software lives from ‘new cycle till release, and a almost half of year after that’, but for operators it looks different: release date, deploying new code in 4 month, 2 month later it’s dead. Too fast. And any bugreports for non-security problems (aka it does not work in some configuration or causing outages) are mostly ignored for ‘supported’ version and are fixed only in ‘head’. At the same time there is no way to have fast updates because there is an endless shuffle for configuration option names, deprecation, ‘microversion hell’, etc.