Last Tuesday, I had the honor of joining an OpenStack scale operators dinner. Foundation executives, Jonathan Bryce and Lauren Sell, were also on the guest list so talk naturally turned to “how can OpenStack better support operators.” Notably, the session was distinctly not OpenStack bashing.
The conversation was positive, enthusiastic and productive, but one thing was clear: the OpenStack default “we’ll fix it in the upstream” answer does not work for this group of operators.
What is upstreaming? A sans nuance answer is that OpenStack drives fixes and changes in the next community release (longer description). The project and community have a tremendous upstream imperative that pervades the culture so deeply that we take it for granted. Have an issue with OpenStack? Submit a patch! Is there any other alternative?
Upstreaming [to trunk] makes perfect sense considering the project vendor structure and governance; however, it is a very frustrating experience for operators. OpenStack does have robust processes to backport fixes and sustain past releases and documentation; yet, the feeling at the table was that they are not sufficiently operator focused.
Operators want fast, incremental and pragmatic corrections to the code and docs they are deploying (which is often two releases back). They want it within the community, not from individual vendors.
There are great reasons for focusing on upstream trunk. It encourages vendors to collaborate and makes it much easier to add and expand the capabilities of the project. Allowing independent activity on past releases creates a forward integration mess and could make upgrades even harder. It will create divergence on APIs and implementation choices.
The risk of having a stable, independently sustained release is that operators have less reason to adopt the latest shiny release. And that is EXACTLY what they are asking for.
Upstreaming is a core value to OpenStack and essential to our collaborative success; however, we need to consider that it is not the right answer to all questions. Discussions at that dinner reinforced that pushing everything to latest trunk creates a significant barrier for OpenStack operators and users.
What are your experiences? Is there a way to balance upstreaming with forking? How can we better serve operators?