[openstack-dev] [tc] campaign question related to new projects

Zane Bitter zbitter at redhat.com
Mon Apr 23 16:02:14 UTC 2018


On 20/04/18 17:26, Doug Hellmann wrote:
> [This is meant to be one of (I hope) several conversation-provoking
> questions directed at prospective TC members to help the community
> understand their positions before considering how to vote in the
> ongoing election.]

Thanks Doug, I think this is a really helpful question.

> We are discussing adding at least one new project this cycle, and
> the specific case of Adjutant has brought up questions about the
> criteria we use for evaluating new projects when they apply to
> become official.  Although the current system does include some
> well-defined requirements [1], it was also designed to rely on TC
> members to use their judgement in some other areas, to account for
> changing circumstances over the life of the project and to reflect
> the position that governance is not something we can automate away.
> 
> Without letting the conversation devolve too much into a discussion
> of Adjutant's case, please talk a little about how you would evaluate
> a project's application in general.  What sorts of things do you
> consider when deciding whether a project "aligns with the OpenStack
> Mission," for example?
> 
> Doug
> 
> [1] https://governance.openstack.org/tc/reference/new-projects-requirements.html


The first thing to mention is that I take a fairly expansive view of 
what IaaS comprises. (For example, I think a message queue like Zaqar is 
a critical component of an IaaS, which often surprises people, but how 
can an application use its infrastructure as a server without 
notifications about what's going on in the infrastructure? I guess we 
could try to optimise for polling in a thousand different places, but 
it's much simpler to expose events in one place and optimising polling 
of that.) A while back[1] I threw together a non-exhaustive list of the 
kinds of goals I think OpenStack should be working towards:

* Infinite scaling - the ability in principle to scale from zero to an 
arbitrarily large number of users without rewriting your application 
(e.g. if your application can store one file in Swift then there's no 
theoretical limit to how many it can store. c.f. Cinder where at some 
point you'd have to start juggling multiple volumes.)
* Granularity of allocation - pay only for the resources you actually 
use, rather than to allocate a chunk that you may or may not be using 
(so Nova->containers->FaaS, Cinder->Swift, Trove->??? [RIP MagnetoDB], &c.)
* Full control of infrastructure - notwithstanding the above, maintain 
Nova/Cinder/Neutron/Trove/&c. so that legacy applications, highly 
specialised applications, and higher-level services like PaaS can make 
fully customised use of the virtual infrastructure.
* Hardware virtualisation - make anything that might typically be done 
in hardware available in a multi-tenant software-defined environment: 
servers, routers, load balancers, firewalls, video codecs, GPGPUs, FPGAs...
* Built-in reliability - don't require even the smallest apps to have 3 
VMs + a cluster manager to enforce any reliability guarantees; provide 
those guarantees using multi-tenant services that efficiently share 
resources between applications (see also: Infinite scaling, Granularity 
of allocation).
* Application control - (securely) give applications control over their 
own infrastructure, so that no part of the application needs to reside 
outside of the cloud.
* Integration - cloud services that effectively form part of the user's 
application can communicate amongst themselves, where appropriate, 
without the need for client-side glue (see also: Built-in reliability).
* Interoperability - the same applications can be deployed on a variety 
of private and public OpenStack clouds.

I'm definitely not claiming to have captured the full range of 
possibilities there (notably it doesn't attempt to cover e.g. 
deployment-related projects), but at a minimum any project contributing 
to one or more of those points is something I would consider to be 
aligned with OpenStack's mission. (That, of course, is only one of 
several criteria that are considered.)

I would love to see us have a conversation as a community to figure out 
what we all, collectively, think that list should look like and document 
it. Ideally new projects shouldn't have to wait until they've applied to 
join OpenStack to get a sense of whether we believe they're furthering 
our mission or not.

To be clear, although I don't expect it to come up, something like a 
PaaS (think CloudFoundry, or OpenShift) would be *not* be in-scope for 
OpenStack in my view. (We should definitely to encourage them to 
integrate with Keystone anyway though!)

One thing I think the TC needs to be wary of is that at this stage of 
maturity there may be a temptation to engage in a sort of 'regulatory 
arbitrage': to try to land your pet feature wherever it's easiest to get 
it accepted, rather than where it makes the most technical sense. 
Indulging that temptation works against interoperability, which is a 
critical part of our mission. It should be easy enough for the TC to 
spot and reject projects that should just be a feature somewhere else. 
But another danger is projects whose implementations provide a very 
flexible framework (Adjutant is an example, it has a plug-in model that 
can basically make it an API for anything) - they run the risk of 
turning into a catch-all bucket for random features. The solution there 
is clear communication. From the TC perspective I think that should mean 
insisting on an explicitly-defined scope, erring on the side of too 
narrow if necessary - a team can always come back to the TC and 
negotiate an increased scope, but it's almost impossible to narrow the 
scope of an established project.

The Four Opens obviously remain critical, and I think the TC has been 
doing a good job of policing new projects on those. It will be necessary 
to accept single-vendor projects, because in part the purpose of 
bringing projects under TC governance is to reassure potential 
contributors that the project is committed to the Four Opens. (An 
example from my own experience: Heat was accepted into incubation as a 
single-vendor project, and only later blossomed into an extremely 
diverse project. So it can work.) The main thing I will be looking out 
for in those cases is that the project followed the Four Opens *from the 
beginning*. Projects that start from a code dump are much less likely to 
attract other contributors in my view. Open Source is not a verb.

cheers,
Zane.

[1] You can read it in-context here: 
https://review.openstack.org/#/c/401226/2/reference/openstack-vision.rst@34



More information about the OpenStack-dev mailing list