Hi Aaron, Thanks for raising this. Interestingly, I think Nova is dealing with similar questions with respect to drivers, so I'm adding Vish to the thread as well. My feeling is that the decision of whether plugin/driver code is kept in the main repos and reviewed by core devs should probably be made consistently across openstack projects (or at least have clear guidance from the policy board). Below are some initial thoughts I have that provide some background for the discussion.
To date, we have real experience with two plugins, one that can be run entirely with OS components and one that requires proprietary hardware and software to test. I expect moving forward we will have more of both types. Already there is no assumption that core devs test either type of plugins, due to the concerns you've mentioned. All unit testing is done with a basic "FakePlugin". It is possible for plugin developers to easily run those unit tests against their own plugins as well, but plugin developers themselves are responsible for this. Likewise, there is not assumption that core openstack resources will contribute plugin specific documentation, as that is also the responsibility of the plugin developer. Still, I share your concern that the amount of plugin code is growing more quickly than the number of core devs able to review. I don't want core devs so swamped with reviewing plugin code that they can't make progress on the base Quantum platform. One approach would be to just let people commit code to the quantum/plugins sub-directory without review, but I think that is likely to lead to a mess of poorly maintained code in an official openstack repo, which I don't like. Another option, as you suggest, is to have all plugins in separate repos. Splitting things out makes it a bit more complex to even get a basic setup running from a dev perspective, but probably doesn't impact end-users too much, as they will be installing using packages anyway. Splitting out is unlikely to change current testing + documentation procedures, as they are already the responsibility of the plugin "owner". One major reasons people probably want to get their plugins merged is for visibility, so that when people see the set of plugins available, their plugin is on the list. We can probably solve this visibility problem more easily by just providing a public registry that people can add to in order to publicly announce the set of plugins. This would also hopefully address another concern about splitting out the repos, which is how distributions like Ubuntu, Red Hat, Debian, etc. would learn about new plugins they may want to package. One other issue, if we decided to go with a split, would be how we handle code that needs to be shared among a set of plugins. To some degree, this could be handled on an adhoc basis (creating yet more repos), but it definitely adds to complexity. I'd also want to think more about what this means for API extensions. My goal is that while an API extension may be proposed by a particular plugin first, if this extension is designed in a generic way, it would be able to be leveraged by other plugins and (perhaps after some additional tweaks), become part of the standard API. In your thinking, would extensions live in the main code base, or with plugins (or an option for both)? As I said, I think this question is probably broader than just Quantum, though the pain may be the most acute with Quantum, given the small core team and the surging interest in plugins. Would be curious to get input from others on how they see it. Dan On Wed, Feb 15, 2012 at 5:02 AM, Aaron Lee <aaron....@rackspace.com> wrote: > We have several plugins in Quantum currently, and several more waiting for > review. Several plugins ares currently waiting for review, and this problem > is only going to get worse. We don't have enough core devs, who are very > familiar with the underlying systems, to properly evaluate the plugins. I > don't think this problem is going to go away, so we should remove the plugins > from the main Quantum repository and require they be stored on their own. > > The first issue I worry about is Testing. Running the functional tests, and > the plugin itself, requires access to soft and hardware. Some is open source > and available to anyone, while some of these systems are proprietary. We > can't expect the Core devs to have access to all of the proprietary > equipment. If the core devs are not able to fully test the plugin, or even > see the system it interfaces with, they can't be expected to fairly evaluate > the plugin. This would lead to rubber stamping any commits that comes across > Gerrit, and I think that would be bad for the Quantum codebase. A quick > breeze through review does not help the plugin maintainers, its an extra > hurdle without the benefit of review. > > Once the plugins are in Quantum, I'm worried about their maintenance. Keeping > the plugins up to the quality expected of Quantum we will require developers > proficient in the underlying system. If those people fall behind, or leave, > what amount of regression will trigger the removal? We have a lot of changes > planned for the near future, and requiring that every plugin be up to date > will cause delays. It should be the job of the plugin's maintainer to keep > the plugin up to date with Quantum, not the other way around. We can point > out the repo of each plugin, but the plugin authors/maintainers should be > responsible for documentation, maintenance, and compatibility. > > Thanks, > Aaron Lee > -- > Mailing list: https://launchpad.net/~netstack > Post to : netstack@lists.launchpad.net > Unsubscribe : https://launchpad.net/~netstack > More help : https://help.launchpad.net/ListHelp -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dan Wendlandt Nicira Networks: www.nicira.com twitter: danwendlandt ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Mailing list: https://launchpad.net/~netstack Post to : netstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~netstack More help : https://help.launchpad.net/ListHelp