[openstack-dev] [Neutron] A big tent home for Neutron backend code
Armando M.
armamig at gmail.com
Thu Apr 23 00:44:29 UTC 2015
On 22 April 2015 at 11:19, Russell Bryant <rbryant at redhat.com> wrote:
> Hello!
>
> A couple of things I've been working on lately are project governance
> issues as a TC member and also implementation of a new virtual
> networking alternative with a Neutron driver. So, naturally I started
> thinking about how the Neutron driver code fits in to OpenStack governance.
>
> There are basically two areas with a lot of movement related to this issue.
>
> 1) Project governance has moved to a "big tent" model [1]. The vast
> majority of projects that used to be in Stackforge are being folded in
> to a larger definition of the OpenStack project. Projects making this
> move meet the following criteria as being "one of us":
Is it sensible to assume that Stackforge is going away entirely at some
point in the future, and we'll have a single namespace - OpenStack?
>
> http://governance.openstack.org/reference/new-projects-requirements.html
>
> Official project teams are tracked in this file along with the git repos
> they are responsible for:
>
>
> http://git.openstack.org/cgit/openstack/governance/tree/reference/projects.yaml
>
> which is also reflected here:
>
> http://governance.openstack.org/reference/projects/
>
> The TC has also been working through defining a system to help
> differentiate efforts by using a set of "tags" [4]. So far, we have
> tags describing the release handling for a repository, as well as a tag
> for team diversity. We've also had a lot of discussion about tags to
> help describe maturity, but that is still a work in progress.
>
>
> 2) In Neutron, some fairly significant good changes are being made to
> help scale the development process. Advanced services were split out
> into their own repos [2]. Most of the plugin and driver code has also
> been split out into repos [3].
>
This is too still a work in progress. A lot has been achieved during the
Kilo timeframe, but more is still to be done, like the 'lib-ification - if
that's even a word' of Neutron [1a], the split of plugins out of the *aas
drivers [2b], and the rest of the core-vendor-decomp (latest status update
is available in [3b])
[1a] https://review.openstack.org/#/c/154736/
[2b] https://review.openstack.org/#/c/174619/
[3b] https://review.openstack.org/#/c/173549/
>
> In terms of project teams, the Neutron team is defined as owning the
> following repos:
>
> http://governance.openstack.org/reference/projects/neutron.html
>
> - openstack/neutron
> - openstack/neutron-fwaas
> - openstack/neutron-lbaas
> - openstack/neutron-vpnaas
> - openstack/neutron-specs
> - openstack/python-neutronclient
>
> The advanced services split is reflected by the fwaas, lbaas, and vpnaas
> repos.
>
> We also have a large set of repositories related to Neutron backend code:
>
> http://git.openstack.org/cgit/?q=stackforge%2Fnetworking
>
> - stackforge/networking-arista
> - stackforge/networking-bagpipe-l2
> - stackforge/networking-bgpvpn
> - stackforge/networking-bigswitch
> - stackforge/networking-brocade
> - stackforge/networking-cisco
> - stackforge/networking-edge-vpn
> - stackforge/networking-hyperv
> - stackforge/networking-ibm
> - stackforge/networking-l2gw
> - stackforge/networking-midonet
> - stackforge/networking-mlnx
> - stackforge/networking-nec
> - stackforge/networking-odl
> - stackforge/networking-ofagent
> - stackforge/networking-ovn
> - stackforge/networking-ovs-dpdk
> - stackforge/networking-plumgrid
> - stackforge/networking-portforwarding
> - stackforge/networking-vsphere
>
> Note that not all of these are equivalent. This is just a list of
> stackforge/networking-*.
>
> In some cases there is a split between code in the Neutron tree and in
> this repo. In those cases, a shim is in the Neutron tree, but most of
> the code is in the external repo. It's also possible to have all of the
> code in the external repo.
>
> There's also a big range of maturity. Some are quite mature and are
> already used in production. networking-ovn as an example is quite new
> and being developed in parallel with OVN in the Open vSwitch project.
>
>
> So, my question is: Where should these repositories live in terms of
> OpenStack governance and project teams?
It's my understanding that StackForge projects are bound to the same
governance model, or am I mistaken?
>
> Here are a few paths I think we could take, along with some of my
> initial thoughts on pros/cons.
>
> a) Adopt these as repositories under the Neutron project team.
>
I fully understand how this is implemented in, can you elaborate? Would
that translate into something like [4a]? The other concern I have is that
the list is bound to change due to the WIP nature of the work we're going
through, and I wouldn't want to freeze it just yet, as we can't.
Would just renaming the existing repos from stackforge/* to openstack/*
suffice? Do we ask people to submit the new ones to the openstack namespace
from now on? Would that slow down their ability to decompose because the
big tent is not there yet?
[4a] https://review.openstack.org/#/c/175954
> In this case, I would see them operating with their own review teams as
> they do today to avoid imposing additional load on the neutron-core or
> neutron-specs-core teams. However, by being a part of the Neutron team,
> the backend team would submit to oversight by the Neutron PTL.
>
Not sure why the PTL would need to be officially appointed of an oversight
capacity, especially because some projects are different than others, so
how would we choose?
>
> There are some other details to work out to ensure expectations are
> clearly set for everyone involved. If this is the path that makes
> sense, we can work through those as a next step.
>
I fear that changing the rules while we play would cause more trouble than
it's worth. I think it's reasonable to converge at some point, but it
sounds like it's early.
>
> Pros:
> + Seems to be the most natural first choice
>
Only on a case by case basis, I don't think that there's a single rule we
can apply here.
>
> Cons:
> - A lot of changes have been made precisely because Neutron has gotten
> so big. A single project team/PTL may not be able to effectively
> coordinate all of the additional work. Maybe the core Neutron project
> would be better off focusing on being a platform, and other project
> teams organize work on backends.
>
To me this is the major sticking point of this approach. I don't think that
the Neutron PTL makes sense for some of these project and I wouldn't want
to cause fractures into what *is* and *is not* Neutron. I'd rather have a
fair playing field for every networking related project.
>
> b) Let each interested group define a new project team for their backend
> code.
>
> So, as an example, the group of people working on Neutron integration
> with OpenDaylight could propose a new project team that would be a
> projects.yaml entry that looks something like:
>
> Neutron-OpenDaylight:
> ptl: Some Person (ircnick)
> service: OpenDaylight Networking
> mission: >
> To implement Neutron support for the OpenDaylight project.
> url: ...
> projects:
> - repo: openstack/networking-odl
>
> Pros:
> + There's no additional load on the Neutron project team and PTL.
>
> Cons:
> - Having all of these efforts organized under a single project team and
> PTL might be better for ensuring some level of collaboration and
> consistency.
>
Some projects can be pretty narrow in scope that I am not sure I see the
need of going fully-fledged here, unless there is a mandate. Furthermore
the PTL might simply be the point of contact rather than one who is leading
a team.
>
> c) A single new project team could be created that is led by a single
> person to coordinate the sub-teams working on each repo. In this
> scenario, I could see the overall collaboration being around ensuring
> consistent approaches to development process, testing, documentation,
> and releases.
>
> That would be something like this (note that the project list would be
> limited to those who actually want to be included in the official
> project team and meet some set of inclusion criteria).
>
> Neutron-Backends:
> ptl: Some Person (ircnick)
> service: Networking Backends
> mission: >
> To implement Neutron backend support for various networking
> technologies.
> url: ...
> projects:
> - openstack/networking-arista
> - openstack/networking-bagpipe-l2
> - openstack/networking-bgpvpn
> - openstack/networking-bigswitch
> - openstack/networking-brocade
> - openstack/networking-cisco
> - openstack/networking-edge-vpn
> - openstack/networking-hyperv
> - openstack/networking-ibm
> - openstack/networking-l2gw
> - openstack/networking-midonet
> - openstack/networking-mlnx
> - openstack/networking-nec
> - openstack/networking-odl
> - openstack/networking-ofagent
> - openstack/networking-ovn
> - openstack/networking-ovs-dpdk
> - openstack/networking-plumgrid
> - openstack/networking-portforwarding
> - openstack/networking-vsphere
>
> Pros:
> + There's no additional load on the Neutron project team and PTL.
> + Avoids a proliferation of new project teams for each Neutron backend.
> + Puts efforts under a single team and PTL to help facilitate
> collaboration and consistency.
>
> Cons:
> - Some might see this as an unnatural split from Neutron.
> - The same sort of oversight and coordination could potentially happen
> with a delegate of the Neutron PTL in the Neutron project team without
> making it separate.
>
Not sensible either, for the reasons you pointed out.
>
> d) I suppose the last option is to declare that none of these repos make
> sense as an OpenStack project. It's hard for me to imagine this making
> sense except for cases where the teams don't want their work to be
> officially included in OpenStack, or they fail to meet our base set of
> project guidelines.
>
>
> What option do you think makes sense? Or is there another option that
> should be considered?
>
Would it make sense to capture these projects as simply 'affiliated', ie.
with a loose relationship to Neutron, because they use/integrate with
Neutron in some form or another (e.g. having 3rd-party, extending-api,
integrating-via-plugin-model, etc)? Then we could simply consider extending
the projects.yaml to capture this new concept (for Neutron or any other
project) once we defined its ontology.
Thoughts?
Thanks,
Armando
>
>
> [1]
> http://www.openstack.org/blog/2015/02/tc-update-project-reform-progress/
> [2]
>
> http://specs.openstack.org/openstack/neutron-specs/specs/kilo/services-split.html
> [3]
>
> http://specs.openstack.org/openstack/neutron-specs/specs/kilo/core-vendor-decomposition.html
> [4] http://governance.openstack.org/reference/tags/
>
> --
> Russell Bryant
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150422/e5f757a1/attachment.html>
More information about the OpenStack-dev
mailing list