On Wed, Mar 11, 2020 at 8:18 AM Thierry Carrez <thierry@openstack.org> wrote:
Hi all,
I'd like to issue a call for consolidation and simplification for OpenStack development.
[trim]
So I think it's time to generally think about simplifying and consolidating things. It's not as easy as it sounds. Our successful decentralization efforts make it difficult to make the centralized decision to regroup. It's hard to justify time and energy spent to /remove/ things, especially those that we spent time creating in the first place. But we now have too many systems and not enough people, so we need to consolidate and simplify.
Back around Havana, when we had around the same number of active contributors as today, we used to have 36 meetings and 20 teams. Do we really need 180 IRC channels, 76 meetings, 63 project teams (not even counting SIGs)?
I highly doubt we need that much. Part of me wonders about how we record the uses and successes, and also how we broadcast that out. I feel like in us trying to do everything and continue doing everything possible as a community, we've never stopped to ask ourselves why, nor even leave ourselves time to breath and be able to share the story of our successes as well as why we are motivated.
Yes, we all specialized over time, so it's hard to merge for example Oslo + Requirements, or QA + Infrastructure, or Stable + Release Management, or Monasca + Telemetry. We are all overextended so it's hard to learn new tricks or codebases. And yet, while I'm not really sure what the best approach is, I think it's necessary.
Comments, thoughts?
-- Thierry Carrez (ttx)
I suspect some of the divisions in specific focus areas or projects is a place that we likely can't come back from, and that ?might? be a good thing. We have specific projects that have niche or focused use cases that those smaller communities will continue to focus on and support because they are working to solve or support a specific problem space. We also have lots of code, and not everyone can be generalists. Nor can we ask people to try and maintain code that we have no idea if anyone is using or finds that it fills one of their problem spaces. So I think it is important to focus on the projects that are actually in use and have maintainers. I distinctly note "and have maintainers" because we cannot ask people to stretch themselves any more than they already have to support yet another thing, another effort. And ultimately trying to force consolidation is going to be viewed as being asked to give more by contributors. So I do think we as a community need to scale back some of our complexity. Some of the disperse areas of information. But we also need to know where we should be focusing our time and energy, and if our work matters only to ourselves, to our employers, or to the community at large. And I'm sure the immediate thought is that the user survey has this data. I'm not convinced this is the case. The user survey is only a slice of a user-base which maintains a close communication with the community. It gets filled out by those that get the emails, those that see the social media, but users are out there that are not easily reachable via those avenues because they live in different circles. So a few thoughts off the top of my head: * If projects don't have maintainers nor anyone who wishes to be elected as a PTL, the TC should not try and continue to drive the project along by naming a leader of some sort. Those smaller communities can and should coalescence if they are still active through self organization to figure out their next step. * If projects can't coalescence, then we need to consider "maintenance" or some other similar word to indicate inactive. * All non-security releases should stop for the such projects, including no release for the cycle. No horizontal contributor should feel obligated to keep it maintained. * We need to accept that a piece of software in the community may stop working at some point in time for some set of users. This is okay and should actually help bring fixes in that we would not normally receive which becomes an indicator of use, and thus a means to revive! * We need to consolidate our sources of truth. i.e. Sunset and decommission wiki.openstack.org. * We need to learn to trust, and not keep power of the core reviewer. Keeping reviewers to a small select group just hurts projects. Does that mean mistakes may be made? absolutely! Can they be fixed? Most likely and at worst there is revert! Do core reviewers make mistakes too? Definitely! * We need to accept change, and move forward. * We need to abandon the desire for perfection for that blocks forward movement. * We need data to make decisions to move forward, so if we had a simple instrumentation service that allowed operators to post statistics, then that could be amazingly powerful! It would be even better to gamify, but I'm not sure that is entirely possible. For that data/statistics idea, I'm thinking a `<project>-survey` command, which includes a couple questions, and maybe polls some statistical data from the deployment at the time of submission. Phone home sounds worse, but operator invoked functionally that is what I'm thinking on some level. Anyway, I agree we are over extended. I think the only way we can even begin to move away from being over extended is to begin to scale certain things back, but I also feel strongly we have lots of hidden users out there based upon discussions I've had in hallway tracks. Regardless, I hope some of these thoughts and ideas resonate, and nobody decides to get out a flame thrower. Meanwhile, I'll dream of a day when I can +2 nova/virt/ironic code, and cinder folks can +2 ironic/common/cinder code.