On 11/10/2016 6:15 AM, Chris Dent wrote:
On Tue, 8 Nov 2016, Chris Friesen wrote:
That said, I don't know that there's an easy solution to this in nova
due to the fact that it's a distributed system with a central shared
data store. Enhancing a sched filter might require new data, which
means modifying the DB model and the DB migrations, and updating the
InstanceNUMATopology object and tweaking nova-api to request
additional attrs, and it might have implications for upgrade, etc.
The symptoms that you are describing here are pretty much the crux
of the biscuit.
I really hesitate to even respond to this but I feel the need to, but at
the same time feel as though I'm going to regret it, and it won't help
change anyone's mind, and I'll probably get in trouble from the
Foundation or TC or some other group that monitors what PTLs/cores/etc
say in public. But here goes!
As much as I think having additional cores or subsystem maintainers
with +2 but not +W would probably be useful, I don't think it will
do much to fix the fundamental problem -- the crux above -- so the
concerns that people have about the risks will continue, will continue
to be valid and can't just be dismissed.
That's a technology crux. There's also a social crux.
It was very clear in BCN that there is significant disagreement in
the community over the volume of code that nova ought to be accepting.
Even in an ideal world where a lot of the roadblocks that people are
experiencing aren't there, there would be disagreement between at least
two (idealized, not literal) camps: One that says any code which doesn't
break stuff and is vaguely in the domain of what nova is about should be
merged and another that says nova should have a clear and focused
vision and contributions that don't fit that vision should be rejected.
Believe it or not, those of us that say no to things aren't super happy
saying no to people all of the time. It gets pretty soul-crushing after
awhile. However, for those of us that have worked on Nova for several
years and have seen where saying, 'sure, what the hell, this magical
little vendor snowflake can't possibly harm us, right? btw, don't worry
about maintaining this or CI testing it...we'll trust you to do that out
of tree and report/fix those problems 4 years from now' - that creates
an innate hesitation to more and more magical unicorn vendor-specific
changes. Because it's those kinds of things that get in the way of us
being able to make broader necessary changes later, like with the
placement service/scheduler stuff, and capabilities in the API. With so
much random custom use case code, it's really hard to know what changes
will break something else you thought was unrelated.
Also, we have consistently had operators give feedback at summits that
basically say, 'nova is the most boring project in my deployment, and
that's a good thing' - that's about the best compliment we can get:
And for that matter, the OpenStack community has said that
interoperability matters, and as most have seen we've been working on
removing plugin and extension points over the last several releases to
get to that end. Having said that, it's an entirely whole other topic
unto itself and I have mixed feelings about it personally, i.e. if I'm
building a private devops cloud and don't care about
defcore/refstack/interoperability needed for marketing a product, then
what's wrong with me having configuration and extension point freedom
coming out of my ears? That's a valid point, I understand that. I also
understand that we don't test any of that stuff upstream and we break
it, and then get people shouting at us for breaking things that broke
their snowflake configuration.
At the moment both of these cruxes seem to be treated as things that
are too hard to change, or at least too hard discuss.
Chris, I keep hearing this, especially from you. I don't know what needs
to happen to move past this. We talked about this at length at the BCN
summit. We talked about new contributors and ways to help there at the
ATX summit. So it's not like no one is willing to discuss these things -
we obviously have already. But saying things like 'no one is willing to
even discuss this' is really frustrating to continue hearing, and what's
even more frustrating is I get the feeling that if I even mention that,
it's going to somehow justify the point. "See, he said he's tired of
talking about this, which means he doesn't want to talk about it."
On the tech crux some people claim that the decomposition (and the
related boundary hardening) that would lead to safe contracts between
subsystems have already gone as far as they can or taking them
further requires such a huge amount of effort that given resources
and other commitments it can't happen. That smacks of a lack of
imagination and hope.
I also don't agree with this. I think the sentiment at the summit, if
we're talking about the same thing, was that we've done a lot of
boundary hardening already. There is obviously room for improvement -
but to get there, you're going to have to wade through a LOT of custom
code added by vendors in years past and make sure not to break that.
That's totally fine as a goal, but are you personally going to take up
that challenge and start working on it? If not, then I care less about
hearing about it over and over and continuing to talk about this. We
have priorities each release, and we have several cores working on those
priorities, and with the HPE and Mirantis layoffs we have even fewer
dedicated people able to work on some of these bigger sweeping changes -
and those people had the background on what dragons lay in wait when you
take on some of these big systematic changes. So the point is we have to
prioritize, and I put out of tree enablement less of a priority compared
to the other things we need to get done that operators actually care about.
My main point here is, if you see the opportunity and justification for
the work to completely change something, then by all means, work on that
and keep everyone involved. But I'm tired of hearing how unwilling
people in nova, and by people of course I mean the core team, are to
listening to ideas for positive change and then being thrown under the
bus when we don't have all of the time or priority to nurture all of
On the social crux, the impression I got is that people are either
too exhausted, too busy, too angry, or too scared to actually talk
things out and reach a conclusion and instead bitch behind each other's
backs about the lack of agreement and some other core who will either
reject or accept code they shouldn't be. We need to be honest about
this lack of trust if we want to make it better. And we need resolve
the vision of the project, in a concrete fashion.
What's really baffling to me is when I'm in the hallway with you and
Matt Booth and others talking about this stuff face to face in person,
and explaining my side of the issue, and I'm listening to yours, we seem
to all be nodding our heads and agreeing, or at least understanding a
bit better. But then when we get back to the world it's all us vs them
and 'a lot of people are saying nova sucks and they are ready to give up'.
First, the 'speaker of the people' thing gets tiring. We're all working
on the same thing. If people have issues I welcome them to air it out,
but they need to listen to and understand the reply, and try to
understand why we have to say no to things at times, or that we can't
Second, at least from my view, I get the feeling that there are a few
people beating this drum and complaining about not getting enough
attention and we need to stop everything we're doing whenever they say
something and I just have a hard time with that. What I value most in
nova contributors are people that are doing the dirty work, like
triaging and fixing bugs, fixing technical debt, trying to take on the
dirtier issues to help us move forward, and probably most of all - lots
of quality code reviews. At the end of the day quality code reviews are
going to make you core, and that's what's going to move code through the
system. But people would rather complain about not being core, or the
lack of cores, than actually bust their ass to help out and make core.
Until at least one of those cruxes is resolved it's going to be
really hard to make substantial progress and many of the strategies
we try are going to be tactical band-aids.
mdbooth's proposal is somewhat different from some of the other
options because implementing it requires a leap of faith over
both cruxes into what could be a self-reinforcing environment: we will
trust one another because we've said we will, and we will build the
stronger contracts because we need them in order to be able to trust
people, and we will talk about it all (better than we do now) because it
won't work if we don't.
That might work. It could be a mess, but it is better than an
alternative which is feeling increasingly likely: People go elsewhere.
And finally, the hostage taking approach of everyone going elsewhere is
really wearing on me. If developers have a choice of projects to work on
in OpenStack and for whatever reason find it impossible to work in Nova,
then I frankly think they should move on, for the benefit of both parties.
You know other reasons that people are going to go elsewhere? Because
their company took them off OpenStack, or fired them, because they were
working on OpenStack and they decided as a technology it didn't work
well enough for them and they are going to invest resources elsewhere.
That's why I find it a major distraction to be talking about all of the
ideals of how things would work when instead we have a ton of work to
already get done and we're understaffed, and the future is unsure
regardless - so while I'm here I want to get the major changes in that
we've been working on for years as a project, like cells v2, placement,
and moving off nova-network.
There, now I feel equally terrible and relieved. I really don't want to
be anyone's barrier, and I feel great when I'm able to help someone out,
new contributor or not. I don't really know what else to say. I know all
of this probably doesn't mean anything and there will be a massive reply
thread discounting each point and exquisite detail about how I'm wrong -
that's fine, it's what I get for taking the bait to respond in detail to
something like this. But I felt the need to do so.