[tc] Questions for TC Candidates
Zane Bitter
zbitter at redhat.com
Tue Feb 26 02:01:13 UTC 2019
On 20/02/19 9:46 AM, Chris Dent wrote:
>
> It's the Campaigning slot of the TC election process, where members
> of the community (including the candidates) are encouraged to ask
> the candidates questions and witness some debate. I have some
> questions.
>
> First off, I'd like to thank all the candidates for running and
> being willing to commit some of their time. I'd also like to that
> group as a whole for being large enough to force an election. A
> representative body that is not the result of an election would not
> be very representing nor have much of a mandate.
+1
> The questions follow. Don't feel obliged to answer all of these. The
> point here is to inspire some conversation that flows to many
> places. I hope other people will ask in the areas I've chosen to
> skip. If you have a lot to say, it might make sense to create a
> different message for each response. Beware, you might be judged on
> your email etiquette and attention to good email technique!
>
> * How do you account for the low number of candidates? Do you
> consider this a problem? Why or why not?
In retrospect, it appears the tradition of waiting until the last
possible minute had a lot to do with it. But I definitely had some other
thoughts the day before nominations closed.
Looking at some of the folks who either decided not to run or who
delayed their decision to run, I see a lot of standard, non-alarming
reasons. Someone who is organising a wedding, someone who just changed
jobs, someone who has a big internal project to work on at $DAYJOB, &c.
However, those things have always happened. The pool of candidates has
shrunk to the point where folks who are borderline on having enough time
to run are now the difference between having an election and having
unfilled seats. That's in part due to the lower number of folks employed
to work on OpenStack, and to the extra workload being shouldered by
those left.
This is a problem for OpenStack, for at least the reason you mentioned
above: TC members don't have much of a mandate if they didn't actually
have an election.
Shrinking the TC is one option for dealing with this, and one we should
probably at least investigate. But we could also work harder on
developing future leaders of the project and getting them involved in
the work of the TC (I guess the Stewardship WG used to be a more formal
expression of this) before they eventually win seats on the TC - in much
the same way that projects should hope to turn contributors into core
reviewers.
> * Compare and contrast the role of the TC now to 4 years ago. If you
> weren't around 4 years ago, comment on the changes you've seen
> over the time you have been around. In either case: What do you
> think the TC role should be now?
In some ways it's very different and in some ways depressingly familiar :)
Four years ago, the TC was focused on managing explosive growth of
contributions (particularly in the form of new projects). The TC of that
era did a lot of work putting governance into place that would make it
possible to deal with the flood of new projects. That involved the TC
removing itself from the technical review of new projects, in part
because it had failed to give at least one project *any answer at all*
on two successive graduation applications due to a lack of time on the
part of TC members to investigate what it was for.
Fast-forwarding to the present, the flood has slowed to a trickle and
the governance structures are mature, but the TC is still in many ways
very focused on 'governance' to the exclusion of helping to get the
technical community to work in concert.
> * What, to you, is the single most important thing the OpenStack
> community needs to do to ensure that packagers, deployers, and
> hobbyist users of OpenStack are willing to consistently upstream
> their fixes and have a positive experience when they do? What is
> the TC's role in helping make that "important thing" happen?
Since you're forcing me to pick only one thing, I am going to say
'education'.
The economics of participating in an open source project are just not
intuitive to anyone who isn't steeped in this stuff, and most people are
not. Most companies are vulnerable to acting especially clueless,
because the folks making the decisions are not the same folks who would
even have the chance to work in the community. Even most of the
companies working on OpenStack in the early days were pretty bad at it,
though almost all improved with practice.
Forking a rapidly-evolving project is one of the most expensive mistakes
you'll ever make, and if people understood that I really don't believe
they'd do it because the time-to-market gains or whatever are just not
worth it, and soon evaporate when you're looking at the time-to-market
for v2 of your now-unmaintainable product.
I feel like it's part of OpenStack's role in the world to explain the
open source way - both the benefits it confers and the responsibilities
it entails - to folks who are receptive but who were not closely
associated enough with projects like Linux to have learned the ins and outs.
(If I get a second answer, it'd be the one I brought up at the Forum in
Berlin: prioritising giving immediate feedback to any and all
contributions from those folks.
http://lists.openstack.org/pipermail/openstack-discuss/2018-November/000052.html)
> * If you had a magic wand and could inspire and make a single
> sweeping architectural or software change across the services,
> what would it be? For now, ignore legacy or upgrade concerns.
Oh wow you went there.
If I had to pick one and I had a magic wand, I would replace the current
backend infrastructure (comprising MariaDB, RabbitMQ, and at least
theoretically etcd3) with a single component, with requirements such as
the following:
- Efficiently scalable to some defined level
- First-class support for messaging patterns (e.g. pub-sub)
- Reliable to a passes-jepsen-or-better standard
- Well-defined semantics for resolving conflicts/partitions/&c.
- Support for large numbers of geographically distributed replicas (for
edge use cases)
- To the extent that any of this needs to be implemented in the
OpenStack community, it only has to be implemented once
In response to the inevitable complaints:
- Yes, MySQL can be scaled using sharding. But we have 50+ projects and
only 2 implementations of sharding. And to underscore just how difficult
that is, both were in the same project.
- Yes, RabbitMQ supports messaging patterns, but it's not something
we've built our services around (e.g. Kubernetes is entirely event
driven, but in OpenStack very little data escapes the compute node
without querying for it) - in fact we mostly use it (inappropriately)
for RPC. And it's a separate service from the database, so you can't
e.g. have a transaction that includes sending a message.
- RabbitMQ failed Jepsen spectacularly
(https://aphyr.com/posts/315-call-me-maybe-rabbitmq) - if you can manage
to keep it running at all. It's a constant source of complaints from
OpenStack operators. Galera also failed BTW
(https://aphyr.com/posts/327-call-me-maybe-mariadb-galera-cluster).
- As an OpenStack developer, I can't even find any documentation to tell
me what transaction isolation level I should expect from the DB. Not
only is it not documented anywhere, but AFAICT until very recently we
officially supported two *different* levels and at least tacitly
encouraged operators to effectively choose for themselves which to use.
How can I, as an OpenStack developer, even hope to write correct code
under those circumstances? This is not theoretical; many times I've been
in discussions that ended with us just guessing what the database would
do and hoping for the best. I went searching fruitlessly for docs yet
again because I literally spent half of Wednesday trying to implement
something without having a race condition, and whether it was possible
or not (spoiler: it's not) depended on the transaction isolation level.
- Something something Edge.
- See the first point above.
I'm not wedded to any particular choice, but I believe such things
exist. I'm particularly intrigued by FoundationDB, although extremely
wary of their non-open development model for the core.
Anyhow, with that in place I would wave my magic wand and build a
messaging library and then a user-facing API that used it. Then I'd have
everything in OpenStack work together as an event-driven system, with
(select) events potentially routed out to userspace and back in again if
the user so chose.
I don't think there's a path to this happening, but I think it's a very
valuable exercise to imagine how things could be and think about what
we're missing out on.
> What role should the TC have in inspiring and driving such
> changes?
I don't think it should be the TC's job to necessarily come up with such
ideas. Great ideas might come from anywhere. And I don't think it can be
the TC's job to tell people what ideas to implement, because that's not
how open source works.
Plagiarising myself (from
https://review.openstack.org/#/c/622400/1/reference/role-of-the-tc.rst@73):
"The ideas we need are out there in the community. The TC's job is to
ensure that there's space for them to be heard, to amplify the best
ones, to build consensus, to ensure that decisions get made when
consensus is not possible (i.e. we don't default to paralysis when
reasonable people disagree), and to be electorally accountable for
getting it wrong."
> * What can the TC do to make sure that the community (in its many
> dimensions) is informed of and engaged in the discussions and
> decisions of the TC?
The TC is extremely open in how it conducts it's business. So the
challenge, as always is in filtering the firehose.
I think the weekly TC update email from the chair is a big improvement,
because it's significantly easier to engage with than trying to follow
everything.
> * How do you counter people who assert the TC is not relevant?
> (Presumably you think it is, otherwise you would not have run. If
> you don't, why did you run?)
Trick question! I wouldn't try to counter them. If somebody believes
that the TC is not relevant *to them* then they're almost certainly
right. I would be interested in listening to what things _would_ be
relevant to them and exploring whether those things should be done,
whether they should be done by the TC, or whether the TC should delegate
them to some other group. But let's remember that there will always be
people who are just heads-down in their own project getting stuff done
and never needing to worry about the TC, and that's fine. OpenStack can
accommodate an ~unlimited number of those folks. But it can't prosper
with only those folks. We need people who keep the lines of
communication open between projects and shape the system as a whole. If
the TC can't be relevant to that latter group, then we really have a
problem.
cheers,
Zane.
More information about the openstack-discuss
mailing list