If you’ve been following my DefCore posts, then you already know that DefCore is an OpenStack Foundation Board managed process “that sets base requirements by defining 1) capabilities, 2) code and 3) must-pass tests for all OpenStack™ products. This definition uses community resources and involvement to drive interoperability by creating the minimum standards for products labeled OpenStack™.”
In this post, I’m going to be very specific about what we think “community resources and involvement” entails.
The draft process flow chart was provided to the Board at our OSCON meeting without additional review. It below boils down to a few key points:
We are using the documents in the Gerrit review process to ensure that we work within the community processes.
Going forward, we want to rely on the technical leadership to create, cluster and describe capabilities. DefCore bootstrapped this process for Havana. Further, Capabilities are defined by tests in Tempest so test coverage gaps (like Keystone v2) translate into Core gaps.
We are investing in data driven and community involved feedback (via Refstack) to engage the largest possible base for core decisions.
There is a “safety valve” for vendors to deal with test scenarios that are difficult to recreate in the field.
The Board is responsible for approving the final artifacts based on the recommendations. By having a transparent process, community input is expected in advance of that approval.
The process is time sensitive. There’s a need for the Board to produce Core definition in a timely way after each release and then feed that into the next one. Ideally, the definitions will be approved at the Board meeting immediately following the release.
Process shows how the key components: designated sections and capabilities start from the previous release’s version and the DefCore committee manages the update process. Community input is a vital part of the cycle. This is especially true for identifying actual use of the capabilities through the Refstack data collection site.
Blue is for Board activities
Yellow is or user/vendor community activities
Green is for technical community activities
White is for process artifacts
This process is very much in draft form and any input or discussion is welcome! I expect DefCore to take up formal review of the process in October.
The OpenStack Foundation Board has been having a broadening conservation about this topic. Feeling left out? Please don’t be! Now is the time to start getting involved: we had to start very narrowly focused to avoid having the discussion continue to go in circles. As we’ve expanding the dialog, we have incorporated significant feedback to drive consensus.
No matter where I go, people are passionate about the subject of OpenStack Core.
Overall, there is confusion of scope covered by “what is core” because people bring in their perspective from public, private solution, ecosystem or internal deployment objectives. In discussion, everyone sees that we have to deal with issues around the OpenStack mark and projects first, but they are impatient to get into the deep issues. Personally, we can get consensus on core and will always have a degree of healthy tension between user types.
The following are my notes, not my opinions. I strive to faithfully represent a wide range of positions here. Clarifications, comments and feedback are welcome!
Reference/Alternate Implementation (not plug-in): Not using “plug-ins” to describe the idea that OpenStack projects should have a shared API with required code and clearly specified areas where code is replaceable. It is the Technical Committee (TC) that makes these decisions. The most meaningful language around this point is to say that OpenStack will have an open reference implementation with allowable alternate implementations.
Alternate implementations are useful: We want to ensure upstream contribution and collaboration on the code base. Reference implementations ensure that there’s a reason to keep open source OpenStack strong. Alternate Implementations are important to innovation.
Small vs. Large Core: This is an ongoing debate about if OpenStack should have a lot of projects as part of core. We don’t have an answer but people feel like we’re heading in a direction that resolves this question.
Everyone likes tests: We’re heading towards a definition of core that relies heavily on tests. Everyone expresses concerns that this will place a lot of stress on Tempest (or another framework) and that needs to be addressed as we move forward.
Monolithic vs. Granular Trademark: We did not discuss if vendors will be able to claim OpenStack trademarks on subcomponents of the whole. This is related to core but wide considered secondary.
API vs. implementation tension: We accept that OpenStack will lead with implementation. There’s no official policy that “we are not a standards body” but we may also have to state that tests are not a specification. There’s a danger that tests will be considered more than they are. What are they? “They are an implementation and a source of information. They are not the definition.” We expect to have a working model that drives the API not vice versa.
Brouhaha about EC2 APIs: It’s not clear if defining core helps address the OpenStack API discussion. I hope it will but have not tested it.
Usability as core: I had many people insist that usability and ease of use should be as requirements for core because it supports adoption. Our current positions do not have any statements to support this view.
Toxic neighbors: We have not discussed if use of the mark and criteria could be limited by what else you put in your product. Are there implementation options that we’d consider toxic and automatically violate the mark? Right now, the positions are worded that if you pass then you play even if you otherwise stink.
Which tests are required? It appears that we’re moving towards using must-pass tests to define the core. Moving towards tests determining core, we want actual field data to drive which tests are required. That will allow actual user experience to shape which tests are important rather than having it be a theoretical decision. There’s some interest in asking the User Committee (UC) to recommend which tests are required. This would be an added responsibility for the UC and needs more discussion.
Need visualization: With 12 positions so far, it’s getting hard to keep it all together. I’ve taken on an action item to create a diagram that shows which statements apply to which projects against the roles of ownership.
I’ve had some great discussions about core and am looking forward to many more. I hope these notes help bring you up to speed. As always, comments and discussion are welcome!