[openstack-dev] [Quantum] handling a growing ecosystem
Gary Kotton
gkotton at redhat.com
Wed Nov 7 07:24:00 UTC 2012
On 11/06/2012 06:47 PM, Mark McClain wrote:
> I like the idea of a Quantum ecosystem repo because it provides a
> catalog of available software and fits within the notion that
> OpenStack should have a focused core interface: compute, networking,
> and storage. The ecosystem also promotes a healthy platform layer
> that is built upon the core.
+1
>
> The ecosystem repo should require minimal set of tests: pep8, unit
> tests, minimum coverage threshold, and basic certification test(s).
> The certification tests should check for compliance with the
> service/plugin interface we're developing. For example, a VPN or
> LBaaS module will load and can be inspected for it's capabilities with
> some default set of configuration for the test runner. The
> certification test won't check for functionality because I think
> that's outside the scope of things we can test.
I like the idea of certification. It will certainly be challenging. It
is something that we should definitely discuss more - for example when
and how does the certification take place? What are the criteria for
certification?
>
> The ecosystem solves several current issues:
> - Plugin reviews take time away from core and community bugs/blueprints
> - Plugins/drivers that require physical devices are hard to
> realistically validate.
> - An ecosystem repo places the onus on quality/working code back on
> the vendor/project promoting it.
> - Code bloat within the main repository as vendor push code for
> visibility.
> - Platform projects do not have a visible place to grow around Quantum
> (e.g. DNSaaS).
>
>
> Separate repos would be the ideal setup, but that will take
> significant resources. We could start with a contrib directory within
> Quantum. The contrib directory would have the testing requirements
> from above with the following additional rules:
> - Quantum core code cannot import anything directly from contrib.
> (Imports must be done via optional configuration options).
> - Clearly indicate that contrib projects can be removed between
> releases for failing to maintain compatibility with current release.
> - Each contrib project should have a designated maintainer responsible
> for bug fixes and compatibility. The maintainer (or designate) should
> be present for online Quantum meetings during a release cycle.
> - Only a single core dev is required to approve changes to contrib if
> it is submitted by the maintainer. Otherwise the maintainer must +1
> the change first.
> - License must be Apache 2 with contributors completing OpenStack CLA
> process. This will make it easy for contrib projects to be merged
> into Quantum core if they gain widespread community support.
Sounds good
>
> mark
>
> On Nov 5, 2012, at 3:46 PM, Dan Wendlandt <dan at nicira.com
> <mailto:dan at nicira.com>> wrote:
>
>> Hi everyone,
>>
>> We started discussing this at the last quantum team meeting, but
>> figured it would benefit from a broader audience.
>>
>> There is a lot of interest from networking vendors and some open
>> source project to integrate with OpenStack via Quantum. This is
>> great, as this was one of the key goals of Quantum. The point of
>> this thread is to discuss how we make sure we enable this while
>> avoiding some potential negative side-effects.
>>
>> The primary concerns seem to be:
>>
>> 1) concern that the core dev team will be overwhelmed having to
>> review and potentially fix large amounts of vendor-specific code,
>> taking aware their cycles from other community tasks. The concern is
>> both that this may not be a good use of core dev time, and that the
>> core devs may not be sufficiently familiar with the vendor backend to
>> meaningfully review the code, and may be unable to test the code if
>> they don't have access to the required hardware/software.
>>
>> 2) concern that vendors may contribute code, but not follow up to fix
>> bugs, answer questions on the ML, update code when needed, etc.
>> Basically, bit-rot.
>>
>> These are not new concerns, and to date the Quantum team has had the
>> following policy posted on the wiki (decided on during a team meeting
>> during the Folsom cycle):
>>
>> "Quantum plugins may be open source or proprietary. Some of the open
>> source plugins are maintained in the main Quantum repository
>> (http://www.github.com/openstack/quantum), while others are
>> maintained in their own separate repository. As a project, we
>> encourage plugins to be kept in the main repository for several
>> reasons (a more cohesive developer community, better code sharing
>> across plugins, and more uniform testing of plugins). However, we
>> must also make sure that any plugins in the main repository remain
>> well maintained. As a result, any plugin that is in the main repo
>> must have at least one active member of the quantum core developer
>> team willing to maintain it. This may be achieved by having an
>> existing core dev agree to maintain a plugin, or by having one of the
>> developers of the plugin become a member of the core developer team."
>>
>> Essentially, the policy is to strongly encourage people to add their
>> plugins to the main repo, but to make sure that they also provide
>> value to the community in return. If they do not go down this path,
>> we still allow them to "advertise" their plugin on the Quantum wiki
>> page, though it is hosted in an external repo, and the core team does
>> not try to answer questions about it on the mailing list.
>>
>> In terms of current status, the OVS, Cisco, Linux Bridge, NVP, and
>> NEC plugins all have core devs backing them up. The Metaplugin is
>> maintained by someone who is not a core dev, but is very active in
>> the community in many areas. The Ryu plugin is actively maintained,
>> though the maintainers contributions are mostly focused on Ryu
>> changes, and often has trouble getting core reviews.
>>
>> So to date, I think we've been reasonable successfully with the
>> current policy. I'm writing this email more because I want to get
>> ahead of potential issues that will pop-up in grizzly, giving the
>> exploding interest in Quantum core plugins as well as plugins/drivers
>> for the LBaaS side of things. For example, there are several plugins
>> already proposed (e.g., Brocade plugin, Ruijie General Operation
>> System, Juniper, bigswitch/floodlight, hyper-v, etc) as well as many
>> LB vendors (riverbed, radware, F5, vmware, etc.) looking to integrate.
>>
>> I think the existing policy will result in us turning away some such
>> contributions, which is sub-optimal. However, changing the policy to
>> allow all plugins might swamp core developers, prevent them from
>> focusing on improving the platform as a while (and ultimately making
>> it much less attractive to be a core developer, which is VERY bad).
>>
>> If we're not happy with the current state of things, one option is
>> to keep the existing policy, but also establish a 'quantum-ecosystem'
>> repo, that let's people contribute their code to openstack quantum,
>> though without having to go through the standard review process
>> (instead, we'd probably have a simple model where someone is the
>> maintainer for a particular plugin/driver and can solicit reviews
>> from everyone, but is still able to commit regardless). This let's
>> vendors say that they have contributed the code to quantum, without
>> burdening the core team. This repo could have automated tests that
>> pull in the primary quantum code as a dependency and run the same
>> unit tests. We'd have to decide whether failures in these unit tests
>> are just warnings, or if they would actually block commits. Distros
>> would decide whether to include certain plugins/drivers based on demand.
>>
>> A variation on this model could be keep all such code in the main
>> Quantum repo, but enforcing different review criteria based on
>> whether it is scoped to a single plugin or affects the whole
>> community. This is not all that different from what happens today in
>> practice, in that usually the core maintainer makes sure there was a
>> thorough review from someone familiar with the plugin, then gets a
>> second core review that focuses more on general python coding
>> guidelines.
>>
>> I'm sure there are other ideas on this as well, so feel free to offer
>> your own. Thanks for reading :)
>>
>> Dan
>>
>>
>>
>> --
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Dan Wendlandt
>> Nicira, Inc: www.nicira.com <http://www.nicira.com/>
>> twitter: danwendlandt
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> <mailto:OpenStack-dev at lists.openstack.org>
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> 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/20121107/f1f2a00f/attachment.html>
More information about the OpenStack-dev
mailing list